Auto-Scaling 移除 ECS 服务中正在运行的任务 (FARGATE)
Posted
技术标签:
【中文标题】Auto-Scaling 移除 ECS 服务中正在运行的任务 (FARGATE)【英文标题】:Auto-Scaling removes running task in ECS service (FARGATE) 【发布时间】:2019-08-22 15:22:36 【问题描述】:我正在 AWS 上使用 Fargate 运行 ecs 服务。那里的每个任务完成一个操作并终止(从 SQS 队列中获取消息并解码/编码视频文件)。现在我设计了一个如下所示的自动缩放策略,
-
如果 SQS 队列大小大于 5,则将所需计数增加到 1(每 60 秒重复一次)。
如果 SQS 队列大小小于 2,则将所需计数减为 1(每 60 秒重复一次)。
但是 AWS 所做的是,当队列大小低于 2 时,它会杀死正在运行的任务,从而使相应的操作“中断”。我不希望 AWS 终止正在运行的任务(因为它们会在命令完成后的某个时间自动死亡),而只是将所需的计数设置为 0,这样任务就不会“重生”。所以从字面上看,我希望我的任务在自动缩放期间是不可阻挡的。
如何在 ECS 服务和 aws_ecs_autoscaling_target 中实现这一点。请注意,我正在使用 terraform 来提供服务。
提前致谢。
【问题讨论】:
您是否查看过自动缩放冷却时间?将其设置为 60 秒,那么无论如何,在 60 秒的最小间隔内不会删除超过 1 个任务。如果期望的计数为 0,它可能会成功。 David J Eddy 问题在于,有时运行时间是不确定的。这可能需要更多时间。 :( 【参考方案1】:我不得不用不同的方法解决这个问题。我必须创建一个由 cloudwatch 警报触发的小型 Lambda 函数,并使用 StartTask 启动 Fargate 任务。这个工作流程非常适合这里而不是使用自动缩放策略。
【讨论】:
我也遇到了同样的问题,你能帮我解决一下吗?即使处于运行状态,我的任务也会被破坏 我也有类似的问题,你能分享一下你的解决方案吗?以上是关于Auto-Scaling 移除 ECS 服务中正在运行的任务 (FARGATE)的主要内容,如果未能解决你的问题,请参考以下文章
Ansible:将正在运行的 EC2 实例添加到 Auto-scaling 组