负载均衡SLB四层(TCP/UDP)健康检查出现异常的解决方法

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

问题描述

负载均衡SLB的健康检查用于探测您的后端服务器是否处于正常工作状态,当健康检查出现异常时,通常说明您的后端服务器出现了异常,但也可能是您的健康检查配置不正确导致,本文主要介绍负载均衡SLB四层(TCP/UDP)健康检查出现异常的解决方法。

问题原因

首次配置健康检查出现异常的主要原因是健康检查配置问题,可以通过如下两类问题进行检查。

配置成功后健康检查出现异常的主要原因是后端ECS实例出现问题,可以通过如下两类问题进行检查。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

首次配置健康检查出现异常

健康检查参数设置错误

  1. 登录负载均衡控制台,单击目标SLB实例的ID,然后单击监听,再单击配置
  2. 在配置监听页面单击下一步,再次单击下一步,检查负载均衡健康检查参数设置是否正常,建议按照默认提供的健康检查参数进行设置,详情请参见配置健康检查

监听端口问题

  1. 检查健康检查监听的端口。
    1. 登录负载均衡控制台,单击目标SLB实例的ID,然后单击监听,再单击配置
    2. 在配置监听页面单击下一步,查看并记录后端服务器端口。
    3. 再次单击下一步,查看健康检查端口。
      说明:如果没有手动配置健康检查端口,默认使用是上一步记录的后端服务器端口。如果配置了健康检查端口,则记录该值。
    4. 登录和后端服务器网络互通的服务器,执行以下命令,尝试连接健康检查端口。
      telnet [$IP] [$Port]
      说明
      • [$IP]为后端服务器的内网IP地址。
      • [$Port]为上一步记录的健康检查端口。
      命令会返回类似“telnet: connect to address [$IP]: Connection refused”的信息,即系统提示无法连接到该主机,连接被拒绝,如下图所示。说明监听端口存在异常。

      说明:健康检查是正常情况下,命令会返回类似“Connected to [$IP]”的信息,说明后端服务器上健康检查端口处于正常工作(监听)状态。
  2. 排查是否是相关服务没有启动或服务端口不是默认端口等原因,本小节以Nginx服务为例进行演示。
    1. 登录问题后端服务器,执行以下命令,查看Nginx服务状态。
      systemctl status nginx
      系统显示类似如下,说明服务没有启动。
    2. 执行以下命令,启动Nginx服务。
      systemctl start nginx
    3. 然后执行以下命令,查看Nginx服务状态。
      systemctl status nginx
      系统显示类似如下,说明服务已经启动。
    4. 登录负载均衡控制台,查看健康检查是否正常,如果不正常,执行以下命令,查看Nginx服务监听端口。
      netstat -tanp |grep nginx
      系统显示类似如下,与[$Port]端口不一致。
    5. 编辑/etc/nginx/nginx.conf文件,找到并修改此listen值,将此值修改成[$Port],然后保存并退出。
      说明:当业务场景不合适修改此listen值,可以参见监听概述根据应用场景重新修改对应协议的健康检查端口。
    6. 执行以下命令,重启Nginx服务,然后等待片刻,确认健康检查正常。
      systemctl restart nginx

配置成功后健康检查出现异常

安全类防护软件问题

确认后端服务器上没有对SLB内网地址段100.64.0.0/10进行过任何形式的屏蔽,包括Iptables或其他任何第三方安全策略软件。因为SLB通过内部保留地址段中的IP地址与后端服务器通信,如被屏蔽则会导致健康检查异常,SLB将无法正常工作。本小节以Iptables为例进行演示。

  1. 登录问题后端服务器,执行以下命令,查看filter表的所有规则。
    iptables -nL
    系统显示类似如下,说明后端服务器禁止SLB内网地址段请求。
  2. 可以参见以下命令,删除此规则即可。
    iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROP
  3. 执行以下命令,确认没有禁止SLB内网地址段请求。
    iptables -nL

后端服务器负载过高

参见Linux实例系统负载的查询及分析步骤,查看是否是服务器负载导致的问题。

相关文档

SLB产品的七层(HTTP/HTTPS)健康检查出现异常请参见七层(HTTP/HTTPS)健康检查异常

适用于

  • 负载均衡SLB