ある企業が、Amazon ECS(Fargate)で稼働するコンテナアプリケーションの可用性を向上させたい。現在は 1 つの AZ にのみタスクが配置されており、AZ 障害時にサービスが停止する。複数 AZ にタスクを分散させるための最も適切な設定はどれか。
- A. ECS サービスの desired task count を 2 に設定し、同一 AZ のサブネットを 2 つ指定する。
- B. ECS タスク定義でリソース制限を緩和し、1 台の Fargate ノードにより多くのタスクを配置する。
- C. AWS Auto Scaling を ECS サービスに設定して、障害発生時に自動的に新しいタスクを起動させる。
- D. ECS サービスのネットワーク設定で複数の AZ に属するサブネットを指定し、ECS のタスク配置戦略に spread(AZ 単位)を設定する。
解答と解説を見る
正解: D
ECS サービスのネットワーク設定で複数 AZ のサブネットを指定し、タスク配置戦略に spread(フィールド: attribute:ecs.availability-zone)を設定することで、ECS は自動的にタスクを異なる AZ に分散配置する。これにより、ある AZ で障害が発生しても他の AZ のタスクでサービスを継続できる。選択肢Aは同一 AZ のサブネット 2 つを指定しているため、複数 AZ への分散にならない。AZ 障害への耐性が得られない。選択肢Bはリソース制限の緩和でタスク数を増やすものではなく、AZ 分散とは関係がない。Fargate は仮想ノード構成なのでこの操作自体も不適切。選択肢Cの Auto Scaling は負荷に応じたスケーリングや障害時のタスク再起動に有効だが、それだけでは AZ 分散は設定されない。複数 AZ のサブネット指定と spread 戦略の設定が先に必要である。
📚 関連サービスの解説: Amazon ECS