2

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

我在 Docker 容器中有一些科学软件,它本机利用底层实例必须提供的尽可能多的内核。

在这种情况下,我的问题是,我可以使用 AWS ECS 来“增加”在 Docker 容器中运行的任务的“可见”核心数量吗?例如,我的“集群”是否仅限于单个实例?还是一个“集群”可以扩展到多个实例?

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

4

3 回答 3

3

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

根据我的理解,在一个容器中运行一个跨越多个核心的进程并不完全符合 ECS 架构的理念——它似乎试图完成 ECS 的调度程序工作的一部分。

当我阅读它时,我发现这些资源很有用:

于 2016-04-21T17:45:06.953 回答
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/ ) 来分析我的应用程序。

希望这可以帮助!

于 2016-04-19T20:03:29.550 回答
0

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

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

集群 - 它是一组 docker 容器。

我的“集群”是否仅限于单个实例?

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

于 2016-04-19T20:00:02.183 回答