负载均衡通过健康检查来判断后端服务器的业务可用性。开启健康检查功能后,当某台后端服务器健康检查出现异常时,负载均衡会自动将新的请求分发到其他健康检查正常的后端服务器上;而当该后端服务器恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中进行流量转发。健康检查机制提高了用户业务整体可用性,避免了局部后端服务器异常对总体服务的影响,是保证业务高可用的重点要素。
配置健康检查前,建议您先了解CLB健康检查工作原理。
配置健康检查
您可以在添加监听时配置健康检查,通常情况下使用默认的健康检查配置即可。
在顶部菜单栏,选择实例所属的地域。
在实例管理页面,找到目标实例,单击实例ID。
在实例详情页,单击监听页签,单击添加监听或在目标监听操作列单击修改监听配置。
根据配置向导完成监听配置,直至进入健康检查配置向导页面,健康检查默认开启,单击高级配置右侧的修改,完成以下健康检查配置。
健康检查配置
说明
健康检查协议
选择健康检查协议类型。监听为TCP协议时,健康检查协议可选TCP或HTTP协议。监听为UDP协议时,健康检查协议可选TCP、UDP或HTTP协议。监听为HTTP/HTTPS协议时,健康检查协议可选HTTP协议。
TCP模式的健康检查是基于网络层探测,通过发送SYN握手报文来检测服务器端口是否存活。
UDP模式的健康检查通过UDP报文探测来获取状态信息。
HTTP模式的健康检查是通过发送HEAD或GET请求模拟浏览器的访问行为来检查服务器应用是否健康。
健康检查方法
(仅HTTP健康检查协议支持)
七层监听(HTTP/HTTPS)健康检查支持HEAD和GET方法,默认采用HEAD方法。
说明如果您的后端应用服务器不支持HEAD方法或HEAD方法被禁用,则可能会出现健康检查失败,此时可以使用GET方法来进行健康检查。
使用GET方法时,如果Response长度超过8K,会被截断,但不会影响健康检查结果的判定。
健康检查端口
健康检查服务访问后端时的探测端口。默认使用后端服务器的端口进行健康检查。
说明如果该监听配置的后端服务器组内的后端服务器的端口都不相同,此时不需要配置检查端口。负载均衡系统会使用各自的后端服务器端口进行健康检查。
健康检查路径
(仅HTTP健康检查协议支持)
HTTP健康检查默认由负载均衡系统向该服务器应用配置的缺省首页发起HTTP请求。
如果您用来进行健康检查的页面并不是应用服务器的缺省首页,需要指定具体的检查路径。
建议对静态页面进行检查。
健康检查域名(仅HTTP健康检查协议支持)
如果在健康检查中配置了健康检查域名,则SLB会将域名配置到请求头host字段中,反之,如果没有配置健康检查域名,SLB则不会在请求中附带host字段。
部分应用服务器会对请求中的host字段做校验,即要求请求头中必须存在host字段。如果健康检查域名未配置,健康检查请求头中无host字段,则请求会被服务器拒绝,可能导致健康检查失败。因此,如果您的应用服务器需要校验请求的host字段,则需要配置健康检查域名,确保健康检查正常工作。
正常状态码
(仅HTTP健康检查协议支持)
选择健康检查正常的HTTP状态码。
默认值为http_2xx和http_3xx。
健康检查响应超时时间
每次健康检查响应的最大超时时间。
如果后端服务器在指定的时间内没有正确响应,则判定为健康检查失败。
健康检查间隔时间
进行健康检查的时间间隔。
负载均衡集群内所有节点,都会独立、并行地遵循该属性对后端服务器进行健康检查。由于各节点的检查时间并不同步,所以,如果从后端某一服务器上进行单独统计,会发现来自负载均衡的健康检查请求在时间上并不会遵循上述时间间隔。
健康检查健康阈值
云服务器从失败到成功的连续健康检查成功次数。
健康检查不健康阈值
云服务器从成功到失败的连续健康检查失败次数。
健康检查请求和健康检查返回结果(仅UDP健康检查协议支持)
为UDP监听配置健康检查时,您可以在健康检查请求中输入请求的内容(例如youraccountID),在健康检查返回结果中输入预期的返回结果(例如slb123)。
同时在后端服务器的应用逻辑中加入相应的健康检查应答逻辑,如收到youraccountID的请求时,回应slb123。
此时,当负载均衡收到后端服务器发来的正确响应时,则认为健康检查成功,否则认为健康检查失败。此方式能最大程度确保UDP健康检查的可靠性。
单击下一步直至监听配置完成。
查看健康检查状态
在顶部菜单栏,选择实例所属的地域。
在实例管理页面,找到目标实例,单击实例ID。
在实例详情页,单击监听页签,查看监听的健康检查状态。
健康检查主要包括以下状态:
初始化:表示健康检查后端服务器列表初始化中。
正常:表示不存在异常状态的后端服务器。
异常:表示存在异常状态的后端服务器。
未打开:表示健康检查未开启。
单击对应监听后的异常或者初始化,可以查看监听健康检查为异常/初始化的监听/转发策略、服务器组、云服务器/端口、健康状态和异常原因。
健康检查探测
健康检查探测是根据负载均衡监听中的健康检查配置生成探测脚本,通过ECS云助手在您的ECS实例上执行脚本,获取健康探测结果,用于在您配置后端服务器后提前探测后端服务器的健康状态。
目前不支持对转发策略中的后端服务器进行探测。
由于健康检查探测和实际健康检查上报采用了不同的链路,所以最终的结果可能不完全一致,探测为用户提供健康检查配置上的建议,而健康检查以配置完成后实际结果为准。
健康检查探测前提条件
确保您已授权RAM的
AliyunSLBHealthDiagnoseRole
权限策略,以允许阿里云传统型负载均衡服务访问您的ECS服务。后端服务器ECS需要同时满足以下条件:
网络类型是专有网络(Virtual Private Cloud,简称VPC)。
已安装Linux系统和云助手。如何安装云助手,请参见安装云助手Agent。
实例处于running状态,且系统默认Shell为bash。
监听已开启健康检查并且后端服务器组中已经添加ECS实例。
健康检查探测操作步骤
在顶部菜单栏,选择实例所属的地域。
在实例管理页面,找到目标实例,单击实例ID。
在实例详情页,单击监听页签,单击添加监听或在目标监听操作列单击修改监听配置。
根据配置向导完成监听配置,直至进入健康检查配置向导页面。
单击高级配置右侧的健康检查探测。
首次使用时,需单击立即前往开通,在弹出的云资源访问授权页面,单击同意授权授权RAM。确保您已授权RAM访问,系统会创建一个健康诊断角色AliyunSLBHealthDiagnoseRole,授权后CLB将使用此角色来访问后端服务器ECS。
在健康检查探测页面,单击目标后端服务器操作列下的开始探测。
负载均衡支持同时选择5个ECS实例进行批量探测。如果ECS数量过大,请分批进行探测。
单击确定开始诊断。诊断完成后控制台将展示诊断结果。
目前监听支持的诊断项如下:
监听类型
健康检查端口状态
iptables配置
rpfilter配置
HTTP探测响应
UDP探测
TCP
✔
✔
✔
✔
-
UDP
✔
✔
✔
-
✔
HTTP
✔
✔
✔
✔
-
HTTPS
✔
✔
✔
✔
-
关闭健康检查
如果您的业务对负载敏感性高,高频率的健康检查探测可能会对正常业务访问造成影响。您可以结合业务情况,通过降低健康检查频率、增大健康检查间隔、七层检查修改为四层检查等方式,来降低对业务的影响。但为了保障业务的持续可用,不建议关闭健康检查。
您可以关闭健康检查功能,但关闭健康检查后,当后端某个ECS出现异常时,CLB还是会把请求转发到该异常的ECS上,造成部分业务不可访问。所以建议一般情况下不要关闭健康检查。
在顶部菜单栏,选择实例所属的地域。
在实例管理页面,找到目标实例,单击实例ID。
在实例详情页,单击监听页签,单击添加监听或在目标监听操作列单击修改监听配置。
根据配置向导完成监听配置,直至进入健康检查配置向导页面。
关闭健康检查开关,单击下一步并提交确认直至完成。
相关文档
如果您不了解CLB健康检查机制,您可参考CLB健康检查工作原理。
如果您遇到CLB健康检查相关问题,您可参考CLB健康检查FAQ进行问题定位处理。
您可通过CLB提供的健康检查日志功能,分析服务器健康检查日志数据,详情可参考存储和下载健康检查日志。