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

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

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

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

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

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

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

サービスで Network Load Balancer および Classic Load Balancer でのみ使用できる機能が必要な場合を除き、最新の機能を利用できるように、Amazon ECS サービスで Application Load Balancer を使用することをお勧めします。Elastic Load Balancing およびロードバランサーの違いに関する詳細は、「Elastic Load Balancing ユーザーガイド」を参照してください。

負荷分散の概念

  • 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 および Network Load Balancer のみサポートされており、Classic Load Balancer はサポートされていません。また、このようなサービス用にターゲットグループを作成する場合は、ターゲットタイプとして instance ではなく、ip を選択する必要があります。これは、awsvpc ネットワークモードを使用するタスクは、Amazon EC2 インスタンスではなく、Elastic Network Interface に関連付けられているためです。

  • Application Load Balancer を使用するお客様のサービスで、複数のロードバランサーポート (たとえば、HTTP/HTTPS サービス用のポート 80 とポート 443 など) へのアクセスが必要な場合、2 つのリスナーを設定できます。1 つはサービスにリクエストを転送する HTTPS 用のリスナー、もう 1 つは適切な HTTPS ポートに HTTP リクエストをリダイレクトするリスナーです。詳細については、Application Load Balancer 用ユーザーガイドの「Application Load Balancer のリスナーの作成」を参照してください。

  • コンテナヘルスチェックは、Classic Load Balancer を使用するように設定されたサービスの一部であるタスクではサポートされていません。

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

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

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

  • Application Load Balancer の設定を使用して、スロースタートモードを使用する場合、スロースタート期間が終了した後で、タスクのヘルスチェックを設定して UNHEALTHY ステータスを返す必要があります。スロースタートモードの詳細については、「Application Load Balancer のターゲットグループ」を参照してください。

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

このページの内容: