Amazon ECS タスク配置戦略 - Amazon Elastic Container Service

Amazon ECS タスク配置戦略

タスク配置戦略は、タスク配置またはタスクの終了でインスタンスを選択するためのアルゴリズムです。タスクの実行時または新しいサービスの作成時に、タスク配置戦略を指定できます。タスク配置の戦略は、既存のサービスに対しても更新できます。詳しくは、「Amazon ECS タスクの配置」を参照してください。

Amazon ECS サービスの一部として実行されるタスクの場合、デフォルトのタスク配置戦略は attribute:ecs.availability-zone を使用した spread です。サービス内のタスクには、デフォルトのタスク配置の制約はありません。

戦略タイプ

Amazon ECSでは、以下のタスク配置戦略をサポートします。

binpack

タスクはコンテナインスタンスに配置され、未使用の CPU またはメモリを最小にします。この戦略は、使用中のコンテナインスタンスの数を最小限に抑えます。

この戦略が使用されてスケールインアクションが実行されると、Amazon ECS はタスクを終了します。タスクが終了した後にコンテナインスタンスに残されたリソース量に基づいてこれが実行されます。タスクの終了後に利用可能なリソースが最も多く残るコンテナインスタンスが、そのタスクを終了されます。

random

タスクはランダムに配置されます。

spread

タスクは指定された値に基づいて均等に配置されます。有効な値は instanceId (または同じ効果を持つ host)、または attribute:ecs.availability-zone などのコンテナインスタンスに適用される任意のプラットフォームまたはカスタム属性です。

サービスタスクはそのサービスからのタスクに基づいて分散されます。スタンドアロンタスクは、同じタスクグループからのタスクに基づいて分散されます。タスクグループの詳細については、「タスクグループ」を参照してください。

spread 戦略が使用されてスケールインアクションが実行されると、Amazon ECS は、アベイラビリティーゾーン間のバランスを維持するタスクを選択して終了します。アベイラビリティーゾーン内では、タスクはランダムに選択されます。

戦略の例

次のアクションを使用してタスク配置戦略を指定できます。CreateServiceUpdateService、および RunTask

次の戦略は、アベイラビリティーゾーン間でタスクを均等に分散します。

"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" } ]

次の戦略は、すべてのインスタンス間でタスクを均等に分散します。

"placementStrategy": [ { "field": "instanceId", "type": "spread" } ]

次の戦略はメモリに基づいてタスクをビンパックします。

"placementStrategy": [ { "field": "memory", "type": "binpack" } ]

次の戦略はタスクをランダムに配置します。

"placementStrategy": [ { "type": "random" } ]

次の戦略は、アベイラビリティーゾーン間でタスクを均等に分散し、次に各アベイラビリティーゾーン内でインスタンスを均等に分散します。

"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "instanceId", "type": "spread" } ]

次の戦略は、アベイラビリティーゾーン間でタスクを均等に分散し、次に各アベイラビリティーゾーン内でメモリに基づいてタスクをビンパックします。

"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "memory", "type": "binpack" } ]