华为云 ELB 健康检查异常:后端不可用排查清单

举报
yd_294423728 发表于 2026/10/25 11:42:23 2026/10/25
【摘要】 一、现象:监听器正常,后端却是「异常」很多人配完华为云弹性负载均衡(ELB)后,监听器能建、域名也能解析,控制台里后端服务器却长期显示健康检查「异常」,业务流量进不来。常见的情况是:应用本机能 curl 通,但 ELB 仍把它摘掉;或者刚改完安全组,状态迟迟不翻绿。健康检查的本质很简单:ELB 按间隔向后端发探测,连续失败达到阈值后标记异常并停转发,恢复后再摘回。排查时优先分清两件事:探测...

一、现象:监听器正常,后端却是「异常」

很多人配完华为云弹性负载均衡(ELB)后,监听器能建、域名也能解析,控制台里后端服务器却长期显示健康检查「异常」,业务流量进不来。常见的情况是:应用本机能 curl 通,但 ELB 仍把它摘掉;或者刚改完安全组,状态迟迟不翻绿。

健康检查的本质很简单:ELB 按间隔向后端发探测,连续失败达到阈值后标记异常并停转发,恢复后再摘回。排查时优先分清两件事:

  1. 探测能不能打到机子(安全组、网络 ACL、本机防火墙、路由)
  2. 打到了应用是否按检查协议「答对」(端口监听、HTTP 路径与状态码、HOST 头)

共享型与独享型在「探测源地址」上不同,混用别人的放通规则很容易白忙一场。下面按可执行顺序整理一份清单,方便对照自检。

参考文档(公开可核对):

二、先定界:共享型还是独享型,源地址不一样

类型 健康检查源地址(入方向要放通)
共享型 ELB 100.125.0.0/16
独享型 ELB ELB 后端子网所在 VPC 网段

只放通「业务客户端网段」、却没放通上表源地址时,本机自测正常、ELB 探测全失败,是最常见的一类误配。

补充两点容易忽略的语义:

  • 权重为 0:独享型仍会探测并显示真实健康状态,只是不转发新请求;共享型会把健康检查状态显示为「异常」。看到「异常」时先看一眼权重,避免误判。
  • 关掉健康检查:ELB 会默认后端在线并继续转发。这能临时恢复流量,但掩盖了真实故障,生产更稳妥的做法是修好探测,而不是长期关闭。

四层监听器(TCP/UDP)还有一项:负载均衡器需要绑定 EIP 或私网 IP。初次创建未绑定时,后端常会直接显示健康检查异常。

三、网络层:安全组、网络 ACL、本机三道门

1. 安全组:协议、端口、源地址要对齐

后端安全组入方向需要同时满足:

  • 协议:与健康检查配置一致(HTTP 检查实际走 TCP 传输层,规则按检查协议对应的传输层放通)
  • 端口:健康检查端口(未单独指定时等于业务端口)
  • 源地址:按上一节的共享型 / 独享型网段

出方向若被收紧(不是默认「全部放通」),同样要放通对健康检查源地址的回程。很多人只改入方向、出方向仍拒绝,探测包进得去、应答回不来。

2. 网络 ACL:子网级默认拒绝

若后端所在子网挂了网络 ACL,默认会拒绝全部出入站。必须在 ACL 入 / 出方向再放通健康检查协议、端口和对应源网段。安全组放过、ACL 没放过时,控制台自助诊断里常能直接看到 ACL 相关项。

3. 本机防火墙与 hosts.deny

firewalld / iptables / 安全软件若屏蔽了探测源网段,表现与安全组拒绝类似。共享型场景下,还要确认 /etc/hosts.deny 没有写入 100.125.0.0/16。

另外检查默认路由:跨网段探测依赖默认路由指向子网网关。可用 ip route 或 route -n 确认;默认路由被改掉后,健康检查报文到不了后端。

四、应用层:监听、路径、状态码

1. 端口是否真在 LISTEN

在后端上执行(把 port 换成健康检查端口):

netstat -anlp | grep port
# 或
ss -lntp | grep port

回显里要有 LISTEN。没有监听时,先启动业务或修正健康检查端口,再谈 ELB 配置。

2. HTTP 检查:路径与状态码

HTTP 健康检查是 ELB 对「检查路径」发 GET。建议路径指向轻量静态页(如 /health.html),路径填绝对路径(以 / 开头),例如 /、/chat/try/、/health.html。

本机自测:

curl 后端私有IP:健康检查端口/健康检查路径 -iv

状态码约定(以当前文档为准,产品迭代时以控制台说明为准):

场景 通常视为正常的状态码
TCP 监听器上的 HTTP 检查 200
共享型 ELB 的 HTTP 检查 200、202、401
独享型 ELB 的 HTTP/HTTPS 检查 200

应用若对根路径做 302/登录跳转、或校验 Host 头,容易导致「业务能访问、检查失败」。可以:把检查路径改成不跳转的静态健康页;或在健康检查配置里填写后端认可的域名;临时定界时也可先改成 TCP 检查,只验端口是否通,确认网络层无误后再切回 HTTP。

3. 后端服务器组是否挂到监听器

后端服务器组未关联监听器时,健康检查状态无法正常探测。改完关联后,仍需等待「检查间隔 × 判定次数」量级的时间,状态才会翻绿,不必秒刷。

五、负载与超时

高 CPU、内存打满、连接数顶满时,健康检查连接或请求容易超时,表现为间歇性异常。可以用云监控(CES)看后端 ECS 的 CPU、内存、网卡与连接相关指标,先排除「机器其实活着但忙不过来」。

超时、间隔、最大重试次数设得过严时,短抖动也会被判死。可以按业务 SLA 略放宽,但不要用「关掉检查」代替容量问题。

六、一份可执行的检查表

改完配置后请等待若干探测周期再看控制台状态。

  • [ ] 已确认是共享型还是独享型,安全组 / ACL 源地址用对网段
  • [ ] 入方向与出方向均放通健康检查协议 + 端口 + 源网段
  • [ ] 子网网络 ACL(若启用)同样放通,未停留在默认拒绝
  • [ ] 本机防火墙 / hosts.deny 未拦探测源;默认路由指向子网网关
  • [ ] 健康检查端口在后端 LISTEN;HTTP 路径为绝对路径且返回约定状态码
  • [ ] 若应用校验 Host,健康检查「域名」已填写;必要时先用 TCP 检查定界
  • [ ] 后端服务器组已关联监听器;四层监听场景下 ELB 已绑定 EIP 或私网 IP
  • [ ] 权重不为 0(尤其共享型);机器负载未导致检查超时
  • [ ] 修改后已等待间隔与重试生效,未在几秒内误判失败

七、小结

ELB 健康检查异常,多半卡在「探测源地址没放通」或「HTTP 答错状态码 / 路径」两层。先分清共享型 100.125.0.0/16 与独享型后端子网网段,再按安全组 → ACL → 本机 → 监听与状态码的顺序推进,多数「后端不可用」可以在不关健康检查的前提下恢复。控制台文案若有改版,以当前官方 FAQ 为准。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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