【问题标题】:How to scale in/out EC2 instances based on ECS cluster resources availability?如何根据 ECS 集群资源的可用性来伸缩 EC2 实例?
【发布时间】:2019-03-14 04:54:03
【问题描述】:

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

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

反之亦然。如果有实例在运行,没有ecs任务,如何自动销毁?

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

【问题讨论】:

  • 您需要使用 ASG 来控制您的 ECS 集群中的 EC2 实例。您可以根据 CPU、内存等来扩大/缩小这些规模。
  • 我不想根据 CPU 或内存进行放大/缩小。因为在某些情况下 CPU 使用率或内存使用率并不高,我仍然需要增加服务中的任务数。

标签: amazon-web-services amazon-ec2 containers amazon-ecs


【解决方案1】:

您需要像@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/

希望对你有帮助

问候

【讨论】:

  • 感谢您的回答。但这里的事情是我不想根据 CPU 利用率或内存利用率来扩大/缩小。在某些情况下,无论 CPU 使用率或内存使用率如何,服务中的任务数量都会增加。
  • ASG 的指标是 CPU/内存预留而不是使用情况,如果分配的任务更多,这个数字会增加
  • 好的。知道了。让我试试看。
猜你喜欢
  • 1970-01-01
  • 2016-07-27
  • 2021-12-02
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2019-02-24
  • 1970-01-01
相关资源
最近更新 更多