这是AWS关于如何在ECS
上部署基于微服务的应用程序的介绍性指南。
显然(从文档中也可以看出),所谓的任务定义应该包含组成堆栈的容器的所有。
也就是说,如果您的相应docker-compose.yml
文件是由5个services
(在停靠器组成上下文中)组成的,那么这些文件都应该在相同的任务定义(?)中结束。
据我所知,这也有助于在容器中自动发现服务(这是docker-compose
和docker swarm
中的默认行为);
问题在于,当涉及到ECS时,扩展的可能性是每个EC2
服务(除了ECS
实例)。
这是否意味着您不能进行容器级的扩展?
如果我想要一个服务规模,我就必须在我所谓的堆栈中缩放我的容器的所有?
发布于 2018-08-30 08:37:50
您的不需要具有相同任务定义中的所有容器。来自文档
--您的整个应用程序堆栈不需要存在于单个任务定义上,而且在大多数情况下不应该存在。您的应用程序可以跨多个任务定义,方法是将相关容器组合到它们自己的任务定义中,每个定义代表一个组件。
另外,请注意,在单个任务定义中只使用10个容器定义,在每个任务定义中只使用一个容器定义是非常好的。
至于缩放,您可以为每个任务定义创建一个服务。这允许堆栈中逻辑上分离的组件独立扩展。例如,如果您有两个服务,一个用于后端api服务,另一个用于前端nginx,则可以为它们创建两个单独的任务定义,每个服务独立地进行扩展。
将容器定义分组为单个任务定义的可能原因:
另一方面,如果容器执行独立的逻辑功能,独立缩放,不共享生命周期或资源(如卷),那么使用多个任务定义/服务可能更好。
还有一些关于ECS 这里的应用程序体系结构的文档,它进一步解释了这一点。
发布于 2018-08-29 08:56:10
嗯,ECS只缩放任务,任务中容器的第一个,如果你想要缩放任务中的容器,你必须用所有的容器缩放任务。您必须为每个服务创建一个任务。请记住,AWS认为您只想使用一个简单的应用程序来运行一个任务,它使用RDS中的数据库服务以及它可以使用它在AWS基础结构中分配的任何服务。
https://stackoverflow.com/questions/52059689
复制相似问题