AWS ECS是否支持每个容器的dynamic可伸缩性?

Amazon的EC2容器服务允许您运行任意数量的容器,它将select一个EC2实例自动运行容器。 哪些是很棒的function 但是,我们真的关心自动可伸缩性

场景:

  1. 我通过AWS ECS控制台启动容器。
  2. HTTP请求正在开始。
  3. HTTP负载随着时间显着增加。
  4. 容器的CPU(或RAM)使用率正在接近100%。

问题1:ECS会自动运行一个容器吗?

问题2:当CPU(或RAM)负载变低时,ECS会自动closures其中一个容器吗?

不,您不能使用基本的ECS进行全自动缩放。 你可以做什么是创build一个警报,当负载变高,并有警报触发更新,以增加群集大小。

2017年11月29日更新

AWS Fargate是Amazon ECS和EKS *的一项技术,可让您无需pipe理服务器或群集即可运行容器。 借助AWS Fargate,您不再需要调配,configuration和扩展虚拟机群集来运行容器。

这样可以扩展容器,而无需担心在使用ECS服务级别缩放configuration的基础架构下面。

理想情况下,您应该在ec2和ecscontainer层面进行缩放。

如果您使用的是ASG,则可以在ASG上configuration基于cloudwatch告警的ec2扩展。

对于容器缩放,您将不得不编写一个lambda函数,或者有一些可以在cloudwatch警报上触发的应用程序,以便进行缩放。


2016年5月18日,ECS发布了自动缩放function。 您不需要Lambda在服务级别构build扩展function。

请参阅下面的版本和function文档

https://aws.amazon.com/about-aws/whats-new/2016/05/amazon-ec2-container-service-supports-automatic-service-scaling/

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

所以它没有这么明确地expression出来,纳撒尼尔肯定是正确的,但是今年4月9日这个博客似乎暗示至less你可以做你所问的

长时间运行的应用程序以前,Amazon ECS包括两种在集群上调度Docker容器的方法。 您可以为进程执行任务一次,例如执行工作的批处理作业,然后停止。 您也可以调用Amazon ECS API来检索有关群集的状态信息,然后使用它来为第三方或自定义编写的调度程序供电。

在今天推出之后,您还可以使用新的Amazon ECS服务调度程序来pipe理长时间运行的应用程序和服务。 服务调度程序可帮助您维护应用程序可用性,并允许您上下调整容器以满足应用程序的容量需求。 这是它为你做的:

负载平衡 – 服务调度程序允许您使用Elastic Load Balancing在您的容器之间分配stream量。 Amazon ECS将自动从关联的负载均衡器注册和取消注册您的容器。 健康pipe理 – 服务计划程序还会自动恢复变得不健康的容器(失败的ELB运行状况检查)或停止运行,以确保您拥有所需数量的健康容器可用来运行您的应用程序。 向上扩展和向下扩展 – 您可以通过更改希望服务运行的容器数量来缩放您的应用程序。 更新pipe理 – 您可以更改您的应用程序,通过更改其定义或使用新的图像。 调度程序将使用新定义自动启动新容器,并停止运行以前版本的容器。 如果使用ELB,它将等待ELB连接消失。 您还可以使用这些新function来实现基本的服务发现模型。 您可以列出群集中运行的服务,然后使用ELB作为服务端点。

截至2017年12月,亚马逊宣布推出名为Fargate的新服务。 引用链接:

AWS Fargate可以轻松扩展您的应用程序。 您不再需要为您的容器应用程序提供足够的计算资源。 定义应用程序需求(例如,CPU,内存等)后,AWS Fargate以高可用方式pipe理运行容器所需的所有扩展和基础架构。 您不再需要决定何时扩展您的群集或将其打包以实现最佳利用率

我认为大胆的文本意味着Fargate会为我提供资源。 不是100%确定。