AWS ECS运行需要许多核心的任务

时间:2016-04-19 18:16:11

标签: amazon-web-services docker amazon-ecs

我在概念上试图了解如何使用 AWS ECS 来运行我的“群集”作业。

我在Docker容器中有一些科学软件,它本身利用了与底层实例一样多的核心。

我的问题是,我可以使用AWS ECS“增加”在我的Docker容器中运行的任务的“可见”核心数量。例如,我的“群集”仅限于一个实例吗?或者是一个可以扩展到多个实例的“集群”?

我无法通过他的AWS文档找到任何答案。

3 个答案:

答案 0 :(得分:2)

我有类似的情况移动一个Python应用程序,该应用程序使用脚本根据内核数量生成自己的副本。答案不是ECS问题,而是Docker的最佳实践......你应该努力为每个容器使用1个进程。 (见https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

我最终如何实现这一点是使用Dockerfile来运行每个进程,然后使用必要的ECS任务,以便在任务失效时重新加载。

您的群集是运行ECS服务的EC2实例的集合。每个实例都有一定数量的CPU'单元'(通常为1024个单元=== 1个核心)和RAM。我在峰值负载下调整了我的应用程序并调整了混音,直到我得到它我喜欢的地方。如果你的应用程序可以使用更多的CPU,请尝试给它2048 CPU或其他一些数量,看看它是如何执行的。我使用Meros(https://meros.io/)来分析我的应用程序。

希望这有帮助!

答案 1 :(得分:2)

群集只是一些启用了ECS(正在运行特殊代理软件)并组合在一起的EC2实例。您在此群集上运行的任务分布在这些实例中。每个任务可以涉及多个容器。但是,每个容器都在硬件方面保持在其实例“边界”内。它被分配了许多“CPU单元”并与在同一实例上运行的其他容器共享它们。

根据我的理解,在容器中运行跨越多个核心的流程并不符合ECS体系结构的想法 - 它似乎试图完成ECS调度程序工作的一部分。

我在阅读时发现这些资源非常有用:

答案 2 :(得分:0)

  

“增加”在我的Docker容器中运行的任务的“可见”核心数

容器和集群是不同的东西,你可以在一个实例上运行很多容器,但你不能在多个实例上运行一个容器。

群集 - 它是一组泊坞窗容器。

  

我的“群集”仅限于一个实例吗?

不,您可以选择群集中的实例数