负载均衡中健康检测

背景与目的
在现代计算和应用架构中,负载均衡器扮演着关键角色,它们确保请求均匀分布到多个服务器上,以提高整体系统的可用性和可靠性,后端服务器可能会因为各种原因(如硬件故障、软件崩溃或网络问题)而无法正常工作,负载均衡器需要一种机制来定期检查后端服务器的健康状态,这就是健康检测的作用。
健康检测的目的
提高业务可用性:通过定期检测后端服务器的状态,确保只有健康的服务器才会被分配流量,从而提高业务的整体可用性和用户体验。
自动恢复:当某台后端服务器出现异常时,负载均衡器可以自动将新的请求分发到其他健康检查正常的后端服务器上;而当该后端服务器恢复正常运行时,负载均衡器会将其自动恢复到负载均衡服务中进行流量转发。
防止故障蔓延:避免局部后端服务器异常对总体服务的影响,确保服务的连续性和稳定性。
健康检查的类型

1、HTTP/HTTPS 健康检查
机制:通过发送HTTP或HTTPS请求到后端服务器,并根据返回的状态码来判断服务器是否健康,适用于提供HTTP服务的应用。
过程:
负载均衡器向后端服务器的内网IP+健康检查端口+检查路径发送HTTP HEAD请求(包含设置的域名)。
后端服务器收到请求后,根据相应服务的运行情况,返回HTTP状态码。
如果在响应超时时间内,负载均衡器没有收到后端服务器返回的信息,则认为服务无响应,判定健康检查失败。
如果在响应超时时间内,负载均衡器成功接收到后端服务器返回的信息,则将该返回信息与配置的状态码进行比对,如果匹配则判定健康检查成功,反之则判定健康检查失败。

2、TCP 健康检查
机制:通过尝试建立TCP连接来检查后端服务的健康状态,如果能够成功建立TCP连接,则认为服务是健康的,适用于不提供HTTP服务的应用,如数据库服务。
过程:
负载均衡器向后端服务器的内网IP+健康检查端口发送TCP SYN数据包。
后端服务器收到请求后,如果相应端口正在正常监听,则会返回SYN+ACK数据包。
如果在响应超时时间内,负载均衡器没有收到后端服务器返回的数据包,则认为服务无响应,判定健康检查失败,并向后端服务器发送RST数据包中断TCP连接。
如果在响应超时时间内,负载均衡器成功收到后端服务器返回的数据包,则认为服务正常运行,判定健康检查成功,而后向后端服务器发送RST数据包中断TCP连接。
3、UDP 健康检查
机制:通过UDP报文探测来获取状态信息,由于UDP协议是无连接的,健康检查可能存在服务真实状态与健康检查不一致的问题。
过程:
负载均衡器向后端服务器的内网IP+健康检查端口发送UDP报文。
如果后端服务器相应端口未正常监听,则系统会返回类似port XX unreachable的ICMP报错信息。
如果在响应超时时间内,负载均衡器收到了后端服务器返回的上述错误信息,则认为服务异常,判定健康检查失败。
如果在响应超时时间内,负载均衡器没有收到后端服务器返回的任何信息,则认为服务正常,判定健康检查成功。
4、自定义脚本检查
机制:允许使用自定义脚本来进行更复杂的健康检查逻辑,提供了最大的灵活性。
过程:
用户编写自定义脚本,并将其上传到负载均衡器。
负载均衡器按照设定的频率执行自定义脚本。
根据脚本的执行结果和输出,判断后端服务器的健康状态。
健康检查的具体过程
1、配置健康检查参数
检查目标:设置要检测的后端服务器或服务的地址和端口。
检查频率:配置健康检查的频率,即多长时间发送一次检查请求,这需要根据服务器的性能和业务需求来合理设置,以避免过度消耗资源或延迟监测。
响应超时时间:设置健康检查请求的超时时间,即等待服务器响应的最大时间,适当的超时时间设置可以避免因暂时的网络波动或服务器压力导致的误判。
失败阈值:定义健康检查的失败阈值,即连续检查失败多少次后将服务器标记为不可用状态,这个参数防止了因为偶尔的检查失败而将实际上健康的服务器移除流量之列。
成功阈值:设置健康检查的成功阈值,即连续检查成功多少次后将服务器标记为可用状态。
2、发送健康检查请求
根据配置的检查类型和参数,负载均衡器会定期向后端服务器发送健康检查请求,这些请求可以是HTTP/HTTPS GET或HEAD请求、TCP SYN数据包、UDP报文或执行自定义脚本。
后端服务器接收到请求后,会根据自身的运行情况返回相应的响应。
负载均衡器根据后端服务器的响应内容和状态码来判断其健康状态。
3、评估健康检查结果
如果后端服务器在设定的响应超时时间内返回了预期的响应内容和状态码,则判定健康检查成功。
如果后端服务器未能在设定的响应超时时间内返回预期的响应内容和状态码,则判定健康检查失败。
当失败次数达到设定的失败阈值时,负载均衡器将该后端服务器标记为不可用状态,并停止向其分发流量。
当连续成功次数达到设定的成功阈值时,负载均衡器将该后端服务器重新标记为可用状态,并开始向其分发流量。
4、处理健康检查失败的情况
当后端服务器被判定为异常后,负载均衡器会自动将新的请求转发给其他正常的后端服务器,而不会转发到异常的后端服务器。
负载均衡器会继续对该异常服务器进行健康检查,如果该服务器恢复正常,则将其自动恢复到负载均衡服务中,重新转发请求给此实例。
若健康检查探测到所有后端服务都有异常时,请求将会被转发给所有后端服务器(权重非0)。
5、关闭健康检查的影响
如果关闭健康检查功能,负载均衡器将向所有后端服务器转发流量(包括异常的后端服务器),因此建议强烈不建议关闭健康检查功能以保证服务的稳定性和可用性。
负载均衡中的健康检测是确保业务高可用性和稳定性的重要手段,通过定期检测后端服务器的健康状态并根据检测结果动态调整流量分发策略负载均衡器能够有效避免因局部后端服务器异常而导致的整体服务中断从而提升用户体验和业务连续性。
以上内容就是解答有关“负载均衡中健康检测”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复