我在概念上试图了解如何使用 AWS ECS 来运行我的“群集”作业。
我在Docker容器中有一些科学软件,它本身利用了与底层实例一样多的核心。
我的问题是,我可以使用AWS ECS“增加”在我的Docker容器中运行的任务的“可见”核心数量。例如,我的“群集”仅限于一个实例吗?或者是一个可以扩展到多个实例的“集群”?
我无法通过他的AWS文档找到任何答案。
答案 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容器中运行的任务的“可见”核心数
容器和集群是不同的东西,你可以在一个实例上运行很多容器,但你不能在多个实例上运行一个容器。
群集 - 它是一组泊坞窗容器。
我的“群集”仅限于一个实例吗?
不,您可以选择群集中的实例数