首页 > 解决方案 > 如何根据 ECS 集群资源的可用性来伸缩 EC2 实例?

问题描述

我的 ECS 集群中运行了多个服务。每个服务包含一个或多个基于 CPU 利用率或用户数量的任务。我已经使用 EC2 启动类型部署了这些容器。现在,我想根据集群中的可用资源增加/减少 EC2 实例的数量。假设有四个 ECS 任务在两个 m5.large 实例中运行。

现在,如果一个 ECS 服务增加了任务数量并且集群中没有足够的可用资源,我该如何启动一个实例并添加到集群中?

反之亦然。如果有实例运行,其中没有 ecs 任务,我怎样才能自动销毁它?

PS - 我正在使用 Fargate。由于它的成本非常高,我转向了 EC2 实例。

标签: amazon-web-servicesamazon-ec2containersamazon-ecs

解决方案


正如@Nitesh 所说,您需要在 ASG 中设置您的 ecs 集群实例,其次您需要根据关键指标设置 cloudwatch 警报,ecs 很复杂,因为您需要设置两个自动扩展策略,一个通过服务另一个扩展您的实例,对于 ec2,您可以使用的指标是集群 CPU 预留和/或集群内存预留。

该方案的工作原理是这样的,您的服务通过自动缩放规则使用您的服务的关键指标来增加所需容器的数量,例如 de CPU 使用率或负载均衡器中的请求数量,因此集群 CPU 预留增加这会触发cloudwatch 警报和您的 ASG 会增加实例数。

一些提示可以快速放大,而缩小速度可以通过设置警报时间来处理

对于容器,请使用 Service Auto Scaling 和 Target 跟踪策略以获取更多信息,请参阅

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html#cluster_reservation

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html

https://aws.amazon.com/blogs/compute/automatic-scaling-with-amazon-ecs/

我希望这有帮助

问候


推荐阅读