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

pka*_*mol 1 amazon-web-services amazon-ecs aws-ecs

是 AWS 关于如何部署基于微服务的应用程序的介绍性指南ECS

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

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

据我了解,这也有助于在容器之间自动发现服务(docker-compose和 和 中的默认行为一样docker swarm);

问题在于,ECS 的扩展可能性是(除了EC2实例)每个ECS服务。

这是否意味着您不能进行容器级扩展?

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

use*_*510 7

不需要在同一任务定义中包含所有容器。从文档

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

另请注意,单个任务定义中仅限于 10 个容器定义,并且在每个任务定义中仅使用一个容器定义完全没问题。

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

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

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

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

还有应用架构的一些文档ECS这里,说明此项进一步。