# 健康检查

健康检查可判断后端服务器是否正常，对于异常的后端服务器，将其从后端服务器池中移除，客户端请求将会在其他服务器之间进行分发。对于处于异常状态的服务器恢复正常时，会恢复至后端服务器池中。

## 不同类型VServer支持的健康检查方式

|类型|监听协议|支持健康检查方式|
|---|---|---|
|请求代理    | HTTP、HTTPS   |HTTP检查、端口检查    |
| 请求代理   |TCP             |端口检查  |
|报文转发   |TCP       | 端口检查         |
|报文转发   |UDP       | Ping探测、端口检查、UDP检查         |

## 不同健康检查适用场景

总的来说，健康检查方式可以分为两类：检查端口存活和检查服务存活。

检查端口存活：端口检查、Ping探测。

检查服务存活：HTTP检查、UDP检查。


## 不同健康检查方式详述

### 端口检查 

每个可用区内部署专用服务器探测后端节点的IP+端口是否正常。探测频率为2s，连续三次探测失败后端服务器状态异常，连续三次探测正常，则后端服务器状态正常。注意：数据更新有6s延迟，故健康检查状态或有6s延迟。

所有协议均支持端口检查。但检测状态略有不同：HTTP、HTTPS以及TCP的请求代理模式的端口检查是用TCP进行探测。而TCP的报文转发模式及UDP协议则是使用选择的四层协议做端口探测。

### HTTP检查

通过HTTP HEAD请求检查后端服务器上的应用是否可用。要求后端服务器支持HEAD请求。

用户使用HTTP健康检查，需要配置HTTP检查路径（如果有必要的话，也可以配置HTTP的检查域名，一般不需要填写），两者拼接组成了HTTP检查的URL，对此URL发起HTTP HEAD请求，请求响应码为2xx或3xx则认为后端服务器正常。健康检查探测周期为2s，连续3次探测失败后端节点变更为不健康，连续两次正常变更为健康。

HTTP检查路径，最多为227个字符，直接填写域名或IP地址后的相对路径文件。可以选择首页、出现异常概率较小的页面、专门为健康检查准备的空文件（HTTP HEAD请求可以获得200的响应码即可），选择首页可能会加大服务器压力，不建议选择首页作为HTTP健康检查的域名和路径。

HTTP检查域名，不建议填写"http:"或"https:"，直接填写域名或IP地址即可。支持主域名、二级域名等多级域名。

HTTP检查支持的协议:HTTP协议、HTTPS协议（七层服务）。

### UDP检查

按照健康检查配置，健康检查服务每2s向服务节点发送UDP请求报文，若能在发出请求后2s内收到预定的UDP响应报文，认为服务节点响应成功。

健康检查成功：连续三次响应成功。

健康检查失败：连续三次响应失败。

如某服务节点现在状态为“健康”，则仅当连续三次服务节点响应失败才会变更节点状态为“失效”。

```
注意：UDP检查时，为避免服务节点错误响应请求报文，服务节点不能绑定0.0.0.0/0。
```
