AWS ECS:我如何通过我的微服务体系结构API解决“太多容器”问题?

问题描述:

我正在使用微服务体系结构的API。我通过Elastic Beanstalk部署到ECS。每个微服务都是一项长期运行的任务(在ECS上相当于一个容器)。我刚刚通过了10项任务,我不能再部署。AWS ECS:我如何通过我的微服务体系结构API解决“太多容器”问题?

ERROR: Service:AmazonECS, Code:ClientException, Message:Too many containers., Class:com.amazonaws.services.ecs.model.ClientException

According to the documentation,10个任务定义容器是对ECS的硬性限制。

有什么办法可以解决这个问题吗?我如何继续在ECS上的API上添加服务?这种限制表明我没有按照预期使用该服务。在AWS上将每个微服务集合部署为独立的Docker容器的最佳方式是什么?

编辑:我对容器和任务之间的关系的理解是完全错误的。看起来整个API是一个单独的任务,我的Dockerrun.aws.json中的每个容器都是API任务中的一个容器。所以,限制是单个任务内容器的限制。

+0

您必须通过联系AWS支持 – error2007s

+1

@ error2007s来增加服务限制。此特殊限制在“亚马逊ECS的其他限制_cannot_可以更改” – raddevon

+0

您可以重新制作Lambda吗?那里没有这样的限制;您仅限于调用该函数的子网上可用的ip数量。 –

由于它不可更改,这意味着您需要一个新的任务定义。

Task definition max containers表示每个任务定义可以有10个。如果你需要更多的容器,只需克隆定义即可。

带着一丝盐,但是如果你在每个实例的基础上设置你的任务,你是不是可以用创建AMI来工作,或者可能让多个任务放在同一个容器实例上?

+0

如何配置Elastic Beanstalk以创建单独的任务?它似乎把所有的容器都放到一个单独的任务中,我找不到一个记录的方式来配置它来分离它们。 – raddevon

+0

你标记了amazon-ecs,你不能用豆茎做到这一点。我建议重新标记你的问题。 –

在ecs API中,在相同任务中定义的容器保证这些容器将在一个实例上部署。如果这是您想要的部署行为,请在一个“任务”中定义容器。

如果要跨ecs集群部署容器,则应该只使用一个容器定义不同的任务,以便可以在集群上平衡地部署所有容器。