Amazon web services 自动将ECS群集扩展到零实例/从零实例扩展到零实例

Amazon web services 自动将ECS群集扩展到零实例/从零实例扩展到零实例,amazon-web-services,autoscaling,amazon-ecs,Amazon Web Services,Autoscaling,Amazon Ecs,我已经使用SQS和ECS实现了这个功能。工作描述被推送到SQS队列进行处理。作业处理在运行ECS Docker任务的自动扩展组内的ECS群集上运行 每个ECS任务都有: 从SQS队列读取消息 对数据执行作业(约1小时) 删除消息 当有更多消息时循环 我希望在每个实例没有更多工作时缩小集群,最终缩小到零个实例 综上所述,答案表明,需要在ASG之外以某种方式处理规模问题。实例将通过显式自终止或在没有更多消息时关闭ASG实例保护来自伸缩 这也不能处理在单个实例上运行多个ECS任务的情况,因为如果其他任

我已经使用SQS和ECS实现了这个功能。工作描述被推送到SQS队列进行处理。作业处理在运行ECS Docker任务的自动扩展组内的ECS群集上运行

每个ECS任务都有:

  • 从SQS队列读取消息
  • 对数据执行作业(约1小时)
  • 删除消息
  • 当有更多消息时循环
  • 我希望在每个实例没有更多工作时缩小集群,最终缩小到零个实例

    综上所述,答案表明,需要在ASG之外以某种方式处理规模问题。实例将通过显式自终止或在没有更多消息时关闭ASG实例保护来自伸缩

    这也不能处理在单个实例上运行多个ECS任务的情况,因为如果其他任务并行运行,单个任务不应该终止

    我是否仅限于在中进行自我扩展,并且每个实例只有一个任务?是否只有在一个实例上的所有ECS任务退出后才终止?其他可供选择的缩放吗?

    您可以使用CloudWatch:

    检测并终止已空闲一段时间的工作实例

    我最终使用了:

    • 一种扩展策略,添加与挂起的SQS队列消息相同数量的实例
    • 策略中的一种比例,一旦SQS队列为空,该比例将设置为零实例
    • 在批处理作业开始时启用ASG实例保护,并在结束时禁用

    这限制了我每个实例只能执行一个批处理作业,但在我的场景中效果很好。

    解决此问题的另一个解决方案是2016年底宣布的AWS批处理服务。

    您能否检查实例是否正在执行作业,并在实例上安装了简单的应用程序?例如,通过获取CPU/内存利用率?