用于多容器 docker 的 Elastic beanstalk 与 ECS
Posted
技术标签:
【中文标题】用于多容器 docker 的 Elastic beanstalk 与 ECS【英文标题】:Elastic beanstalk vs ECS for multi container docker 【发布时间】:2017-05-07 01:27:01 【问题描述】:在多容器系统上工作。我正在评估弹性豆茎和 ECS 的优缺点。有很多类似this 的问题说ECS 与EB 相比对容器的控制更精确,但他们没有列出来。在我看来,这是它们之间的区别:
+--------------------------------------------+--------------------------------------------------+
| Elastic Beanstalk | ECS |
+--------------------------------------------+--------------------------------------------------+
| Natively support auto-scaling and load | Auto-scaling can be done with |
| balancing. Has the ability to deploy | some extra efforts. But other AWS resources |
| other AWS resources along with the | cannot be deployed with ECS. |
| containers. | |
+--------------------------------------------+--------------------------------------------------+
| Container definitions are written in | Container definitions has to be written in a |
| dockerrun.aws.json file. All the links | separate task definition file. Scaling of the |
| can be written here. This is more like | container can be specified in |
| docker compose file. | service definitions. |
+--------------------------------------------+--------------------------------------------------+
| Scaling happens based on CloudWatch | Here, we have a precise control to scale |
| metric. But when a new instance is | a particular task (container). This is more |
| launched, the whole containers in | like declarative. It does not take in to account |
| task definition file will be launched | about the instances, it maintains the count of |
| again (imperative), even though some | tasks correctly. Scales based on the |
| of the containers actually has no traffic. | CPU/Memory usage of a specific container. |
+--------------------------------------------+--------------------------------------------------+
我不确定第三点。纠正我如果我错了。如果这两者之间还有其他差异,请告诉我。
【问题讨论】:
【参考方案1】:第一点:如果您不使用 Elastic Beanstalk 并希望在您的应用程序中部署其他 AWS 资源,请创建一个 CloudFormation 模板并使用 CloudFormation 更改集来启动、升级和拆除您的应用程序。
关于第三点,Elastic Beanstalk 使用了 AWS Auto Scaling 功能,该功能仅适用于创建和删除 EC2 实例的级别。因此,如果您在 Elastic Beanstalk 中使用单容器/多容器环境,则向上扩展不仅会创建另一个容器,还会创建一个运行 Docker 的整个 EC2 实例以及所有相同的容器。也可以从 CloudFormation 模板使用 Auto Scaling,而无需使用 Elastic Beanstalk。它仍然只适用于 EC2 实例级别。
另一个选项是使用 Elastic Beanstalk 及其 Auto Scaling,将环境设置为带有您要扩展的容器的单个容器 docker,然后将其他容器添加为 AWS::ECS::Service custom resources。例如,您的单个容器可以是处理繁重的前端,而另一个容器可以是共享数据存储。这样,您可以从 Elastic Beanstalk 获得良好的版本控制/部署/推出,但拥有单实例容器(每个 Elastic Beanstalk 环境)。
【讨论】:
以上是关于用于多容器 docker 的 Elastic beanstalk 与 ECS的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk 多容器 Docker 环境变量
Elastic Beanstalk 上的 NodeJS 多容器 Docker
Elastic Beanstalk 上的多容器 Docker 环境中的容器连接被拒绝
具有私有存储库的 Elastic Beanstalk 多容器 Docker CannotPullContainerError