NLB是否会在目标组健康检查失败时仍向ALB转发请求?
你遇到的情况不是NLB无视健康检查结果转发请求,是配置不匹配+NLB故障开放机制共同导致的现象,具体原因如下:
1. 端口配置不匹配是健康检查失败的直接原因
你的端口配置如下:
- ALB开放端口:
HTTP 80HTTPS 444
- NLB监听端口:
TCP 80TCP 443
你观察到的HTTP目标组健康检查正常、HTTPS目标组健康检查失败,本质是因为HTTPS目标组的健康检查端口配置为443,而ALB根本没有开放443端口,健康检查请求自然无法得到正常响应,就会被判定为失败。
而你现在HTTPS业务能正常访问,是因为NLB的443监听转发规则配置正确,把流量转发到了ALB实际开放的444端口,业务流量的转发逻辑和健康检查的探测逻辑是相互独立的配置,互不影响。
2. NLB故障开放机制是业务未中断的核心原因
AWS NLB的健康检查逻辑有明确的故障开放规则:
当目标组内所有注册目标的健康检查都判定为失败时,NLB会默认进入故障开放模式,将请求转发给所有已注册的目标,无论其健康状态如何。
你的HTTPS目标组里只有ALB这一个目标,健康检查判定为失败后,就触发了故障开放规则,所以流量依然能正常转发到ALB,表现为业务访问正常。
修复方案
你只需要修改NLB对应HTTPS 443监听的目标组配置,将健康检查的端口从443改为ALB实际开放的444,健康检查状态就会恢复正常,故障开放模式也会自动退出。
内容的提问来源于stack exchange,提问作者codeaprendiz
相关产品推荐
相关产品推荐

