运行需要多个内核的任务的AWS ECS

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

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

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

通过他的AWS文档,我一直无法find答案。

我有一个类似的情况,移动一个Python应用程序,使用脚本根据核心数量产生自己的副本。 对此的回答并不是ECS问题,因为它是Docker的最佳实践,您应该努力为每个容器使用一个进程。 (请参阅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/ )来分析我的应用程序。

希望这可以帮助!

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

根据我的理解,在一个容器中运行一个跨越多个内核的进程并不完全符合ECS架构的想法 – 这似乎是在尝试执行ECS的部分调度程序工作。

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

  • JérômePetazzoni写的关于Amazon ECS的笔记
  • 应用程序体系结构在ECS文档
  • ECS文档中的任务定义参数

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

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

群集 – 它是docker集装箱的集合。

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

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