免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
问题描述
SLB产品的健康检查用于探测您的后端ECS实例是否处于正常工作状态,当健康检查出现异常时,通常说明您的后端ECS实例出现了异常,但也可能是您的健康检查配置不正确导致,本文主要介绍七层(HTTP/HTTPS)健康检查异常的排查步骤。
问题原因
首次配置健康检查出现异常的主要原因是健康检查配置问题,可以通过以下两类问题进行检查。
配置成功后健康检查出现异常的主要原因是后端ECS实例出现问题,可以通过以下两类问题进行检查。
解决方案
首次配置健康检查出现异常
健康检查参数设置错误
- 登录负载均衡控制台,单击目标SLB实例的ID,然后单击监听,再单击修改监听配置。
- 在配置监听页面单击下一步,再次单击下一步,检查负载均衡健康检查参数设置是否正常,建议按照默认提供的健康检查参数进行设置,详情请参见配置健康检查。
监听端口问题
- 登录后端ECS实例,确认后端ECS实例上没有对SLB地址段进行过任何形式的屏蔽,包括Iptables或其他任何第三方安全策略软件。因为SLB通过内部保留地址段中的IP地址与后端ECS实例通信,如被屏蔽则会导致健康检查异常,SLB将无法正常工作。
- 从后端ECS实例发起访问,确保后端ECS实例上的HTTP服务正常工作。
- 登录负载均衡控制台,单击目标SLB实例的ID,然后单击监听,再单击修改监听配置。
- 在配置监听页面单击下一步,查看并记录后端ECS实例端口。
- 在配置监听页面单击下一步,再次单击下一步,查看以下健康检查配置。
- 登录后端ECS实例,使用nc或curl命令对后端ECS实例进行探测,本文以nc命令为例,命令如下所示。
echo -e "[$Method] [$PATH] HTTP/1.0\r\nHost: [$Domain]\r\n\r\n" | nc -t [$IP] [$Port]
注:
- [$Method]为上一步查看的健康检查方法。
- [$PATH]为上一步查看的健康检查路径。
- [$Domain]为上一步查看的健康检查域名,如果该值为“-----”,说明默认使用各后端ECS实例的内网IP为域名,可以使用[$IP]代替。
- [$IP]为后端ECS实例内网IP地址。
- [$Port]为上一步查看的健康检查端口,如果没有手动配置过健康检查端口,默认使用的是后端ECS实例端口,如果配置了健康检查端口,则使用配置的健康检查端口。
- 查看命令执行结果的状态码,确认状态码不在第三步查看的健康状态返回码范围内。根据业务场景,如果认为返回的状态码是正常情况,您可以在控制台修改健康状态返回码的范围。如果认为返回的状态码是异常情况,请确认健康检查方法、健康检查端口、健康检查域名和健康检查路径是否配置正确,健康检查的配置详情可以参见配置健康检查。
配置成功后健康检查出现异常
安全类防护软件问题
确认后端ECS实例上没有对SLB内网地址段100.64.0.0/10进行过任何形式的屏蔽,包括Iptables或其他任何第三方安全策略软件。因为SLB通过内部保留地址段中的IP地址与后端ECS实例通信,如被屏蔽则会导致健康检查异常,SLB将无法正常工作。本小节以Iptables为例进行演示。
- 登录问题后端ECS实例,执行以下命令,查看filter表的所有规则。
iptables -nL
系统显示类似如下,说明后端ECS实例禁止SLB内网地址段请求。 - 可以参见以下命令,删除此规则即可。
iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROP
- 执行以下命令,确认没有禁止SLB内网地址段请求。
iptables -nL
后端ECS实例负载过高
参见Linux实例系统负载的查询及分析步骤,查看是否是服务器负载导致的问题。
相关文档
- 更多关于排查后端ECS实例问题的信息,请参见如何排查负载均衡SLB的后端ECS实例是否异常。
- SLB产品的四层(TCP/UDP)健康检查出现异常请参见四层(TCP/UDP)健康检查异常。
适用于
- 负载均衡SLB