2016-04-19 6 views
1

概念的には、AWS ECSを使用して「クラスタ」ジョブを実行する方法を理解しようとしています。多くのコアを必要とするAWS ECSを実行する

私はDockerコンテナの中にいくつかの科学的ソフトウェアを持っています。それは基本的なインスタンスが提供しなければならない数のコアをネイティブに利用しています。

この場合、私の質問はです。AWS ECSを使用して、表示可能なコアの数をDockerコンテナ内で実行されているタスクに "増加"できますか?たとえば、私の「クラスタ」は1つのインスタンスに限定されていますか?または、複数のインスタンスに展開可能な「クラスタ」ですか?

私は彼がAWSのドキュメントを見ながら答えを見つけることができませんでした。

答えて

0

私ドッカーコンテナ内で実行中のタスクに「見える」コアの数を「増やす」

コンテナとクラスタは、1つのインスタンス上のコンテナの多くを実行することができる異なるものですが、あなたができます乗算インスタンスで1つのコンテナを実行しないでください。

クラスタ - ドッキング・コンテナのセットです。

は、私の「クラスタ」は1つのインスタンスに限定されていますか?

いいえ、あなたはクラスタ

+0

クラスタが設定されEC2 _container instances_(コンテナを実行できるインスタンス)ではなくコンテナです。 – Tony

+0

あなたの答えはより良いです:)しかし、彼は "1つのインスタンスで多くのコンテナを実行するかもしれませんが、複数のインスタンスで1つのコンテナを実行することはできません。同じです;) – vvchik

+1

はい。インスタンス間でコンテナをリンクすることは明らかにサポートされていません(https://forums.aws.amazon.com/thread.jspa?messageID=610186򔾊)。 – Tony

2

内のインスタンスの数を選択することができ、私はコアの数に基づいて自身のコピーを起動するためのスクリプトを使用するPythonアプリケーションを動かす似たような状況がありました。これに対する答えは、Dockerのベストプラクティスと同じくらいECSの問題ではありません。コンテナ1つにつき1つのプロセスを使用するよう努めなければなりません。 (https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/を参照してください)

これを実装したのは、Dockerfileを使用して各プロセスを実行した後、必須のECSタスクを使用していたため、タスクが終了した場合にリロードされます。

クラスタは、ECSサービスを実行しているEC2インスタンスの集合体です。各インスタンスには、特定の数のCPUユニット(通常は1024ユニット=== 1コア)とRAMがあります。私はピークロード時に私のアプリをプロファイリングし、私がそれを好きになるまでミックスを微調整した。あなたのアプリがそれより多くのCPUを使用できる場合は、それに2048 CPUまたは他の何らかの金額を与えて、それがどのように動作するかを見てみてください。私はメロス(https://meros.io/)を使って自分のアプリをプロファイルしました。

希望すると便利です。

2

クラスタは、ECS対応(特別なエージェントソフトウェアを実行中)でグループ化されたEC2インスタンスの一部です。このクラスタ上で実行するタスクは、これらのインスタンスに分散されています。各タスクは複数のコンテナを含むことができます。しかし、各コンテナは、そのインスタンスの境界内にハードウェア的にとどまっています。いくつかの「CPUユニット」が割り当てられ、同じインスタンス上で実行されている他のコンテナと共有されます。

私が理解しているように、コンテナ内の複数のコアにまたがるプロセスを実行することは、ECSアーキテクチャの考え方にはあまり合いません。つまり、ECSのスケジューラジョブの一部をしようとするようです。

私はそれについて読んでいたとき、私はこれらのリソースが有用であることが判明:ジェローム・Petazzoni

  • Application Architectureによって

  • 関連する問題