
# 健康检查概述
全球加速实例通过健康检查判断终端节点的运行状态，健康检查机制提高了业务的可靠性和可用性，避免了异常终端节点对服务的影响。
您可以为全球加速实例的终端节点组开启健康检查。开启健康检查后，全球加速实例会定期向终端节点发送请求以测试其运行状态，当某个终端节点健康检查出现异常时，全球加速实例将停止向该终端节点分发流量请求，而是分发到健康检查正常的其他终端节点；当健康检查异常的终端节点恢复正常后，全球加速实例会将其自动恢复到请求服务中，承载业务流量。
目前全球加速实例支持TCP协议和UDP协议的健康检查。
#### TCP协议健康检查
TCP协议的健康检查是基于网络层探测，通过发起三次握手来获取终端节点的状态信息。
检查流程如[图1]所示。
图1TCP健康检查   
![](https://support.huaweicloud.com/usermanual-ga/zh-cn_image_0000002498673732.png "点击放大")
TCP健康检查的机制如下：
1. 全球加速实例根据健康检查配置，向终端节点发送TCP SYN报文。
2. 终端节点收到请求报文后，如果相应的端口已经被正常监听，则会返回SYN+ACK报文。
   - 如果在超时时间内没有收到终端节点的SYN+ACK报文，则判定健康检查失败。然后发送RST报文给终端节点中断TCP连接。
   
   - 如果在超时时间内收到了SYN+ACK报文，则发送ACK给终端节点，判定健康检查成功，并发送RST报文给终端节点中断TCP连接。
    
 
#### UDP协议健康检查
UDP协议健康检查，通过发送UDP探测报文获取终端节点的状态信息。
检查流程如[图2]所示。
图2UDP健康检查   
![](https://support.huaweicloud.com/usermanual-ga/zh-cn_image_0000002530513677.png "点击放大")
UDP健康检查机制如下：
全球加速实例根据健康检查配置，向终端节点发送ICMP Echo Request报文。
- 如果在超时时间内没有收到ICMP Echo Reply报文，则判定健康检查失败。
- 如果在超时时间内收到了ICMP Echo Reply报文，则向终端节点发送UDP探测报文。
  - 如果在超时时间内没有收到终端节点返回的ICMP Port Unreachable报文，则判定健康检查成功。
  
  - 如果在超时时间内收到终端节点返回的ICMP Port Unreachable报文，则判定健康检查失败。
   
 
#### 健康检查时间窗
健康检查机制的引入，有效提高了业务服务的可用性。但是，为了避免频繁的健康检查失败引起的切换对系统可用性的冲击，健康检查只有连续多次检查成功或失败后，才会进行状态切换。
健康检查时间窗由以下三个因素决定：
- 检查间隔：每隔多久进行一次健康检查。
- 超时时间：等待服务器返回健康检查的时间。
- 最大重试次数：健康检查连续成功的次数。
系统必须连续3次检查失败，才会判定终端节点健康检查失败，与"最大重试次数"设置的数值无关。
健康检查时间窗的计算方法如下：
- 健康检查成功时间窗 = 超时时间\*最大重试次数+检查间隔\*(最大重试次数-1)
- 健康检查失败时间窗 = 超时时间\*3+检查间隔\*(3-1)
举例说明：
检查间隔设置为4s，超时时间设置为2s。
健康检查检测到终端节点从正常到失败状态，健康检查失败时间窗 = 超时时间\*3+检查间隔\*(3-1)= 2\*3+4\*(3-1)=14s。
