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 アプリを移動するときに、同様の状況に陥りました。これに対する答えは、Docker のベスト プラクティスであるため、ECS の問題ではありません。コンテナーごとに 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コンテナ内で実行されているタスクに「見える」コアの数を「増やす」

コンテナーとクラスターは別物です。1 つのインスタンスで多数のコンテナーを実行できますが、複数のインスタンスで 1 つのコンテナーを実行することはできません。

クラスター - Docker コンテナーのセットです。

私の「クラスター」は単一のインスタンスのみに制限されていますか?

いいえ、クラスター内のインスタンスの数を選択できます

于 2016-04-19T20:00:02.183 に答える