Amazon ECS マネージドインスタンスの自動スケーリングとタスク配置
Amazon ECS マネージドインスタンスは、インテリジェントなアルゴリズムを使用してクラスターの容量を自動的にスケーリングし、インフラストラクチャ全体にタスクを効率的に配置します。これらのアルゴリズムの仕組みを理解することで、サービス設定を最適化し、配置動作をトラブルシューティングできます。
タスク配置アルゴリズム
Amazon ECS マネージドインスタンスは、タスクのスケジュールを設定する際に可用性、リソース使用率、ネットワーク要件のバランスを確保する高度な配置アルゴリズムを使用します。
分散アベイラビリティーゾーン
デフォルトでは、Amazon ECS マネージドインスタンスは複数のアベイラビリティーゾーンにタスクを分散することで可用性を優先します。
-
複数のタスクが配置されているサービスの場合、Amazon ECS マネージドインスタンスは、可能であれば異なるアベイラビリティーゾーンの少なくとも 3 つのインスタンスに分散します。
-
この動作は耐障害性を実現しますが、インスタンスあたりのリソース使用率が低下する可能性があります。
-
拡散アベイラビリティーゾーンは、ビンのパッキングの最適化よりも優先されます
ビンのパッキング動作
Amazon ECS マネージドインスタンスは、リソース使用率を最大化するためにビンパッキングを実行できますが、この動作はネットワーク設定の影響を受けます。
-
ビンのパッキングを実現するには、単一のサブネットを使用するようにサービスを設定します。
-
マルチサブネット設定では、リソース密度よりもアベイラビリティーゾーンの分散が優先されます。
-
ビンのパッキングは、スケーリングイベント中よりも初回サービス起動時に実施される可能性が高くなります。
ENI の密度に関する考慮事項
awsvpc ネットワークモードを使用するサービスの場合、Amazon ECS マネージドインスタンスは配置を決定する際に Elastic Network Interface (ENI) の密度を考慮します。
-
awsvpcモードの各タスクには専用の ENI が必要です -
インスタンスタイプには、タスク密度に影響するさまざまな ENI 制限があります
-
Amazon ECS マネージドインスタンスは、ターゲットインスタンスを選択するときに ENI の可用性を考慮します
注記
ENI 密度の計算は、配置の決定を最適化するために継続的に改善されています。
キャパシティプロバイダーの決定ロジック
Amazon ECS マネージドインスタンスのキャパシティプロバイダーは、次の複数の要因に基づいてスケーリングと配置を決定します。
- リソースの要件
-
保留中のタスクの CPU、メモリ、ネットワークに関する要件
- インスタンスの可用性
-
既存のインスタンス全体の現在の容量と使用率
- ネットワーキングの制約
-
サブネット設定と ENI の可用性
- アベイラビリティーゾーンの分散
-
複数のアベイラビリティーゾーンにわたる耐障害性の維持
設定オプション
サブネットの選択戦略
サブネット設定は、タスク配置の動作に大きな影響を与えます。
- 複数のサブネット (デフォルト)
-
高可用性を実現するためにアベイラビリティーゾーンの拡散を優先する
インスタンスあたりのリソース使用率が低下する可能性があります
耐障害性を必要とする本番稼働用ワークロードに推奨
- 単一サブネット
-
ビンパッキングを有効にしてリソース使用率を高める
タスクを 1 つのアベイラビリティーゾーンに集約することで耐障害性を低減する
開発またはコスト最適化ワークロードに適しています
ネットワークモードに関する考慮事項
選択したネットワークモードは、配置の決定に影響します。
-
awsvpcモード – 各タスクには専用の ENI が必要であり、インスタンスあたりのタスク密度が制限されます。 -
hostモード – タスクはホストのネットワークを直接使用し、配置は主にリソースの可用性によって決定されます。
CPU アーキテクチャに関する考慮事項
タスク定義で指定した cpuArchitecture は、特定のアーキテクチャにタスクを配置するために使用されます。cpuArchitecture を指定しない場合、Amazon ECS はキャパシティプロバイダーの設定に基づいて、使用可能な CPU アーキテクチャにタスクを配置しようとします。X86_64 または ARM64 のどちらかを指定できます。
タスク配置のトラブルシューティング
一般的な配置パターン
予想される配置パターンを理解すると、通常の動作と潜在的な問題を区別できるようになります。
- 分散ディストリビューション
-
部分的な使用率で複数のインスタンスに分散されたタスク
複数のサブネットを使用する場合の通常の動作
リソース効率よりも可用性が優先されることを示します
- 集約された配置
-
使用率の高い少数のインスタンスに配置された複数のタスク
単一サブネット設定を使用する場合に想定されます
最初のサービス起動中に発生する可能性があります
- 不均等な分散
-
一部のインスタンスの使用率が非常に高い一方で、他のインスタンスについては使用率が低い状態が継続します。
ENI の制限またはリソースの制約を示している場合があります
インスタンスタイプとネットワーク設定の確認を検討する
配置動作の最適化
特定の要件に合わせてタスク配置を最適化するには:
-
コスト最適化のニーズと照らし合わせて可用性要件を評価する
-
優先順位に基づいて適切なサブネット設定を選択する
-
ネットワークモードに適した ENI 容量を持つインスタンスタイプを選択する
-
配置パターンをモニタリングし、必要に応じて設定を調整する
ベストプラクティス
-
本稼働ワークロードの場合 – 異なるアベイラビリティーゾーン間で複数のサブネットを使用して高可用性を確保し、リソース使用率のトレードオフを受け入れます。
-
開発またはテストの場合 – リソース使用率を最大化し、コストを削減するために単一サブネット設定を検討する
-
awsvpcモードの場合 – 配置の制約に抵触することを回避するために、十分な ENI 容量を持つインスタンスタイプを選択する -
コスト最適化の場合 – 使用率パターンをモニタリングし、可用性と効率性のバランスを取るようにサービス設定を調整する
-
トラブルシューティングの場合 — 予期しない配置パターンを調査するときに、サブネット設定とネットワークモードを確認する