Jan
25
2021
负载均衡SLB四层(TCP/UDP)健康检查出现异常的解决方法
问题描述
负载均衡SLB的健康检查用于探测您的后端服务器是否处于正常工作状态,当健康检查出现异常时,通常说明您的后端服务器出现了异常,但也可能是您的健康检查配置不正确导致,本文主要介绍负载均衡SLB四层(TCP/UDP)健康检查出现异常的解决方法。
问题原因
首次配置健康检查出现异常的主要原因是健康检查配置问题,可以通过如下两类问题进行检查。
- 健康检查参数设置错误
- 监听端口问题
配置成功后健康检查出现异常的主要原因是后端ECS实例出现问题,可以通过如下两类问题进行检查。
- 安全类防护软件问题
- 后端服务器负载过高
解决方案
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
首次配置健康检查出现异常
健康检查参数设置错误
- 登录负载均衡控制台,单击目标SLB实例的ID,然后单击监听,再单击配置。
- 在配置监听页面单击下一步,再次单击下一步,检查负载均衡健康检查参数设置是否正常,建议按照默认提供的健康检查参数进行设置。
监听端口问题
-
检查健康检查监听的端口。
- 登录负载均衡控制台,单击目标SLB实例的ID,然后单击监听,再单击配置。
-
在配置监听页面单击下一步,查看并记录后端服务器端口。
-
再次单击下一步,查看健康检查端口。
说明:如果没有手动配置健康检查端口,默认使用是上一步记录的后端服务器端口。如果配置了健康检查端口,则记录该值。
-
登录和后端服务器网络互通的服务器,执行以下命令,尝试连接健康检查端口。
telnet [$IP] [$Port]
说明:
命令会返回类似“telnet: connect to address [$IP]: Connection refused”的信息,即系统提示无法连接到该主机,连接被拒绝,如下图所示。说明监听端口存在异常。
- [$IP]为后端服务器的内网IP地址。
- [$Port]为上一步记录的健康检查端口。
说明:健康检查是正常情况下,命令会返回类似“Connected to [$IP]”的信息,说明后端服务器上健康检查端口处于正常工作(监听)状态。
-
排查是否是相关服务没有启动或服务端口不是默认端口等原因,本小节以Nginx服务为例进行演示。
-
登录问题后端服务器,执行以下命令,查看Nginx服务状态。
systemctl status nginx
-
执行以下命令,启动Nginx服务。
systemctl start nginx
-
然后执行以下命令,查看Nginx服务状态。
systemctl status nginx
-
登录负载均衡控制台,查看健康检查是否正常,如果不正常,执行以下命令,查看Nginx服务监听端口。
netstat -tanp |grep nginx
-
编辑
/etc/nginx/nginx.conf
文件,找到并修改此listen值,将此值修改成[$Port],然后保存并退出。
说明:当业务场景不合适修改此listen值,可以参见监听概述根据应用场景重新修改对应协议的健康检查端口。
-
执行以下命令,重启Nginx服务,然后等待片刻,确认健康检查正常。
systemctl restart nginx
-
登录问题后端服务器,执行以下命令,查看Nginx服务状态。
配置成功后健康检查出现异常
安全类防护软件问题
确认后端服务器上没有对SLB内网地址段100.64.0.0/10进行过任何形式的屏蔽,包括Iptables或其他任何第三方安全策略软件。因为SLB通过内部保留地址段中的IP地址与后端服务器通信,如被屏蔽则会导致健康检查异常,SLB将无法正常工作。本小节以Iptables为例进行演示。
-
登录问题后端服务器,执行以下命令,查看filter表的所有规则。
iptables -nL
-
可以参见以下命令,删除此规则即可。
iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROP
-
执行以下命令,确认没有禁止SLB内网地址段请求。
iptables -nL
本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。
我有话说: