AWS Target Group为何会为同一个ECS任务注册2个target?
ECS任务在Target Group重复注册问题解决方案
常见根因
- ECS控制面隐性灰度更新:AWS部分区域近期推送的未公告ECS控制面小版本更新,修改了动态端口映射场景下的目标注册逻辑,会同时识别容器端口和动态分配的主机端口生成两个注册项。
- 端口映射双协议配置重复:如果任务定义的3000端口映射同时开启了TCP和UDP协议,Target Group仅配置单协议匹配的场景下,ECS会为两个协议分别生成独立的注册目标。
- 目标组类型配置不匹配:如果使用实例类型(instance)的目标组搭配动态端口映射,ECS会同时将实例IP+动态主机端口、容器ENI IP+容器端口两条记录注册到目标组。
- ECS代理版本bug:2023年9月之后发布的部分ECS优化版AMI内置的ecs-agent存在端口注册逻辑缺陷,会触发同任务重复上报注册信息。
排查步骤
- 执行aws cli命令核查任务定义的端口映射配置,确认仅存在单条指向3000端口的映射规则,且仅配置了单协议:
aws ecs describe-task-definition --task-definition <你的任务定义名称> --query 'taskDefinition.containerDefinitions[].portMappings' - 查看目标组的基本配置,确认目标类型为IP类型而非实例类型,端口配置为
traffic-port。 - 核查ECS集群实例上周的AMI更新记录,确认是否升级到了2023年9月之后发布的ECS优化版镜像。
修复方案
- 若存在双协议端口映射,删除UDP协议的同端口映射规则,重新部署服务即可自动清理重复目标。
- 若目标组为实例类型,切换为IP类型后重新部署服务即可解决。
- 若为ecs-agent版本问题,可先回滚到2023年9月前的稳定版ECS优化AMI临时修复,也可以在服务的负载均衡配置中显式指定
containerPort=3000,强制控制面仅注册容器端口对应的目标项。 - 若上述方案均无效,可在AWS后台提交支持工单,请求后端清除异常注册的脏数据,同时申请将你的账号移出对应灰度更新的范围。
内容的提问来源于stack exchange,提问作者walexnelson
相关产品推荐
相关产品推荐

