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

问题描述 投票:1回答:2

This是AWS的入门指南,介绍如何在ECS上部署基于微服务的应用程序

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

即如果你的相应docker-compose.yml文件是由5个services(在docker compose上下文中)组成的,那么这些文件应该都在同一个ECS任务定义(?)中。

据我所知,这也有助于在容器之间自动发现服务(这是docker-composedocker swarm中的默认行为);

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

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

如果我想要一个服务规模,我将不得不在我所谓的堆栈中扩展所有容器?

amazon-web-services amazon-ecs aws-ecs
2个回答
2
投票

您不需要在同一任务定义中包含所有容器。来自docs

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

另请注意,您在一个任务定义中限制为10个容器定义,并且在每个任务定义中仅使用一个容器定义是完全正确的。

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

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

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

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

还有一些关于ECS here的应用程序架构的文档,这进一步解释了这一点。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.