This是AWS的入门指南,介绍如何在ECS
显然(从文档中也可以明显看出),所谓的任务定义应包含构成堆栈的所有容器的所有。
即如果您对应的docker-compose.yml
文件是由5 services
组成(在docker compose上下文中),则这些文件都应以相同 ECS任务定义(?)结尾。>
据我了解,这还可以在容器之间自动发现服务(例如docker-compose
和docker swarm
中的默认行为);
问题在于,关于ECS的扩展可能性是(EC2
个服务除外)(ECS
个服务)。
这是否意味着您无法进行容器级缩放?
如果我想扩展服务规模,我必须在所谓的堆栈中扩展所有容器吗?
答案 0 :(得分:2)
不需要不需要将所有容器都放在相同的任务定义中。来自docs:
您的整个应用程序堆栈无需在单个任务上存在 定义,在大多数情况下不应该。您的应用程序可以跨越 通过将相关容器合并到多个任务定义中 自己的任务定义,每个任务定义代表一个组件。
另外,请注意,单个任务定义中最多只能有10个容器定义,并且在每个任务定义中仅使用一个容器定义是完全可以的。
关于扩展,您可以为每个任务定义创建服务。这使堆栈中逻辑上分离的组件可以独立扩展。例如,如果您有2个服务,其中一个用于后端api服务,另一个用于前端nginx,则可以为它们创建2个单独的任务定义,每个服务都独立扩展。
将容器定义分组为单个任务定义的可能原因:
另一方面,如果容器执行单独的逻辑功能,独立扩展,不共享生命周期或资源(例如卷),则最好使用多个任务定义/服务。
还有一些有关ECS here的应用程序体系结构的文档,对此进行了进一步说明。
答案 1 :(得分:0)
好吧,ECS仅缩放任务,任务内部没有容器,如果要缩放任务内部的容器,则必须缩放所有容器的任务。您必须为每个服务创建一个任务。请记住,AWS认为您只想使用一个简单的应用程序来运行任务,该应用程序使用RDS中的数据库服务以及它可以使用在AWS基础架构中分配的任何服务。