我有一个集群,比方说my-cluster。它有两个服务在运行。让我们称它们为my-services。每个服务都有1个任务在运行。my-task1和my-task2。
自动伸缩组启动2个EC2实例,启动EC2实例。我正在使用应用程序负载均衡器。
当我创建服务时,我选择了AZ-balance- Learn,它的描述是:“此模板将跨可用区和在可用区内分布任务跨实例分布任务。了解更多。策略:扩展(属性:ecs.ailability- zone ),扩展(InstanceId)”
我的EC2实例位于不同的可用区。但是,当我单击my-cluster并选择ECS-instances选项卡时,我看到两个任务都在一个容器实例上运行。另一个容器实例显示0个任务正在运行。
我期望有2个容器实例,每个实例都有一个任务在运行。
我的问题是,如果我选择了AZ-平衡-分散,这些任务不应该分散在两个独立的AZ上的EC2实例中吗?
我想设置它,这样所有的任务都分散在AZ之间,所以如果一个实例停止,另一个AZ中的另一个任务仍然在运行。但我似乎想不出该怎么做。也就是说,如果我创建了4个任务,它会将它们分散到两个实例中。一个任务2个任务,另一个任务2个任务。但是当我只有两个任务时,它会把它们都放在一个EC2实例中。
非常感谢您在解开这个谜团方面的帮助!
谢谢!
发布于 2019-02-07 19:51:56
这是亚马逊没有让它完美工作的东西。我找到的最好的解决方法是将放置策略配置为在ec2之间随机传播。问题是,所有的放置策略都是在每个服务中设置的,所以如果我们配置为使用InstanceID传播,此服务中的任务将使用此设置,但其他服务不使用此信息并使用相同的策略传播,在相同的InstanceID中启动(可能是因为编号顺序)。
因此,我已经将所有服务配置为随机的,如果这些服务是可伸缩的,这不是一个好方法,但在我的例子中,我有24个服务,每个服务只有1个任务。使用随机策略,它们在所有集群实例之间传播。
"placementStrategy": [
{
"type": "random"
}
]

https://stackoverflow.com/questions/45106394
复制相似问题