Network Load Balancer异常:ECS后端服务ELB健康检查失败求助
问题排查要点
以下是导致NLB目标组健康检查失败的常见原因及排查方向:
目标组健康检查配置不匹配
NLB采用四层TCP健康检查,需确认:- 健康检查端口是否与BackEnd容器实际监听的端口一致?如果ECS任务用了端口映射(bridge模式),目标组健康检查端口要设为EC2主机上的映射端口,而非容器内部的8080。
- 可在ECS主机上执行
nc -zv localhost <映射端口>,测试容器端口是否能正常建立TCP连接。
安全组规则遗漏
仅开放EC2安全组的8080不够,需补充:- NLB的安全组需允许出站访问EC2实例的目标端口
- EC2实例的安全组需允许来自NLB安全组的入站流量(限定来源为NLB安全组,而非开放所有IP)
如果ECS任务配置了任务级安全组,该安全组也要允许NLB的访问。
ECS任务网络模式与端口映射错误
- 若用
host网络模式:需确保EC2主机的8080端口未被其他进程占用,且BackEnd容器确实在8080端口监听。 - 若用
bridge网络模式:需确认任务定义中的端口映射规则正确(容器8080 → 主机端口),目标组的目标端口要对应主机端口。
- 若用
目标组目标类型选择错误
针对ECS服务,目标组的目标类型优先选IP而非实例。因为同一EC2实例可能运行多个BackEnd任务,选IP可直接指向容器私有IP,避免NLB将流量打到EC2实例的错误端口。BackEnd服务自身启动失败
查看ECS任务的容器日志,执行docker logs <容器ID>,确认BackEnd服务是否正常启动、是否有端口绑定失败等报错。
内容的提问来源于stack exchange,提问作者heq
相关产品推荐
相关产品推荐

