メニュー
Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

サービスロードバランシング

Elastic Load Balancing を使用してサービスのタスク間でトラフィックを均等に分散するように、オプションで Amazon ECS サービスを設定できます。

Elastic Load Balancing では、次の 2 種類のロードバランサー (Application Load Balancer、ネットワークロードバランサー、および Classic Load Balancer) がサポートされます。Amazon ECS サービスではいずれのタイプのロードバランサーも使用できます。Application Load Balancer は、HTTP/HTTPS (またはレイヤー 7) トラフィックをルーティングするために使用されます。ネットワークロードバランサー と Classic Load Balancer は、TCP (またはレイヤー 4) トラフィックをルーティングするために使用されます。詳細については、「ロードバランサーの種類」を参照してください。

Application Load Balancer では Amazon ECS サービスでの使用に便利な複数の機能を提供しています。

  • Application Load Balancer により、コンテナが動的ホストポートマッピングを使用できるようになります (同じサービスから複数のタスクがコンテナインスタンスごとに許可するため)。

  • Application Load Balancer では、パスベースのルーティングと優先ルールをサポートしています (複数のサービスが 1 つの Application Load Balancer で同じリスナーポートを使用するため)。

ネットワークロードバランサー あるいは Classic Load Balancer でのみ使用できる機能を必要とするサービスを除いた Amazon ECS サービスで Application Load Balancer を使用して、数々の最新機能を活用することをおすすめします。Elastic Load Balancing およびロードバランサータイプ間の違いに関する詳細は、Elastic Load Balancing ユーザーガイド を参照してください。

注記

Amazon ECS サービスは現在、1 つのロードバランサーまたはターゲットグループのみを指定できます。サービスで複数のロードバランサーにアクセスする必要がある場合 (たとえば、HTTP/HTTPS サービス用のポート 80 とポート 443 など)、複数のリスナーを使用する Classic Load Balancer を使用する必要があります。Application Load Balancer を使用するには、単一の HTTP/HTTPS サービスを、それぞれ別のポートへのリクエストを処理する 2 つのサービスに分離します。こうすることで、各サービスが単一の Application Load Balancer の背後にある異なるターゲットグループを使用できます。

負荷分散の概念

  • 1 つのタスク定義で起動されたすべてのコンテナは、常に同じコンテナインスタンスに配置されます。Classic Load Balancer では、サービス定義で複数のホストポートを定義し、それらのリスナーポートをロードバランサーに追加することによって、同じロードバランサーの背後に複数のコンテナ (同じタスク定義内) を配置できます。たとえば、タスク定義がコンテナインスタンスのポート 3030 を使用する Elasticsearch で構成され、コンテナインスタンスのポート 4040 を使用する Logstash と Kibana で構成されている場合は、同じロードバランサーが 2 つのリスナーを通して Elasticsearch と Kibana にトラフィックをルーティングできます。詳細については、クラシックロードバランサー 用ユーザーガイド の「Classic Load Balancer のリスナー」を参照してください。

    重要

    複数のサービスを同じ Classic Load Balancer に接続することはお勧めしません。コンテナインスタンス全体が Classic Load Balancer (ホストおよびポートの組み合わせではなく) で登録および登録解除されているため、この構成では、1 つのサービスからのタスクが停止した場合に問題が発生する場合があり、同じコンテナインスタンスで異なるサービスから別のタスクがそれを使用している間にコンテナインスタンス全体が Classic Load Balancer から登録解除されます。複数のサービスを 1 つのロードバランサーに接続する場合 (コストを節約するため、など)、Application Load Balancer を使用することをお勧めします。

  • サービスごとに 1 つのロードバランサーまたはターゲットグループに制限されます。

  • awsvpc ネットワークモードを使用するタスクを含むサービス (例: 起動タイプが Fargate のサービス) では、Application Load Balancer および ネットワークロードバランサー のみサポートされており、Classic Load Balancer はサポートされていません。また、このようなサービス用にターゲットグループを作成する場合は、ターゲットタイプとして instance ではなく、ip を選択する必要があります。これは、awsvpc ネットワークモードを使用するタスクは、Amazon EC2 インスタンスではなく、Elastic Network Interface に関連付けられているためです。

  • ロードバランサーのサブネット設定には、コンテナインスタンスが存在するアベイラビリティーゾーンすべてを含める必要があります。

  • サービスを作成した後、サービス定義で指定されているターゲットグループ ARN、ロードバランサー名、コンテナ名、コンテナポートはイミュータブルです。既存のサービスのロードバランサー設定を追加、削除、または変更することはできません。サービスのタスク定義を更新する場合、サービスの作成時に指定したコンテナ名とコンテナポートは、タスク定義のままにしておく必要があります。

  • サービスのタスクがロードバランサーのヘルスチェックの基準に失敗すると、タスクは強制終了され、再起動されます。このプロセスは、サービスが実行中のタスクの必要数に達するまで続行されます。

  • ロードバランサーで有効にされているサービスに問題がある場合は、「サービスロードバランサーのトラブルシューティング」を参照してください。

このページの内容: