2016-04-19 65 views
1

任務,我在概念上試圖瞭解如何使用AWS ECS運行我的「集羣」工作。AWS ECS運行需要多核心

我在Docker容器中有一些科學軟件,它原生地利用了底層實例必須提供的儘可能多的核心。

我在這種情況下的問題是,我可以使用AWS ECS來增加在我的Docker容器中運行的任務的「可見」核心數量。例如,我的「集羣」是否僅限於單個實例?或者是可擴展到多個實例的「羣集」?

我一直沒有找到任何答案,通過他查看他的AWS文檔。

回答

0

「增加」,「可見的」內核任務的數量我多克爾容器中運行

容器和集羣是不同的東西,你可以在一個實例上運行大量的容器,但你可以在多個實例上運行一個容器。

集羣 - 它是一組碼頭集裝箱。

是我的「集羣」僅限於單個實例嗎?

沒有,你可以選擇的實例數集羣

+0

集羣是一組EC2 _container instances_(可以運行容器的實例),而不是容器。 – Tony

+0

是的,你的答案是更好的:)但一般的想法是,他「可能在一個實例上運行很多容器,但不能在多個實例上運行一個容器」。是一樣的;) – vvchik

+1

是的。顯然甚至不支持跨實例鏈接容器,[看起來](https://forums.aws.amazon.com/thread.jspa?messageID=610186򔾊)。 – Tony

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/)來分析我的應用程序。

希望這會有所幫助!

2

集羣只是一些ECS實例,它們是啓用了ECS(正在運行特殊代理軟件)並分組在一起的。您在此羣集上運行的任務分佈在這些實例中。每個任務可能涉及多個容器。但是,每個容器在硬件方面都停留在實例的「邊界」內。它被分配了許多「CPU單元」並與在同一實例上運行的其他容器共享它們。

根據我的理解,在一個容器中運行一個跨越多個內核的進程並不完全符合ECS體系結構的想法 - 它似乎試圖完成部分ECS的調度程序工作。

我發現這些資源有用的,當我在閱讀關於它: