首页/云/云网络与负载均衡速查/健康检查失败的排查顺序
负载均衡54 条

健康检查失败的排查顺序

健康检查失败的排查顺序:先在后端本机验证端口与探活路径,再核对安全组与防火墙是否放通检查来源,然后确认应用监听地址不是 127.0.0.1,最后检查应用是否因白名单或限流拒绝了探测。

健康检查失败怎么查

排查顺序是:先在后端本机验证端口与探活路径是否正常,再核对安全组与主机防火墙是否放通检查来源,然后确认应用监听地址不是 127.0.0.1,最后检查应用侧的 IP 白名单与限流是否拒绝了探测请求。按这个顺序推进,绝大多数「业务能访问但成员异常」的问题都能定位到具体一层。

基本信息

首要判断是全部成员异常,还是个别成员异常
本机自检端口监听状态、探活路径返回值、进程是否存活
网络层安全组、firewalld 或 iptables 是否放通检查来源
监听地址应用必须监听 0.0.0.0 或内网网卡,不能只监听 127.0.0.1
应用层IP 白名单、限流、鉴权是否拦截了探测请求
独立检查端口单独配置检查端口时,要确认该端口与业务端口都正常

典型使用场景

  • 发布新版本后成员持续异常:先在实例上验证探活接口
  • 只有部分后端异常:优先怀疑该实例自身的配置与资源
  • 全部后端同时异常:优先怀疑健康检查参数、入口配置或检查来源放行
  • 换了探活路径后成员全被摘除:核对路径返回值与状态码要求
  • 排查疑似网络问题时,用两端抓包确认探测流量是否到达

后端快速自检

后端快速自检
curl -sS -m 3 -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080/healthz
systemctl is-active myapp                  # 进程是否存活
ss -lntp | grep 8080                       # 监听地址是否为 0.0.0.0
sudo iptables -S | head -20                # 是否有拦截规则
curl -sS -m 3 -o /dev/null -w '%{http_code}\n' http://<内网IP>:8080/healthz  # 用内网地址再验证一次

现象与排查重点

现象重点检查
全部成员异常健康检查参数、检查来源是否放行、入口规则是否误伤探活
个别成员异常该实例的进程、端口、监听地址与资源占用
本机 curl 正常但检查失败安全组或主机防火墙未放通检查来源
返回码非预期探活路径被重定向或鉴权拦截
「应用能正常提供服务但成员被摘除」几乎总是这三类原因之一:监听地址只绑定了回环、探活路径被拦截、检查来源未放通,按顺序核对即可。
健康检查频繁失败时应修复根因,不要通过停用健康检查掩盖问题,否则故障转移能力一并消失,后续故障会直接以 5xx 暴露给用户。

易错点

  • 直接停用健康检查绕过报错,失去故障自动转移能力,问题被推迟到更糟糕的时机爆发
  • 只验证业务端口,忽略独立健康检查端口不通的情况,排查方向长期跑偏
  • 应用只监听 127.0.0.1,本机自检一切正常,从外部看却始终不可用
  • 安全组放行了业务来源却漏掉负载均衡的检查来源网段,成员被持续摘除

数据来源与参考

  • 阿里云 健康检查排查文档
  • 腾讯云 CLB 健康检查常见问题
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌