具有 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 实例为其主机端口使用不同的数字,从而消除您遇到的端口冲突。
为了部署我的 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 实例为其主机端口使用不同的数字,从而消除您遇到的端口冲突。