amazon-web-services - 如何根据 ECS 集群资源可用性扩缩 EC2 实例?

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

我的 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/

相关文章:

mysql - "docker container run"至少需要 1 个参数

swift - 如何以编程方式在容器内实现 TableView?

java - AWS SDK - AmazonS3Client 不关闭

mysql - AWS RDS - 使用 GRANT ALL PRIVILEGES ON the_db.* TO 'the_user' @'%' 时拒绝管理员用户访问

mysql - 无法连接到在不同计算机上的容器上运行的远程 mySQL 数据库

amazon-web-services - Cloudformation Lambda函数,环境变量不可用,输入不可用

python - 是否有用于解析 AWS cron 字符串并将其转换为日历日期的 python 库?

java - 在 Elastic Beanstalk 上设置 G1GC 时出错

php - Codeigniter:无法找到模型