健康检查概述
简介
健康检查用于判断后端服务器状态是否正常,避免将请求转发至状态异常的后端服务器,保障服务的可用性。
CLB支持以监听器为维度配置健康检查。创建监听器时,可以配置健康检查。 注意
健康检查会占用一定的网络资源,建议结合业务情况,通过降低健康检查频率、增大健康检查间隔等方式,来降低对业务的影响。但为了保障业务的持续可用,不建议关闭健康检查,关闭健康检查可能会导致请求被转发给异常的后端服务器。
按健康检查使用的协议进行分类,如下表所示:
- 以上文健康检查时间表格中的示例值,展现健康检查过程。
TCP监听器使用TCP协议对后端服务器组进行健康检查。
TCP监听器的检查原理如下:
- CLB实例根据监听器的健康检查配置,向后端服务器的内网IP+端口发送TCP SYN数据包。
- 后端服务器收到请求后,如果相应端口正在正常监听,则会返回SYN+ACK数据包。
- 如果在响应超时时间之内,CLB实例没有收到后端服务器返回的数据包,则认为服务无响应,判定健康检查失败;并向后端服务器发送RST数据包中断TCP连接。
- 如果在响应超时时间之内,CLB实例成功收到后端服务器返回的数据包,则认为服务正常运行,判定健康检查成功,而后向后端服务器发送RST数据包中断TCP连接。
说明
正常的TCP三次握手,CLB实例在收到后端服务器返回的SYN+ACK数据包后,会进一步发送ACK数据包,而后进行数据传输,但进行健康检查时会立即发送RST数据包中断TCP连接。
该实现机制可能会导致后端服务器认为相关TCP连接异常退出,并抛出错误信息,如Connection reset by peer。后端服务器若已开启真实客户端 IP 获取,可通过识别健康检查源 IP,过滤屏蔽健康检查引发的连接异常报错。
UDP监听器使用UDP协议对后端服务器组进行健康检查。根据是否指定健康检查字符实现原理略有不同,如下图所示。
- 未指定健康检查字符时,UDP监听的检查原理如下:
- CLB实例向后端服务器的内网IP地址发送ICMP报文。
- CLB实例向后端服务器的(内网IP地址+健康检查端口)发送UDP探测报文。
- 如果在响应超时时间之内,ICMP报文发送成功且CLB实例未收到后端服务器返回的类似port unreachable的报错信息,则判定健康检查成功;否则,判定健康检查失败。
- CLB实例根据用户指定的字符向后端服务器的(内网IP地址+健康检查端口)发送UDP探测报文。
- 如果在响应超时时间之内,CLB实例收到后端服务器返回的与预期一致的信息,则判定健康检查成功;否则,判定健康检查失败。
说明
- UDP监听器健康检查可能会出现健康检查状态与服务真实状态不符的情况。
- 当后端服务器操作系统为Linux时,其防ICMP攻击保护机制,使后端服务器在大并发场景下发送ICMP的速度被限制,异常的后端服务器无法及时返回报错信息,导致监听器判断健康检查成功。
HTTP/HTTPS监听器统一使用HTTP协议对后端服务器组进行健康检查。
原理如下:
- CLB实例根据监听的健康检查配置,向后端服务器的【内网IP+端口+URL】或【域名+URL】,发送HTTP GET/HEAD请求。
- 后端服务器收到请求后,根据相应服务的运行情况,返回HTTP状态码。
- 如果在响应超时时间之内,CLB实例没有收到后端服务器返回的信息,则认为服务无响应,判定健康检查失败。
- 如果在响应超时时间之内,CLB实例成功接收到后端服务器返回的信息,则将返回的HTTP状态码与配置的状态码进行比对。如果匹配则判定健康检查成功。
最近更新时间:2026.05.08 10:54:14