现在,我正在构建AWS ECS基础架构。
要自动放大/缩小,我使用了自动调整功能。
我的系统在AWS ECS上运行(以部署docker-compose)
假设我们有1 cluster
,1 service
和2 ec2 instance
。
如果cpu利用率高达50%,我通过CloudWatch
定义了失效策略。
要自动倾斜,我们必须将策略应用于ecs service
和autoscailing 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实例故障之前启动了服务故障而发生的。 (因为服务故障(扩展/扩展任务定义)需要使用ec2实例才能运行)
但是效果很好。也许它会自动重试几次。 (我不确定)
我想知道,这是AWS ECS自动调速的正常配置吗?
或者,我的流程中有什么遗漏之处?
谢谢。
答案 0 :(得分:0)
仅当可用的容器实例符合容器cpu /内存要求时,ECS才能调度服务。确保有可用空间以确保顺利进行自动缩放。
ec2-asg扩展应该在服务自动扩展之前进行,以确保容器实例可用于任务调度程序。