具有 EC2 计数的 ECS 自动缩放集群

ECS auto scailing cluster with ec2 count

为了部署我的 docker-compose,我使用 AWS ECS。

一切正常,除了自动缩放。

创建ECS集群时,

我可以决定实例数。

所以我定义为1.

接下来,在我的集群上创建服务时,

也可以决定任务的数量。

我知道任务 运行ning 在实例上,所以我将其定义为 1。

并像这样指定自动缩放策略。

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

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

在服务描述中,期望的任务增加到2。

但是实例没有自动添加。

在事件日志中,

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

为什么自动缩放不会自动在我的集群上添加新实例?

我的配置有问题吗?

谢谢。

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

您收到此问题是因为 ECS 尝试使用 "closest matching container instance" 时发生端口冲突,在这种情况下,"closest matching container instance" 以 9e5e 结尾。

当尝试在该实例上启动任务时,它注意到该实例 "is already using a port required by your task"

为了解决这个问题, 您需要为 ECS 集群使用动态移植。

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

本质上, 您将需要修改任务定义中的端口映射,该任务定义具有您尝试 运行 和缩放的 docker 容器。

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

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