负载均衡器会定期向后端云主机发送请求以测试其运行状态,这些测试称为健康检查。通过健康检查来判断后端云主机是否可用。负载均衡器如果判断后端云主机健康检查异常,就不会将流量分发到异常后端云主机,而是分发到健康检查正常的后端云主机,从而提高了业务的可靠性。当异常的后端云主机恢复正常运行后,负载均衡器会将其自动恢复到负载均衡服务中,承载业务流量。
如果您的业务对负载比较敏感,过于频繁的健康检查报文可能会对您的正常业务产生影响。您可以根据实际的业务情况,通过增大健康检查间隔,或者将七层健康检查改为四层健康检查等方式来降低对业务的影响。如果您的业务系统自身有健康检查机制,也可以关闭负载均衡器的健康检查,但是为了保障业务的持续可用,不建议这样做。
对于四层监听器,健康检查适用的版本是HTTP 1.1;对于七层监听器,共享型负载均衡健康检查适用的版本是HTTP 1.1,独享型适用HTTP 1.0。
TCP健康检查的机制如下:
- ELB节点根据健康检查配置,向后端云主机(IP+健康检查端口)发送TCP SYN报文。
- 后端云主机收到请求报文后,如果相应的端口已经被正常监听,则会返回SYN+ACK报文。
- 如果在超时时间内没有收到后端云主机的SYN+ACK报文,则判定健康检查失败。然后发送RST报文给后端云主机中断TCP连接。
- 如果在超时时间内收到了SYN+ACK报文,则发送ACK给后端云主机,判定健康检查成功,并发送RST报文给后端云主机中断TCP连接。
注意正常的TCP三次握手后,会进行数据传输,但是在健康检查时会发送RST中断建立的TCP连接。该实现方式可能会导致后端云主机中的应用认为TCP连接异常退出,并打印错误信息,如“Connection reset by peer”。解决方案如下:
采用HTTP方式进行健康检查。
后端云主机忽略健康检查的连接错误。