Azure PayPal Top-up Azure Load Balancer Health Probe Failure Diagnosis Guide
Azure Load Balancer Health Probe Failure Diagnosis Guide
Azure 负载均衡(Azure Load Balancer)里的健康探测(Health Probe)就像“体检”。它会按固定频率去访问后端实例的某个端口与路径(或仅端口),判断这个后端是否还活着、是否能正确响应。如果健康探测失败,负载均衡会把该后端从流量分发里拿掉,导致“明明服务部署了却无法访问”的问题。
很多团队遇到故障时会先盯着应用日志,但健康探测失败常常是网络路径、端口、路由、NSG/防火墙、证书、探测类型或探测参数配置造成的。下面这份指南会按“现象—定位—验证—修复”的思路,把最常见的坑逐一拆开,让你能更快把问题抓到点上。
先确认:你看到的到底是哪一种失败
在开始排查之前,先把“失败”定义清楚。Azure 负载均衡的健康探测失败通常会呈现为以下几类现象。
现象 A:后端实例状态显示不健康
在负载均衡的“后端池”或相关资源视图里,你会看到后端实例从“Healthy”变为“不健康”。此时负载均衡基本不会再把流量转发到这些实例。
现象 B:对外访问超时,或只部分可用
如果你有多个实例,可能出现“部分实例可用、部分实例不可用”。这往往对应部分后端探测成功,另一些探测失败。
现象 C:应用本身可访问,但探测仍失败
例如你能从自己的机器或跳板访问应用端口与路径,但 Azure 探测还是失败。这通常意味着:探测使用的协议、端口、路径、Host 头(如果是 HTTP)、返回码规则等与应用实际行为不一致。
健康探测机制到底在做什么
理解探测工作方式能显著提高排查效率。健康探测会从负载均衡平台发起到后端实例的探测请求。不同探测类型(TCP / HTTP / HTTPS)会带来不同的要求。
TCP 探测
一般只验证“端口是否能建立连接”。只要后端实例对该端口有监听,且网络可达,TCP 探测通常会成功。
HTTP 探测
需要满足:网络可达;后端对探测使用的路径能正确响应;返回状态码在你配置的允许范围内(常见是 200-399)。如果后端返回 404、500、302(视配置而定)或响应太慢,都可能导致失败。
HTTPS 探测
在 HTTP 基础上还会涉及 TLS/证书校验行为(具体取决于探测配置项)。如果证书链不完整、域名不匹配、TLS 版本或加密套件不被接受,可能导致探测失败。
最常见原因总览(按概率排序)
下面这些原因在真实项目里出现频率很高,你可以把它当作排查清单:
- 探测端口与实际监听端口不一致:应用监听了 8080,但探测配了 80。
- 探测路径不对或应用返回码不在允许范围:比如探测配置了 /health,但应用实际是 /status。
- NSG 拒绝了探测流量:入站/出站规则不允许负载均衡探测到达实例。
- 后端实例上的防火墙或系统策略拦截:Windows 防火墙、iptables、云内其他安全产品。
- 路由/可达性问题:例如 UDR、NAT、强制隧道导致探测流量走错路径或被丢弃。
- 应用对探测源 IP 有限制:某些应用只允许特定来源访问健康检查。
- HTTP/HTTPS 响应慢于超时:探测间隔与超时参数设置不合理,或应用在高负载下响应变慢。
- HTTPS 证书/协议不兼容:TLS 版本、证书链、SNI 等因素。
排查步骤:从“看到问题”到“验证原因”
下面给出一套可重复使用的排查流程。建议你按顺序走,不要跳步。
步骤 1:确认探测配置的关键参数
把以下信息抄出来并对照你的应用实际情况:
- 探测类型:TCP / HTTP / HTTPS
- 探测协议与端口
- HTTP/HTTPS 的探测路径(如 /healthz)
- 允许的响应状态码范围(如果你配置了)
- 探测间隔、超时阈值、不健康阈值、健康阈值
很多时候问题就藏在“配置抄错”或“环境差异”。例如测试环境用的路径是 /health,但生产配置成 /healthz。
步骤 2:确认后端实例是否在监听正确端口
在每台后端实例上检查应用是否真正监听目标端口。
- 确认进程启动成功,没有因依赖失败而退出。
- Azure PayPal Top-up 确认监听地址:有的应用只监听 127.0.0.1,导致外部无法访问。
- 确认端口绑定:例如容器映射了 8080,但主机没有暴露到探测所需端口。
如果你使用的是容器或 Kubernetes,注意“服务端口”和“容器端口”的对应关系,健康探测往往打在云侧资源配置的那个端口上,不是你在应用里想当然的端口。
步骤 3:验证应用健康端点在 HTTP/HTTPS 下的返回
如果是 HTTP/HTTPS 探测,你必须确保该路径在探测条件下返回“允许的状态码”。
- 从实例内部测试:用同样的路径访问(最好是 curl 或浏览器)。
- 确认响应码:探测允许范围内吗?比如只允许 200-399,但你的健康端点返回 404。
- 确认重定向:如果健康端点会 302 跳转到登录页,探测通常不接受这种行为。
为了避免“健康端点看起来能打开但探测失败”,建议你让健康端点具备稳定的行为:固定返回码、固定内容、不要依赖登录态、不要做复杂鉴权。
Azure PayPal Top-up 步骤 4:排查 NSG(网络安全组)规则
NSG 是最常见的网络层阻断来源之一。排查时要同时看入站与出站规则,并关注与子网/网卡关联的规则优先级。
- 后端实例需要允许从负载均衡探测所需方向来的流量到目标端口。
- 如果你限制了出站,确保实例对探测所需的回包路径没有被阻断。
- Azure PayPal Top-up 检查是否有“拒绝优先”的规则覆盖了放行规则。
常见错误是:只在入站放行了应用端口,但忽略了出站被限制,导致响应回不去。
步骤 5:检查系统防火墙与应用网关
即使云 NSG 允许了,实例内部仍可能挡住探测。
- Windows:Windows 防火墙是否允许入站到目标端口?
- Linux:iptables / nftables / ufw 是否拦截?
- 安全软件:有些主机安全策略会对“未知源”或“非预期协议”做拦截。
如果你的探测失败与应用日志完全无关(应用根本没收到请求),那通常是网络到主机层的问题,而不是应用逻辑。
步骤 6:检查路由与转发路径(UDR、强制隧道、NVA 等)
当你使用自定义路由(UDR)或强制将流量导向 NVA(网络虚拟设备)/防火墙时,探测流量可能走到意外的路径,最终丢弃。
- 检查后端子网是否挂了 UDR,且路由是否指向某个不可达的下一跳。
- 如果你启用了强制隧道到防火墙,探测是否也经过防火墙策略?防火墙是否允许健康探测端口?
- 如果有非对称路由,回包可能失败。
这一类问题往往在“能从某些机器访问但 Azure 探测不行”时更明显。
步骤 7:关注超时、阈值与间隔参数
健康探测不是“只要失败一次就立刻剔除”。它通常需要连续失败到达不健康阈值才判定不健康;同样要连续成功达到健康阈值才重新加入。
- 如果你把超时设得太短,而应用在某些时段响应慢,可能会持续探测超时。
- 如果间隔太密集,应用可能因为频繁探测而额外消耗资源。
建议在变更参数之前先确认应用端点本身性能稳定。如果端点本来就偶发超时,那参数只是“放大了问题”。
步骤 8:排查 HTTPS 相关问题(证书与协议)
HTTPS 探测失败常见于证书或 TLS 兼容性。你可以从以下方向检查:
- 证书链是否完整:缺少中间证书可能导致客户端(此处为探测方)无法验证。
- 证书是否使用了正确的域名:如果探测行为校验主机名,域名不匹配会失败。
- TLS 版本与加密套件:后端只支持旧 TLS,而探测方只接受更新版本(或反过来)。
如果你在排查阶段,想快速验证网络与应用连通性,通常可以临时用 HTTP 探测替代(前提是安全策略允许),确认连通后再回到 HTTPS 配置。
如何用证据说话:让排查更快收敛
很多团队的问题是“感觉不通”,但缺少证据。你可以按以下方式把证据链建立起来。
在后端实例上抓请求:看得到吗?看响应是什么吗?
对 HTTP/HTTPS 探测,你可以在应用或反向代理(如 Nginx / IIS)日志里观察:
- 是否真的收到了来自负载均衡探测的请求。
- 请求是否命中了正确路径。
- 响应码是多少,以及耗时是多少。
如果日志里完全没有探测请求,优先回到网络层:NSG、路由、主机防火墙。
如果应用收到请求但探测失败:重点看返回码与重定向
应用收到探测请求但健康状态仍是失败,通常是探测要求的“成功条件”没有满足。
- 返回码不在允许范围。
- 探测超时导致平台认为失败。
- Azure PayPal Top-up 探测路径返回了重定向或错误页。
让健康端点做到“最简单可用”,通常能把问题直接消除。
一份可直接套用的检查清单
你可以把下面这份清单当成现场排查时的“勾选表”。
- 探测类型是否正确?TCP/HTTP/HTTPS 对应的端口与协议是否一致?
- 探测端口是否与实例实际监听端口一致?
- HTTP/HTTPS 的探测路径是否存在?是否返回允许的状态码?
- 是否存在 302/401/403/404/500 等不符合探测条件的返回?
- 超时与阈值是否合理?应用端点是否在峰值也能快速响应?
- 后端子网与网卡的 NSG 入站/出站规则是否放行对应端口?
- 实例内部防火墙是否放行?
- 是否有 UDR、强制隧道、NVA、防火墙把探测流量拦截或走错路?
- Azure PayPal Top-up HTTPS 探测是否存在证书链、域名、TLS 兼容性问题?
常见“看似相关但其实是别的问题”的误区
误区 1:健康探测失败一定是应用挂了
不一定。很常见的情况是:应用本身运行正常,但探测端口、路径、网络策略不匹配,导致探测根本没到应用层。
误区 2:能在浏览器打开就等于探测一定能通过
Azure PayPal Top-up 浏览器访问可能走了不同的网络路径,也可能带了不同的 Host 头、重定向流程或认证逻辑。健康探测通常是更“固定”的访问模式,要求严格。
误区 3:只改应用不改网络就能解决
Azure PayPal Top-up 如果 NSG 或防火墙阻断仍在,应用再怎么优化也不会被探测到。建议在确认端口可达后再改应用。
建议的健康端点设计方式
为了减少未来故障,你可以在应用层遵循一些原则,让健康探测更可靠:
- 健康端点保持轻量:不要做重型依赖调用。
- 返回固定且可预测:尽量返回单一成功码。
- 避免鉴权依赖:探测不应要求登录或复杂签名。
- 对异常要有兜底:依赖不可用时也要快速返回错误码,避免探测超时。
这样做的价值是:当问题出现时,你能从响应码快速判断是“网络/探测配置问题”还是“应用运行时问题”。
结语:让排查变成“可复制的流程”
Azure 负载均衡健康探测失败的本质,是“探测方发起请求,后端在满足探测成功条件时没有返回可接受结果”。要快速定位,关键不是盯着某一个点猜,而是按配置参数、端口监听、HTTP/返回码、NSG/防火墙、路由可达性、超时阈值、HTTPS 兼容性逐层验证。只要你把证据抓出来,故障通常会在较短时间内收敛到一个具体原因,并能明确下一步怎么改。
如果你正在排查,建议你先从“探测端口与路径是否匹配”以及“NSG 与主机防火墙是否放行”这两类问题入手。它们最常见,也最容易在第一轮就得到答案。

