【发布时间】:2017-02-28 15:01:40
【问题描述】:
我已经使用 SQS 和 ECS 实现了Job Observer Pattern。职位描述被推送到 SQS 队列进行处理。作业处理在运行 ECS Docker 任务的 Auto-Scaling 组内的 ECS 集群上运行。
每个 ECS 任务都会:
- 从 SQS 队列中读取消息
- 对数据执行作业(约 1 小时)
- 删除消息
- 有更多消息时循环
当每个实例没有更多工作时,我想缩小集群,最终减少到零个实例。
查看this similar post,答案表明需要在 ASG 之外以某种方式处理缩减。实例将通过显式自行终止或在没有更多消息时关闭 ASG 实例保护来自我缩减。
这也不处理在单个实例上运行多个 ECS 任务的情况,因为如果其他任务并行运行,单个任务不应终止。
我是否仅限于自我缩减并且每个实例只有一个任务?有什么方法可以仅在实例上的所有 ECS 任务退出后终止?是否还有其他可缩小的替代方案?
【问题讨论】:
-
您能否检查实例是否正在执行作业,并在您的实例上安装了一个简单的应用程序?例如通过获取 CPU/内存利用率?
标签: amazon-web-services autoscaling amazon-ecs