如何根据ECS群集资源可用性扩展/扩展EC2实例?

时间:2018-10-09 11:58:23

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

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

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

反之亦然。如果其中运行的实例中没有ecs任务,该如何自动销毁它?

PS-我正在使用Fargate。由于成本很高,因此我移至EC2实例。

1 个答案:

答案 0 :(得分:0)

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

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

一些技巧可以快速扩展,而缓慢扩展可以通过设置警报时间来解决

对于容器,请使用服务自动缩放和目标跟踪策略以获取更多信息,请参阅

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/

我希望这个帮助

致谢