具有EC2计数的ECS自动迁移群集

时间:2019-01-28 09:12:33

标签: amazon-ecs autoscaling

要部署docker-compose,请使用AWS ECS。

一切正常,除了自动搜索。

创建ECS集群时,

enter image description here

我可以决定实例数。

因此我将其定义为1。

下一步,在我的集群上创建服务时,

还可以决定任务数。

我知道任务正在实例上运行,因此我将其定义为1。

enter image description here

并指定这样的自动调整策略。

enter image description here

您知道,如果cpu百分比在5分钟内达到50,它将自动添加任务。

所以完成配置,我运行基准测试。

在服务描述中,所需任务增加到2。

但是实例没有自动添加。

在事件日志中,

enter image description here

也许我在集群中将实例数定义为1,所以它无法启动新任务。

为什么自动搜寻无法在群集上自动添加新实例?

我的配置有问题吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您的ecs集群未自动扩展实例数量。它可以自动扩展在现有群集中运行的任务数量。一个ec2实例可以运行多个任务。要自动扩展实例计数,您将需要使用cloudwatch警报: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_alarm_autoscaling.html

由于ECS尝试使用“最匹配的容器实例”(在这种情况下是以9e5e结尾的实例)时的端口冲突,您会收到此问题。

尝试在该实例上启动任务时,它会注意到该实例“已在使用您的任务所需的端口”

为了解决此问题, 您需要为ECS群集使用动态端口。

Amazon在此处提供了有关如何执行此操作的教程: https://aws.amazon.com/premiumsupport/knowledge-center/dynamic-port-mapping-ecs/

基本上, 您将需要在任务定义中修改具有您要运行和扩展的Docker容器的端口映射。

主机端口的端口映射应该为0,然后应用程序用于容器端口的端口号。

零值将使运行的ECS集群中的每个docker实例对其主机端口使用不同的数字,从而消除了您遇到的端口冲突。