配置健康检查

您可以通过控制台或API配置监听的健康检查。关于健康检查的原理参考负载均衡健康检查原理。其它健康检查问题,参考健康检查常见问题

说明
负载均衡监听为TCP协议时,健康检查方式可选TCP或HTTP。

在负载均衡实例的详情页面,单击监听 > 添加监听,在添加监听的第二步可进行健康检查配置。



健康检查参数说明

在配置健康检查时,建议您使用默认值。

健康检查配置 说明
域名和检查路径(仅限HTTP方式的健康检查) HTTP健康检查默认由负载均衡系统通过后端ECS内网IP地址向该服务器应用配置的缺省首页发起http head请求。

如果您用来进行健康检查的页面并不是应用服务器的缺省首页,需要指定具体的检查路径。

因为有些应用服务器会对请求中的host字段做校验,即要求请求头中必须存在host字段。如果在健康检查中配置了域名,则SLB会将域名配置到host字段中去,反之,如果没有配置域名,SLB则不会在请求中附带host字段,因此健康检查请求就会被服务器拒绝,可能导致健康检查失败。综上原因,如果您的应用服务器需要校验请求的host字段校,那么则需要配置相关的域名,确保健康检查正常工作。

正常状态码(仅限HTTP方式的健康检查) 选择健康检查正常的HTTP状态码。

默认值为http_2xx和http_3xx。

检查端口 健康检查服务访问后端时的探测端口。

默认值为配置监听时指定的后端端口。

说明
如果该监听配置了虚拟服务器组或主备服务器组,且组内的ECS实例的端口都不相同,此时不需要配置检查端口。负载均衡系统会使用各自ECS的后端端口进行健康检查。
响应超时时间 接收来自运行状况检查的响应需要等待的时间。如果后端ECS在指定的时间内没有正确响应,则判定为健康检查失败。

范围是1-300秒,UDP监听的默认值为10秒,HTTP/HTTPS/TCP监听的默认值为5秒。

健康检查间隔 进行健康检查的时间间隔。

LVS集群内所有节点,都会独立、并行地遵循该属性对后端ECS进行健康检查。由于各LVS节点的检查时间并不同步,所以,如果从后端某一ECS上进行单独统计,会发现来自负载均衡的健康检查请求在时间上并不会遵循上述时间间隔。

范围是1-50秒,UDP监听的默认值为5秒,HTTP/HTTPS/TCP监听的默认值为2秒。

不健康阈值 同一LVS节点服务器针对同一ECS服务器,从成功到失败的连续健康检查失败次数。

可选值2-10,默认为3次。

健康阈值 同一LVS节点服务器针对同一ECS服务器,从失败到成功的连续健康检查成功次数。

可选值 2-10,默认为3次。

健康检查请求和健康检查返回结果 为UDP监听配置健康检查时,您可以在健康检查请求中输入请求的内容(比如youraccountID),在健康检查返回结果中输入预期的返回结果(比如slb123)。

同时在后端服务器的应用逻辑中加入相应的健康检查应答逻辑,如收到youraccountID的请求时,回应slb123。

此时,当负载均衡收到后端服务器发来的正确响应时,则认为健康检查成功,否则认为健康检查失败。此方式能最大程度确保健康检查的可靠性。

健康检查响应超时和健康检查间隔示例

以如下健康检查配置为例:

  • 响应超时时间:5秒
  • 健康检查间隔:2秒
  • 健康阈值:3次
  • 不健康阈值:3次

健康检查失败时间窗=响应超时时间×不健康阈值+检查间隔x(不健康阈值-1),即5x3+2x(3-1)=19s。

从健康状态到不健康状态的检查过程如下图所示:



健康检查成功时间窗= (健康检查成功响应时间x健康阈值)+检查间隔x(健康阈值-1),即(1x3)+2x(3-1)=7s。

说明
健康检查成功响应时间是一次健康检查请求从发出到响应的时间。当采用TCP方式健康检查时,由于仅探测端口是否存活,因此该时间非常短,几乎可以忽略不计。当采用HTTP方式健康检查时,该时间取决于应用服务器的性能和负载,但通常都在秒级以内。

从不健康状态到健康的状态检查过程如下图所示(假设服务器响应健康检查请求需要耗时1s):



HTTP健康检查中域名的设置

当使用HTTP方式进行健康检查时,可以设置健康检查的域名,但并非强制选项。因为有些应用服务器会对请求中的host字段做校验,即要求请求头中必须存在host字段。如果在健康检查中配置了域名,则SLB会将域名配置到host字段中去,反之,如果没有配置域名,SLB则不会在请求中附带host字段,因此健康检查请求就会被服务器拒绝,可能导致健康检查失败。综上原因,如果您的应用服务器需要校验请求的host字段校,那么则需要配置相关的域名,确保健康检查正常工作。