亚马逊云账号批发 AWS ALB/NLB 负载均衡器健康检查失败(Unhealthy)排查清单
AWS ALB/NLB 负载均衡器健康检查失败(Unhealthy)排查清单
看到目标组变成 unhealthy,很多人第一反应是“实例坏了”或者“负载均衡器有问题”。实际排查里,更常见的是配置不一致:服务没有真正监听、健康检查路径不对、返回码不符合要求、安全组没放行、NACL 拦截、证书或超时设置不合适。AWS ALB/NLB 健康检查失败如果发生在跨境部署、代开账号或新环境上线阶段,还要顺手确认账号付款方式、风控审核、资源配额和预算控制是否影响了资源创建与注册。
实战里建议的顺序是:先查目标服务本身,再查负载均衡配置,然后查网络层,最后再看账号、配额和成本控制问题。很多人跳着查,最后把简单问题拖成大故障。
一、先判断问题落在哪一层
排查前先把现象分清楚,不然很容易对着控制台反复改参数,却没有改到真正的点上。
- ALB 场景:更常见的是 HTTP/HTTPS 路径、Host Header、返回码、重定向、证书或应用响应慢。
- NLB 场景:更常见的是端口没开、目标没有监听、协议不一致、网络连通性差、NACL 拦截。
- 新账号或新环境:有时不是健康检查本身的问题,而是账号付款方式未验证、风控审核未过、区域配额不足,导致资源没按预期创建或注册。
如果你是在做海外业务部署,先确认负载均衡器、目标实例、容器任务、数据库都在同一个 region、同一个 VPC 规划内。很多“unhealthy”最终是跨网络边界造成的。
二、按层排查 AWS ALB/NLB unhealthy 的常见原因
1. 目标服务本身没有真正提供健康检查页面或端口
- 应用只在 127.0.0.1 监听,没有绑定到业务网卡地址。
- 容器端口映射写错,容器内部开了,宿主机端口没有通。
- 服务还没启动完成,就已经被注册到 target group。
- 应用在高负载下响应超时,健康检查先失败。
- 接口返回了 301、302、401、403、500 等非预期状态码。
最直接的做法,是在目标实例或容器里本地访问健康检查地址,确认返回值符合预期。不要只看进程是否存在,要看端口是否真正可用。
亚马逊云账号批发 2. 健康检查参数和业务接口不一致
- 路径不对:把健康检查指到登录页、跳转页、鉴权页,很容易一直 unhealthy。
- 协议不对:业务是 HTTP,你却配成 HTTPS;或者业务跑在 TLS 上,却拿明文去探测。
- 端口不对:target group 的端口和服务监听端口不是同一个。
- 返回码规则不对:应用返回 204、301、302 时,健康检查匹配规则可能没有放行。
- 超时太短:冷启动、初始化脚本、数据库连接慢,都会让首次检查失败。
实际操作里,最稳妥的健康检查路径通常是一个独立的“/health”或“/ready”接口,不要挂认证,不要做复杂业务逻辑,只返回简单状态。
3. 安全组、网络 ACL、路由没有放通
- 目标实例的安全组只放行了客户端来源,没有放行来自负载均衡器的流量。
- 只开放了业务端口,没有开放健康检查端口。
- NACL 只允许入站,不允许回包所需的临时端口范围。
- 跨子网、跨路由表时,目标实例与负载均衡器之间缺少正确路由。
如果你在做分层防火墙,别忘了健康检查流量也要走通。很多团队只给客户端访问放行,却忘了 LB 到目标的内部探测流量。
4. ALB 和 NLB 的排查重点不一样
- ALB 更容易在“路径、返回码、重定向、证书、Host 头”上出问题。
- NLB 更容易在“端口、协议、监听、连通性、NACL”上出问题。
- 如果你把原本需要 HTTP 检查的服务改成 TCP 检查,可能会“看起来健康了”,但只是网络通了,不代表业务接口真的可用。
所以不要只盯着绿色或红色状态,要结合业务访问方式判断。能通端口,不等于能正常提供服务。
三、最容易忽略的几个实战坑
- 亚马逊云账号批发 健康检查打到了重定向页面:比如强制跳转 HTTPS、跳登录页、跳地区页,导致返回码不符合匹配规则。
- 实例启动慢:应用依赖数据库、缓存、配置中心,启动时短暂不可用。
- 容器编排更新中:任务已经注册,但 Pod 或容器还没 Ready。
- 证书和域名不匹配:HTTPS 健康检查时,证书链、SNI、域名配置不一致会带来额外失败。
- 只在本机测试通过:本地 curl 成功,不代表来自负载均衡器节点的请求也能成功。
- 资源被降配或停机:为了控制成本,目标实例被关机、缩容、限制带宽,最后自己把健康检查打成失败。
四、账号购买、实名认证、企业认证、充值续费、支付方式这些问题,为什么也要先看
如果你是新购 AWS 账号、海外代付账号,或者由采购、财务、运维三方一起接管环境,部署前最好先确认账号层没有问题。虽然这类问题不直接等于 unhealthy,但会影响资源创建、目标注册、续费和后续扩容,最后表现出来就像“负载均衡器一直不好使”。
- 付款方式验证未完成:资源创建流程可能中断,目标组或实例没有按预期到位。
- 风控审核未通过:新账号、新地区、异常支付来源,容易触发审核,影响资源开通节奏。
- 账单未激活或余额不足:测试环境还在跑,结果实例被停掉、服务被缩减,健康检查自然失败。
- 企业资料不完整:跨境团队经常先拿到技术账号,后补资料,期间资源权限和购买权限不稳定。
- 区域配额不足:想再开一台目标机或再建一个 target group,却被限额卡住,最后只能把旧资源硬改到新业务上。
从成本控制角度看,建议把“健康检查失败”与“账号/预算问题”分开看:前者是配置和网络问题,后者是资源生命周期问题。两类问题如果混在一起,排查时间会翻倍。
五、可直接照着做的排查清单
- 在目标实例或容器内访问健康检查地址,确认返回状态、路径和内容都正确。
- 亚马逊云账号批发 检查 target group 的协议、端口、健康检查路径、匹配返回码、超时和阈值。
- 确认安全组已放行来自负载均衡器的流量,不要只放行客户端来源。
- 亚马逊云账号批发 检查 NACL、路由表、子网是否一致,尤其是跨子网或跨可用区部署时。
- 亚马逊云账号批发 看目标服务日志,找超时、拒绝连接、认证失败、重定向等信息。
- 查看 target health 的 reason,别只看状态字面值;常见原因会直接提示超时、返回码不匹配、目标未注册等。
- 如果是 ALB,优先准备一个独立的健康检查接口,不要复用业务首页或登录页。
- 如果是 NLB,先用最简单的 TCP 连通性验证端口是否真的通,再看应用层问题。
- 确认账号、账单、风控和配额没有阻断资源创建或扩容。
- 如果是为了省成本而缩减资源,确认目标实例没有被停机、降配或回收。
六、ALB 和 NLB unhealthy 现象对照表
| 现象 | 更常见于 ALB | 更常见于 NLB | 优先检查 |
|---|---|---|---|
| 端口能通但还是 unhealthy | 路径、返回码、重定向、Host 头 | 协议不一致、目标未正确监听 | 健康检查参数和应用日志 |
| 刚上线就 unhealthy | 冷启动、依赖未就绪、认证页拦截 | 进程还没起、监听端口没打开 | 启动顺序和 readiness 状态 |
| 本地访问正常,经过 LB 不正常 | 路径或证书配置不一致 | 安全组、NACL、路由未放通 | 网络层和 LB 到目标的访问路径 |
| 改成 TCP 后变健康 | 说明原来的 HTTP/HTTPS 检查设置太严格 | 说明网络通,但业务接口可能仍有问题 | 不要只看健康状态,要回到业务接口验证 |
七、常见错误:看起来像健康检查,其实是部署策略问题
- 把生产流量直接打到没有预热的实例上,导致第一次检查超时。
- 目标组里混入了不同版本、不同端口、不同协议的实例。
- 容器服务更新时没有做灰度,全部目标同时切换,瞬间全部变 unhealthy。
- 为了节省费用,把测试机和生产机共用一套规则,结果健康检查互相影响。
- 新账号刚开通就急着上生产,没有先验证账单、配额、权限和风控是否已完全放开。
如果你现在是在做业务决策,建议把健康检查策略和资源开通策略一起定下来:先确认账号可用、预算可控、配额足够,再上线目标服务和监听规则。
八、FAQ
Q1:端口能 telnet 通,为什么还是 unhealthy?
因为健康检查不只看端口连通,还看协议、路径、返回码和响应时间。ALB 尤其容易在返回码和重定向上失败。
Q2:把健康检查改成 TCP 就好了,是不是问题解决了?
不一定。TCP 只能证明端口通了,不能证明业务接口正常。它适合先定位网络问题,不适合长期掩盖应用层故障。
Q3:NLB unhealthy 还要看安全组吗?
要看。虽然 NLB 常被认为更偏网络层,但目标实例是否放行来自负载均衡器节点的流量,仍然是常见问题。
Q4:新账号、付款方式未验证,会影响健康检查吗?
间接会。账号层问题通常不会把“已存在的健康检查”直接改坏,但会影响资源创建、续费、扩容和目标注册,最终表现出来像服务一直不正常。
Q5:什么时候应该先怀疑资源限制或成本控制?
当你发现实例被停机、目标数量不对、扩容失败、配额不足,或者财务侧要求缩减资源后再出现 unhealthy,就应该先查资源生命周期和预算策略。
结论:先排配置,再排网络,最后排账号和资源
处理 AWS ALB/NLB 健康检查失败,最有效的方法不是盲目重建,而是按层收敛问题:目标服务是否真的能响应,健康检查参数是否匹配,安全组和网络是否放通,账号支付、风控、配额和成本控制是否影响了资源状态。照这份清单走,通常都能把 unhealthy 的原因缩到很小的范围。

