我的 ECS 集群中运行着多项服务。每个服务包含一个或多个基于 CPU 利用率或用户数量的任务。
我已经使用 EC2 启动类型部署了这些容器。
现在,我想根据集群中的可用资源增加/减少 EC2 实例的数量。
假设有四个 ECS 任务在两个 m5.large 实例中运行。
现在,如果 ECS 服务增加了任务数量并且集群中没有足够的可用资源,我该如何启动实例并将其添加到集群中?
反之亦然。如果运行的实例中没有 ecs 任务,如何自动销毁它?
PS - 我使用的是 Fargate。由于它的成本非常高,我搬到了 EC2 实例。
最佳答案
正如@Nitesh 所说,您需要在 ASG 中设置您的 ecs 集群实例,其次您需要根据关键指标设置一个 cloudwatch 警报,使用 ecs 很复杂,因为您需要设置两个自动缩放策略,一个为另一个提供服务扩展您的实例,对于 ec2,您可以使用的指标是集群 CPU 预留和/或集群内存预留。
该方案是这样工作的,您的服务通过使用您服务的关键指标的自动缩放规则增加所需容器的数量,可能是 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/
我希望这有帮助
问候
关于amazon-web-services - 如何根据 ECS 集群资源可用性扩缩 EC2 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720556/