如何在AWS ECS中扩展任务/容器

时间:2018-08-28 13:57:49

标签: amazon-web-services amazon-ecs aws-ecs

This是AWS的入门指南,介绍如何在ECS

上部署基于微服务的应用程序

显然(从文档中也可以明显看出),所谓的任务定义应包含构成堆栈的所有容器的所有

即如果您对应的docker-compose.yml文件是由5 services组成(在docker compose上下文中),则这些文件都应以相同 ECS任务定义(?)结尾。

据我了解,这还可以在容器之间自动发现服务(例如docker-composedocker swarm中的默认行为);

问题在于,关于ECS的扩展可能性是(EC2个服务除外)(ECS个服务)。

这是否意味着您无法进行容器级缩放?

如果我想扩展服务规模,我必须在所谓的堆栈中扩展所有容器吗?

2 个答案:

答案 0 :(得分:2)

不需要不需要将所有容器都放在相同的任务定义中。来自docs

  

您的整个应用程序堆栈无需在单个任务上存在   定义,在大多数情况下不应该。您的应用程序可以跨越   通过将相关容器合并到多个任务定义中   自己的任务定义,每个任务定义代表一个组件。

另外,请注意,单个任务定义中最多只能有10个容器定义,并且在每个任务定义中仅使用一个容器定义是完全可以的。

关于扩展,您可以为每个任务定义创建服务。这使堆栈中逻辑上分离的组件可以独立扩展。例如,如果您有2个服务,其中一个用于后端api服务,另一个用于前端nginx,则可以为它们创建2个单独的任务定义,每个服务都独立扩展。

将容器定义分组为单个任务定义的可能原因:

  • 它们有一个逻辑目的或共享一个生命周期(一起开始和结束)。
  • 您想一起缩放它们。
  • 您希望容器共享诸如数据量之类的资源。
  • 这些容器需要在同一主机实例上运行,并执行诸如通过localhost进行通信之类的事情。

另一方面,如果容器执行单独的逻辑功能,独立扩展,不共享生命周期或资源(例如卷),则最好使用多个任务定义/服务。

还有一些有关ECS here的应用程序体系结构的文档,对此进行了进一步说明。

答案 1 :(得分:0)

好吧,ECS仅缩放任务,任务内部没有容器,如果要缩放任务内部的容器,则必须缩放所有容器的任务。您必须为每个服务创建一个任务。请记住,AWS认为您只想使用一个简单的应用程序来运行任务,该应用程序使用RDS中的数据库服务以及它可以使用在AWS基础架构中分配的任何服务。