华为云 ELB 健康检查一直异常?排查思路与三个常见原因

举报
yd_267437536 发表于 2026/11/05 13:09:30 2026/11/05
【摘要】 后端服务明明能访问,ELB 健康检查却一直显示异常。整理了协议/路径/返回码三个最常见的坑和排查命令。

给 ECS 挂上 ELB 之后,健康检查长时间显示「异常」,但直接 curl 后端服务又是通的。这种情况十有八九不是网络问题,而是健康检查的配置和服务的真实行为对不上。下面是排查思路和三个最常见的坑。

一、先看协议:TCP 检查通、HTTP 检查不通

ELB 的健康检查协议可以选 TCP 或 HTTP。如果选了 HTTP 检查但一直异常,先用 curl 模拟健康检查的完整请求:

curl -v http://后端IP:端口/健康检查路径

重点看返回码。健康检查默认只认 2xx 返回码,如果你的接口对根路径返回 301(重定向到登录页)或 404(没配路由),检查就永远过不了。解决办法二选一:把检查路径改成一个确定返回 200 的接口(比如 /healthz),或在健康检查高级配置里把 301/404 加进正常返回码范围。

二、检查路径配置错误

第二个坑是路径。很多框架默认路径下返回的不是应用状态,而是前端静态页或者 404。检查路径必须是从端口根开始的绝对路径,不需要拼域名。Nginx 场景建议专门配一个轻量的健康检查 location:

location /healthz {
    access_log off;
    return 200 "ok";
}

这样不产生业务日志,也不会被业务逻辑拖慢,检查响应快且稳定。

三、安全组和防火墙放行了业务端口却漏了检查来源

第三个坑在安全组。ELB 健康检查报文的源 IP 不是客户端 IP,而是 ELB 的检查源 IP(100.125.0.0/16 网段)。如果后端安全组只放行了业务网段,健康检查报文会被直接丢弃,表现就是 TCP 检查也异常。确认安全组入方向规则里放行了 100.125.0.0/16 到检查端口。

排查顺序小结

  • 先在后端机本机 curl 检查路径,确认返回码是 2xx;
  • 再看 ELB 健康检查配置的协议、端口、路径是否和真实服务一致;
  • 最后核对安全组是否放行了 100.125.0.0/16。

按这三步走,绝大多数「后端正常但检查异常」的问题都能在十分钟内定位。改完配置后健康检查有几十秒的探测周期,不要改完立刻下结论。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。