首页 > 解决方案 > ELB目标组-ECS启动任务时不会自动添加目标

问题描述

我有一个带有两个 EC2 实例的 UAT ECS 集群。我有一项服务(在同一个集群内),它的 Desired Task = 1 (因此它在两个 EC2 实例中的任何一个上运行)。我有一个具有健康实例的 ELB 和目标组。

问题:每当部署发生时,正在运行的任务就会停止,新任务会在另一个 EC2 实例中启动。这不会相应地更新目标组。因此,每次部署后,目标组都会持有先前运行状况不佳的 EC2 目标,该目标在部署之前运行任务。

这是 AWS 的预期行为吗?有什么建议可以绕过我每次部署后采取的手动操作吗?

标签: amazon-web-servicesamazon-ec2devopsamazon-elbamazon-ecs

解决方案


这绝对不是预期的行为。您是否在 ECS 服务上设置了负载均衡?

例如,如果我使用 CLI 来描述服务:

$ aws ecs describe-services --services <serviceName> --cluster <clusterName>
{
    "services": [
        // a bunch of stuff
        "loadBalancers": [
            {
                "containerName": <container name>,
                "targetGroupArn": <ELB Target Group ARN>
                "containerPort": <container port number>
            }
        ]
        // more stuff here
    ]
}

有了这个,每次 ECS 启动新任务或删除现有任务时,负载均衡器目标组都会更新。

如果您在创建服务时没有配置负载均衡器,很遗憾您无法在事后更新该部分服务。您所能做的就是创建一项新服务并删除旧服务。


推荐阅读