使用ECS动态端口映射时目标组80端口健康检查失败且不断新建实例
问题根因
你配置错误的核心原因是自动扩缩容组(ASG)直接绑定了ECS服务使用的目标组:
- 你在
aws_autoscaling_group资源中声明了target_group_arns参数,ASG启动EC2实例后,会自动以目标组配置的默认端口80,将实例直接注册到目标组,这就是80端口异常目标出现的来源。 - ECS动态端口映射场景下,目标组的实例注册逻辑应该完全由ECS服务负责:ECS将容器调度到实例上后,会自动把容器绑定的32768-65535区间临时端口作为目标注册到目标组,不需要ASG参与注册动作。
修复方案
- 修改Terraform中
aws_autoscaling_group资源的配置,删除target_group_arns = [aws_lb_target_group.default.arn]这一行,重新apply生效。 - 确认你的ECS服务配置中已正确绑定该目标组,且对应任务定义的端口映射参数中
hostPort设置为0(这是触发动态端口分配的必要配置)。 - 手动清理目标组中已存在的80端口异常注册目标即可。
你的目标组健康检查配置中port = "traffic-port"是正确的,该配置会让健康检查请求发往实际注册的临时端口,无需调整。
内容的提问来源于stack exchange,提问作者Georgi Koemdzhiev
相关产品推荐
相关产品推荐

