更新时间:2023-09-18 GMT+08:00

健康检查概述

全球加速实例通过健康检查判断终端节点的运行状态,健康检查机制提高了业务的可靠性和可用性,避免了异常终端节点对服务的影响。

您可以为全球加速实例的终端节点组开启健康检查。开启健康检查后,全球加速实例会定期向终端节点发送请求以测试其运行状态,当某个终端节点健康检查出现异常时,全球加速实例将停止向该终端节点分发流量请求,而是分发到健康检查正常的其他终端节点;当健康检查异常的终端节点恢复正常后,全球加速实例会将其自动恢复到请求服务中,承载业务流量。

目前全球加速实例支持TCP协议的健康检查。

TCP协议健康检查

TCP协议的健康检查是基于网络层探测,通过发起三次握手来获取终端节点的状态信息。

检查流程如图1所示。

图1 TCP健康检查

TCP健康检查的机制如下:

  1. 全球加速实例根据健康检查配置,向终端节点发送TCP SYN报文。
  2. 终端节点收到请求报文后,如果相应的端口已经被正常监听,则会返回SYN+ACK报文。
    • 如果在超时时间内没有收到终端节点的SYN+ACK报文,则判定健康检查失败。然后发送RST报文给终端节点中断TCP连接。
    • 如果在超时时间内收到了SYN+ACK报文,则发送ACK给终端节点,判定健康检查成功,并发送RST报文给终端节点中断TCP连接。

健康检查时间窗

健康检查机制的引入,有效提高了业务服务的可用性。但是,为了避免频繁的健康检查失败引起的切换对系统可用性的冲击,健康检查只有连续多次检查成功或失败后,才会进行状态切换。

健康检查时间窗由以下三个因素决定:

  • 检查间隔:每隔多久进行一次健康检查。
  • 超时时间:等待服务器返回健康检查的时间。
  • 最大重试次数:健康检查连续成功的次数。

系统必须连续3次检查失败,才会判定终端节点健康检查失败,与“最大重试次数”设置的数值无关。

健康检查时间窗的计算方法如下:

  • 健康检查成功时间窗 = 超时时间*最大重试次数+检查间隔*(最大重试次数-1)
  • 健康检查失败时间窗 = 超时时间*3+检查间隔*(3-1)

举例说明:

检查间隔设置为4s,超时时间设置为2s。

健康检查检测到终端节点从正常到失败状态,健康检查失败时间窗 = 超时时间*3+检查间隔*(3-1)= 2*3+4*(3-1)=14s。