AWS ECS是否支持每个容器的动态可扩展性?

时间:2015-04-19 23:17:31

标签: amazon-web-services amazon-ec2 docker

亚马逊的EC2 Container Service允许您运行任何数量的容器,它将选择一个EC2实例来自动运行容器。哪些是很棒的功能。但是,我们非常关注自动扩展性

情景:

  1. 我通过AWS ECS控制台启动容器。
  2. HTTP请求开始出现。
  3. HTTP负载随时间显着增加。
  4. 容器的CPU(或RAM)使用率接近100%。
  5. 问题1:ECS会再运行一个容器自动吗?

    问题2:当CPU(或RAM)负载变低时,ECS是否会自动关闭其中一个容器?<​​/ p>

4 个答案:

答案 0 :(得分:2)

不,您不能通过基本ECS实现全自动扩展。您可以做的是为负载变高时创建一个警报,并使警报触发更新以增加集群大小。

2017年11月29日更新

  

AWS Fargate是适用于Amazon ECS和EKS *的技术   运行容器而无需管理服务器或集群。使用AWS   Fargate,您不再需要进行配置,配置和扩展   用于运行容器的虚拟机集群。

这允许扩展容器,而无需担心使用ECS服务级别扩展配置的基础设施。

答案 1 :(得分:1)

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

如果您使用的是ASG,可以在ASG上配置基于cloudwatch闹钟的ec2缩放。

对于容器缩放,您必须编写lambda函数或具有某种应用程序,可以在cloudwatch警报上触发,以便进行缩放。

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

请参阅下面的发布和功能文档

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

答案 2 :(得分:0)

所以它没有明确说明,纳撒尼尔肯定是正确的,但this blog from April 9th今年似乎暗示至少你可以做你想要的事情

  

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

     

随着今天的发布,您还可以使用新的Amazon ECS服务   调度程序来管理长时间运行的应用程序和服务。该   服务计划程序可帮助您维护应用程序可用性   允许您向上或向下扩展容器以满足您的需求   应用程序的容量要求。以下是它为您做的事情:

     

负载平衡 - 服务调度程序允许您分发   使用Elastic Load Balancing跨容器的流量。亚马逊   ECS将自动注册和注销您的容器   相关的负载均衡器。健康管理 - 服务   scheduler还会自动恢复成为的容器   不健康(ELB健康检查失败)或停止运行以确保这一点   您可以运行所需数量的健康容器   你的申请。放大和缩小 - 您可以扩展您的   通过更改所需容器的数量来上下应用程序   要运行的服务。更新管理 - 您可以更新您的   应用程序通过更改其定义或使用新图像。该   scheduler将使用new自动启动新容器   定义和停止运行先前版本的容器。它会   如果使用ELB,则等待ELB连接耗尽。你也可以使用   这些新设施实现了基本的服务发现模型。您   可以列出群集中运行的服务,然后使用   ELB作为服务端点。

答案 3 :(得分:0)

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

  

AWS Fargate可以轻松扩展您的应用程序。您不再需要担心为容器应用程序配置足够的计算资源。在定义应用程序要求(例如,CPU,内存等)之后,AWS Fargate将以高度可用的方式管理运行容器所需的所有扩展和基础结构。您不再需要决定何时扩展群集或将其打包以获得最佳利用率

我认为粗体文字意味着Fargate将为我扩展上下资源。不过100%肯定。