AWS应用负载均衡因ECS安全组配置错误致健康检查失败、容器143码退出的问询
适配ALB通信的ECS实例安全组配置方案
你之前测试时放开全量入站流量ALB就正常、仅保留80/443/SSH规则就健康检查失败的核心原因,是漏放了ALB实际访问ECS实例的目标端口段,完全不需要通过放开所有入站流量解决,按下面的规则配置即可:
必配的核心入站规则
所有规则的流量来源不要直接设置为0.0.0.0/0,统一指定为当前ALB关联的安全组ID,从网络层面实现最小权限暴露,避免业务端口直接对公网开放:
- 业务端口段适配规则:
- 如果ECS服务采用固定端口映射(容器服务直接绑定到ECS主机的80/443固定端口):配置入站允许来自ALB安全组的TCP 80、TCP 443流量即可。
- 如果ECS服务采用默认动态端口映射(容器端口自动映射到ECS主机32768-65535范围的随机临时端口,这是EC2启动类型ECS服务的默认配置):必须配置入站允许来自ALB安全组的TCP 32768-65535全段流量。这就是之前仅留80/443规则就失败的核心原因——ALB实际访问的是容器随机映射的动态端口,ECS的80端口根本没有部署你的应用,自然无法通过健康检查。
- 基础运维规则:
保留原有的TCP 22(SSH)入站规则,建议将来源限制为办公网IP段或堡垒机地址,不要泛开放行公网所有来源,降低SSH服务的暴露风险。
配置完成后的快速验证要点
两个关键检查项,避免规则配完还是不生效:
- 确认ALB关联的目标组健康检查端口设置为
流量端口(traffic port),不要固定写80/443,否则ALB会强制访问ECS实例的80端口,就算动态端口规则配置正确也会触发健康检查失败。- 链路校验:只要ALB能正常转发业务请求、目标组内的ECS实例状态变为健康,就不需要额外开放其他端口,不存在必须放行所有流量的情况。
内容的提问来源于stack exchange,提问作者vinod827
相关产品推荐
相关产品推荐

