AWS ECS ALB请求超时问题:目标组内ECS实例不健康
排查ECS服务稳定后目标组实例健康检查超时问题
从你描述的情况来看,之前负载均衡对接EC2正常,切换到ECS后出现动态端口实例健康检查超时,大概率是ECS动态端口特性和原有负载均衡/目标组配置不匹配,或者网络层面的细微差异导致的。我整理了几个优先排查的方向:
先核对健康检查的端口配置:ECS任务默认用动态主机端口(比如你看到的32768),如果目标组还是沿用之前EC2的固定端口配置,健康检查肯定会失败。你需要确认目标组的健康检查端口是否设置为
traffic-port(即和流量转发用同一个端口),而不是固定数值。另外,健康检查的协议、路径要和容器内应用的实际情况匹配——比如应用是不是在/health路径返回200,而不是默认的根路径?验证实例本身的应用可用性:登录到那个异常的ECS实例
i-05873e2a55ecba2f6,直接在主机上执行curl localhost:32768(加上你的健康检查路径),看看应用能不能正常响应。如果这里就超时或者返回错误码,那问题出在容器应用本身,比如容器没启动成功、应用监听端口不对,或者内部依赖没就绪。检查安全组和网络ACL的规则:默认VPC的子网虽然配置了,但要确保:
- 负载均衡的安全组允许出站访问ECS实例的动态端口范围(通常是32768-65535);
- ECS实例的安全组允许入站来自负载均衡安全组的流量(端口范围同样要覆盖动态端口);
- 子网的网络ACL没有限制负载均衡到实例的入站/出站流量,比如有没有拒绝TCP 32768的规则?
核对ECS服务和任务定义的配置:
- 任务定义里的容器端口映射是不是把容器内的应用端口映射到了主机的
0(即动态端口)?如果误设成固定端口,可能会有冲突,但这里是动态端口,主要确认容器内应用确实在监听指定的端口; - ECS服务的负载均衡配置是不是正确关联了目标组?比如目标组的协议(HTTP/HTTPS)要和任务定义里的容器协议一致,不能出现任务用HTTP但目标组设成HTTPS的情况。
- 任务定义里的容器端口映射是不是把容器内的应用端口映射到了主机的
查看目标组的健康检查日志:AWS控制台的目标组详情里,「健康检查」标签页会有具体的失败原因——是连接超时、连接被拒绝,还是返回了非200的状态码?这个日志能直接帮你缩小问题范围,比如超时大概率是网络问题,拒绝连接可能是端口不对或者应用没起来。
内容的提问来源于stack exchange,提问作者connorvo
相关产品推荐
相关产品推荐

