API 文档

文档中心 > 负载均衡 > 运维指南 > 健康检查异常排查思路

健康检查异常排查思路

最近更新时间:2020-07-17 11:21:32

若健康检查出现异常,可以从三个方向进行排查:四层排查、七层排查及后端带宽问题排查。

四层排查

TCP 协议下,负载均衡使用 SYN 包进行探测;UDP 协议下,负载均衡使用 ping 命令进行探测。

在页面查看 CLB 后端服务器端口的健康状态,若不健康,排查思路如下:

  • 确定 CLB 后端服务器是否有配置有防火墙影响了服务,如果有请关闭
  • 使用 netstat 命令,确定后端服务器的端口是否有进程在监听,若未启动,则重新启动服务

七层排查

针对七层(HTTP 协议)服务,当某一监听出现健康检查“异常”时,可以通过如下方面进行排查:

  • 由于负载均衡的七层健康检查服务与后端 CVM 之间的通讯是走内网的,您需要登录服务器检查应用服务器端口是否正常监听在内网地址上,如果没有监听在内网地址,请将应用服务器端口监听到内网上,从而确保负载均衡系统和后端 CVM 之间的通讯正常。

假设负载均衡前端端口是80,CVM 后端端口也是80,CVM 内网 IP 是:1.1.1.10

Windows 系统服务器使用如下命令:

netstat -ano | findstr :80

Linux 系统服务器使用如下命令:

netstat -anp | grep :80

如果能看到1.1.1.10:80的监听或0.0.0.0:80的监听则说明这部分正常。

  • 请确保后端服务器开启了相应的端口,该端口必须与您在负载均衡监听配置中配置的后端端口保持一致。

如果是四层负载均衡,只要后端端口 telnet 有响应即可,可以使用telnet 1.1.1.10 80来测试。如果是七层负载均衡,需要 HTTP 状态码是200 等代表正常的状态码。检验方法如下:

Windows 系统可以直接在 CVM 内的浏览器输入内网 IP 测试是否正常,本例为:http://1.1.1.10
Linux 系统可以通过curl -I命令查看状态是否为 HTTP/1.1 200 OK,本例为:curl -I 1.1.1.10

  • 检查后端 CVM 内部是否有防火墙或其他安全类防护软件,这类软件很容易将负载均衡系统的本地 IP 地址屏蔽,从而导致负载均衡系统无法跟后端服务器进行通讯。

检查服务器内网防火墙是否放行80端口,可以暂时关闭防火墙进行测试。

Windows 系统可以在运行输入firewall.cpl后,进行关闭操作。
Linux 系统可以输入/etc/init.d/iptables stop关闭(CenOS 7.x 系统请执行 systemctl stop firewalld)。

  • 检查负载均衡健康检查参数设置是否正确,建议参见 健康检查 提供的健康检查参数默认值进行设置。
  • 健康检查指定的检测文件,建议是以 html 形式的简单页面,只用于检查返回结果,不建议用 PHP 等动态脚本语言。
  • 检查后端是否有较高负载导致 CVM 对外提供服务响应慢。
  • 如果同时开启了 TCP 的快速回收(tcp_tw_recycle)和时间戳(tcp_timestamps)可能导致健康检查异常,建议关闭 tcp_tw_recycle,详见 原因分析

后端带宽问题

后端 CVM 需要公网带宽吗?是否会影响负载均衡的服务?

  • 带宽上移账户,负载均衡绑定的后端 CVM 无需配置公网带宽,且不会影响负载均衡服务 。
  • 非带宽上移账户,负载均衡绑定的后端 CVM 需要配置公网带宽,否则会导致健康检查异常。
    说明:

    • 非带宽上移账户的负载均衡不收取任何的流量或带宽费用。负载均衡服务产生的公网流量费用,由绑定的后端 CVM 收取。
    • 由于无法准确预测互联网 Web 业务的流量,为避免出现浪费或丢包的情况,建议您在购买后端 CVM 时,公网带宽选择“按使用流量计费”,并设定合理的带宽峰值上限,即可无需关注负载均衡出口的总流量涨跌,按使用流量进行付费。
目录