ECS 弹性伸缩:缩容

Posted

技术标签:

【中文标题】ECS 弹性伸缩:缩容【英文标题】:ECS auto scaling: scale down 【发布时间】:2021-09-01 00:09:33 【问题描述】:

我正在为 ECS 配置自动扩展,并且想知道在缩减期间,如果正在关闭的任务有一个容器化服务几乎没有要处理的请求,这些请求会被处理还是会被处理?任务被立即删除?

任何答案或指向正确的 AWS 文档都会很有帮助。

谢谢。

【问题讨论】:

您是否将 ECS 与 AWS ALB/目标组组合使用?如果是,请检查target group deregistration delay。您可以配置这个时间,在您的任务将停止之前。在取消注册期间,不会再向您的任务添加新连接,这样可以确保现有请求有足够的时间来处理。 非常感谢@AlinAndrei,您的建议有助于我在实际部署中验证相同的内容,然后再回复。 @AlinAndrei 我在验证时遇到了一个后续问题。由于我在 EC2 托管模式下使用 ECS 并且还为 EC2 设置了自动缩放,我试图了解如果 EC2 实例缩小并且有活动任务在其上运行或不会发生这种情况会发生什么? 来自 AWS 文档:Amazon ECS 集群 Auto Scaling 使您能够更好地控制如何扩展集群中的 Amazon EC2 实例。创建启用了托管扩展的 Auto Scaling 组容量提供程序时,Amazon ECS 管理创建容量提供程序时使用的 Auto Scaling 组的缩减和扩展操作。 Amazon ECS 代表您创建 AWS Auto Scaling 扩展计划,其中包含基于您指定的目标容量值的目标跟踪扩展策略。 只要按照上面提到的,你就不用担心伸缩操作了,因为ECS管理EC2自动伸缩组。更多信息here 【参考方案1】:

检查this。

当任务停止时,会向每个容器的入口进程发送一个 SIGTERM 信号,通常是 PID 1。超时后,进程将收到一个 SIGKILL 信号。默认情况下,在 SIGTERM 和 SIGKILL 信号的传递之间有一个30 second delay。该值可以通过更新 ECS 任务参数 stopTimeout 来调整,或者通过设置 ECS 代理环境变量 ECS_CONTAINER_STOP_TIMEOUT 来调整 EC2 容器实例。在超时到期之前未退出的进程将在收到 SIGKILL 信号后突然终止。

默认情况下,它会等待进程死亡,直到 30 秒。

【讨论】:

好的,我对此还有一个问题。由于我在 EC2 托管模式下使用 ECS 并且还为 EC2 设置了自动缩放,我试图了解如果 EC2 实例缩小并且有活动任务在其上运行或不会发生这种情况会发生什么? 和以前一样。它会等待一段时间,如果任务没有正确终止,那么它会强制终止并终止实例,我认为。

以上是关于ECS 弹性伸缩:缩容的主要内容,如果未能解决你的问题,请参考以下文章

阿里云ACP笔记-弹性伸缩

高可用之弹性伸缩

弹性伸缩Auto Scaling

如何使用 SDK 为 ecs 服务的弹性伸缩策略设置最小和最大任务?

阿里云云计算 31在线实验--弹性伸缩(AS)初体验

k8s弹性伸缩概念以及测试用例