扩展 aws ecs 的正确方法

Correct way to scailing aws ecs

现在我正在构建 AWS ECS 基础设施。

为了自动缩放 in/out,我使用了自动缩放。

我的系统在 AWS ECS 上 运行ning(部署 docker-compose)

假设我们有 1 cluster1 service2 ec2 instance

如果 cpu 利用率高达 50%,我通过 CloudWatch 定义了扩展策略。

要自动缩放,我们必须将我们的策略应用于 ecs serviceautoscailing group

将 cloudwatch 策略附加到 ecs service 时,如果 cpu 利用率达到 50%,它会自动增加 task definition 计数。

将 cloudwatch 策略附加到 autoscailing group 时,如果 cpu 利用率达到 50%,它会自动增加 ec2 instance 计数。

经过测试,一切正常。

但是在我的service事件日志中,错误是这样出现的。

service v1 was unable to place a task because no container instance met all of its requirements. The closest matching container-instance 8bdf994d-9f73-42ec-8299-04b0c5e7fdd3 has insufficient memory available.

我认为这是因为服务扩展是在 ec2 实例扩展之前启动的。 (因为service scailing(scale in/out任务定义)需要ec2实例到运行而已)

但它工作正常。也许它会自动重试几次。 (我不确定)

我想知道,AWS ECS autoscailing 是正常配置吗?

或者,我的流程中有什么遗漏的地方吗?

谢谢。

ECS 只能在容器实例可用且符合容器 cpu/memory 要求的情况下安排服务。确保你有这个 space 可用以保证顺利的自动缩放。

ec2-asg 缩放应该在服务自动缩放之前进行,以确保容器实例可用于任务调度程序。