健康检查概述

最近更新时间:2024-11-07 16:35:32

我的收藏
网关负载均衡通过健康检查来判断后端服务的可用性,避免后端服务异常影响前端业务,从而提高业务整体可用性。
开启健康检查后,无论后端服务器权重是多少(包括权重为0),都会进行健康检查。您可在目标组详细信息中的目标组内的实例页签,查看后端服务器的“健康状态”。
当后端服务器实例被判定为异常后,网关负载均衡实例自动将新的请求转发给其他正常的后端服务器,而不会转发到异常的后端服务器。
当异常实例恢复正常后,网关负载均衡将其恢复至负载均衡服务中,重新转发请求给此实例。
若健康检查探测到所有后端服务都有异常时,请求将会被转发给所有后端服务器。
关闭健康检查,网关负载均衡将向所有后端服务器转发流量(包括异常的后端服务器),因此强烈建议您打开健康检查,允许负载均衡帮您自动检查并移除异常的后端服务器。

健康检查状态

根据健康检查探测情况,后端服务器的健康检查状态如下所示:
状态
说明
是否转发流量
探测中
当目标组未绑定任何 GWLB 实例时,目标组内的实例(后端服务器)的状态均为探测中。
新绑定的后端服务器在检查间隔 × 健康阈值时间内的状态。例如,检查间隔2s,健康阈值3次,则是6s内的状态。
GWLB 不向处于“探测中”的后端服务转发流量。
健康
后端服务正常
GWLB 向“健康”的后端服务转发流量。
异常
后端服务异常
GWLB 不向“异常”的后端服务转发流量。
如果 GWLB 探测到所有后端服务都不健康,将会激活全死全活逻辑,即请求将会转发给所有权重非 0 的后端服务。
已关闭
关闭健康检查
GWLB 向所有后端服务转发流量。

TCP 健康检查

TCP 健康检查,通过 SYN 包即发起 TCP 三次握手来获取后端服务器的状态信息。 TCP 健康检查机制如下:



1. 网关负载均衡向后端服务器(GWLB 实例的 VIP 地址 + 健康检查端口)发送 SYN 连接请求报文。
2. 后端服务器收到 SYN 请求报文后,若相应端口处于正常监听状态,则会返回 SYN + ACK 响应报文。
3. 若在响应超时时间内,网关负载均衡收到后端服务器返回的 SYN+ACK 响应报文,则表示服务运行正常,判定健康检查成功,并向后端服务器发送 RST 复位报文中断 TCP 连接。
4. 若在响应超时时间内,网关负载均衡未收到后端服务器返回的 SYN+ACK 响应报文,则表示服务运行异常,判定健康检查失败,并向后端服务器发送 RST 复位报文中断 TCP 连接。

PING 健康检查

若您选择了 PING 探测方式,则只是用 ICMP ECHO 报文进行探测。



健康检查机制如下:
1. 负载均衡向后端服务器的内网 IP 地址发起Ping命令;
2. Ping成功,则表示服务正常,判定健康检查成功;
3. Ping失败,则表示服务异常,判定健康检查失败;
注意:
健康检查依赖 ICMP 协议,需要后端服务器开放回复 ICMP 包(支持 Ping)。

健康检查时间窗

负载均衡的健康检查机制有效提高了业务的可用性。为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有在健康检查时间窗内连续多次检查成功或失败后,才会进行健康或异常的状态切换。健康检查时间窗由以下因素决定:
健康检查配置
说明
默认值
响应超时
健康检查响应的最大超时时间。
如果后端服务器在超时时间内没有正确响应,则判定为健康检查异常。
可配置范围:2秒 - 30秒。
2秒
检测间隔
负载均衡进行健康检查的时间间隔。
可配置范围:2秒 - 300秒。
5秒
不健康阈值
如果连续 n 次(n 为填写的数值)收到的健康检查结果失败,则识别为不健康,控制台显示为失败
可配置范围:2次 - 10次。
3次
健康阈值
如果连续 n 次(n 为填写的数值)收到的健康检查结果为成功,则识别为健康,控制台显示为成功
可配置范围:2次 - 10次。
3次
健康检查时间窗的计算方法如下:
健康检查失败时间窗 = 响应超时时间 × 不健康阈值 + 检查间隔 ×(不健康阈值 - 1) 下图以健康检查响应超时时间为2s,检查间隔为5s,不健康阈值为3次为例,健康检查失败时间窗 = 5 x(3-1)= 10s。下图以健康检查响应超时时间为2s,检查间隔为5s,不健康阈值为3次为例,健康检查失败时间窗 = 2 x 3 + 5 x(3-1)= 16s。


健康检查成功时间窗 = 健康检查成功响应时间 × 健康阈值 + 检查间隔 ×(健康阈值 - 1) 下图以健康检查成功响应时间为1s,检查间隔为5s,健康阈值为3次为例,健康检查成功时间窗 = 1 x 3 + 5 x(3-1)= 13s。



健康检查探测标识

在 GWLB 开启健康检查后,后端服务器除接收正常的业务请求外,还会接收到健康检查探测请求。健康检查探测请求的源 IP 是 GWLB 的 VIP。

相关文档