健康检查概述
负载均衡器通过健康检查来判断后端服务器的可用性。当检测到后端服务出现异常时,会自动隔离该后端服务,并将请求转发给其他健康的后端服务,实现服务的高可用性。当异常的后端服务器恢复正常运行后,负载均衡器会将其自动恢复到负载均衡服务中,承载业务流量。
健康检查方式
健康检查方式 | 检查机制 | 适用监听器类型 |
---|---|---|
TCP | 1. LB 节点根据健康检查配置,向后端服务器(IP+健康检查端口)发送 TCP SYN 报文。 2. 后端服务器收到请求后,如果相应端口正在正常监听,则会返回 SYN+ACK 数据包。 3. 如果在超时时间之内,LB 节点没有收到后端服务器返回的数据包,则认为服务无响应,判定健康检查失败。 4. 如果在超时时间之内,节点服务器成功收到后端服务器返回的数据包,则认为服务正常运行,判定健康检查成功。 |
四层(TCP/SSL)和七层(HTTP/HTTPS)监听器 |
HTTP | 1. LB 节点根据健康检查配置,向后端服务器(IP+端口+检查路径)发送 HTTP GET 请求(可指定 URL 及 HOST)。 2. 后端服务器收到请求后,根据服务的情况返回相应的 HTTP 状态码。 3. 如果 LB 节点在响应超时时间内收到了后端服务器的响应,HTTP 状态码为 200,则认为健康检查成功。 4. 如果 LB 节点在响应超时时间内没有收到后端服务器的响应,则判定健康检查失败。 |
四层(TCP/SSL)和七层(HTTP/HTTPS)监听器 |
ICMP | 1. LB 节点根据健康检查配置,向后端服务器发送 ICMP Echo Request 报文。 2. 如果在超时时间内没有收到 ICMP Echo Reply 报文,则判定健康检查失败。 3. 如果在超时时间内收到了 ICMP Echo Reply 报文,则判定健康检查成功。 |
四层(UDP)监听器 |
UDP | 1. LB节点根据健康检查配置,向后端服务器发送ICMP Echo Request报文。 2. 如果在超时时间内没有收到 ICMP Echo Reply 报文,则判定健康检查失败。 3. 如果在超时时间内收到了 ICMP Echo Reply 报文,则向后端服务器发送 UDP 探测报文。 4. 如果在超时时间内没有收到后端服务器返回的 ICMP Port Unreachable 报文,则判定健康检查成功。否则,判定健康检查失败。 说明 对于监听器为 UDP 端口组,且健康检查为 UDP 时,健康检查只会检测端口组的第一个端口。 |
四层(UDP)监听器 |
健康检查选项
-
检查间隔:每隔多久进行一次健康检查,单位为秒,取值范围为 2 ~ 60
-
超时时间:等待健康检查请求返回的时间,返回超时将会被判定为一次检查失败,单位为秒,取值范围为 5 ~ 300
-
不健康阈值:健康检查连续失败的次数,达到阈值后端服务将被屏蔽,取值范围为 2 ~ 10
-
健康阈值:健康检查连续成功的次数,达到阈值后端服务将被恢复,取值范围为 2 ~ 10
后端健康状态
根据健康检查的结果,后端服务器的健康状态包含以下三种:
-
活跃:表示健康检查正常。
-
不可用:表示健康检查失败。
-
异常:处于健康和不健康的中间转换状态,一般持续时间很短,与您配置的 “健康检查选项” 相关。