Amazon ECS 用の Application Load Balancer を使用する - Amazon Elastic Container Service

Amazon ECS 用の Application Load Balancer を使用する

Application Load Balancer では、アプリケーションレイヤー (HTTP/HTTPS) でルーティング決定を行い、パスベースのルーティングをサポートします。また、クラスター内の各コンテナインスタンスの 1 つまたは複数のポートにリクエストをルーティングできます。Application Load Balancer では、動的ホストポートマッピングをサポートしています。たとえば、タスクコンテナ定義で NGINX コンテナポートのポート 80、ホストポートのポート 0 を指定した場合、ホストポートはコンテナインスタンスの一時ポート範囲から動的に選択されます (最新の Amazon ECS に最適化された AMI の 32768~61000 など)。タスクの起動時に、NGINX コンテナは、インスタンス ID およびポートの組み合わせとして Application Load Balancer で登録されます。トラフィックは、コンテナに対応するインスタンス ID およびポートに分散されます。この動的なマッピングにより、同じコンテナインスタンスの単一のサービスから複数のタスクを持つことができます。詳細については、「Application Load Balancer ユーザーガイド」を参照してください

デプロイを高速化するためのパラメータ設定のベストプラクティスについては、以下を参照してください。

Amazon ECS で Application Load Balancer を使用する場合は、次の点を考慮してください。

  • Amazon ECS には、タスクの作成時および停止時に、ロードバランサーへのターゲットの登録および登録解除に必要なアクセス許可を提供するサービスリンク IAM ロールが必要です。詳細については、「Amazon ECS のサービスリンクロールの使用」を参照してください。

  • ターゲットグループでは、IP アドレスタイプを IPv4 に設定する必要があります。

  • awsvpc ネットワークモードを使用するタスクを含むサービスの場合、サービスのターゲットグループを作成するときに、instance ではなく、ip をターゲットタイプとして選択する必要があります 。これは、awsvpc ネットワークモードを使用するタスクは、Amazon EC2 インスタンスではなく、Elastic Network Interface に関連付けられているためです。

  • サービスが HTTP/HTTPS サービスのポート 80 やポート 443 など、複数の負荷分散されたポートにアクセスする必要がある場合は、2 つのリスナーを設定できます。1 つのリスナーは、リクエストをサービスに転送する HTTPS を担当し、別のリスナーは HTTP リクエストを適切な HTTPS ポートへのリダイレクトを担当します。詳細については、Application Load Balancer ユーザーガイド「Application Load Balancer のアクセスログ」を参照してください

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

  • サービスの作成後にロードバランサーの設定を AWS Management Console から変更することはできません。AWS Copilot、AWS CloudFormation、AWS CLI、SDK のいずれかを使用して、AWS CodeDeploy ブルー/グリーンまたは外部ではなく、ECS ローリングデプロイコントローラのみのロードバランサー設定を変更できます。ロードバランサー設定を追加、更新、削除すると、Amazon ECS は、更新された Elastic Load Balancing 設定で新しいデプロイを開始します。これにより、タスクがロードバランサーに登録およびロードバランサーから登録解除されます。Elastic Load Balancing 設定を更新する前に、テスト環境でこれを検証することをお勧めします。設定の変更方法の詳細については、「Amazon Elastic Containers サービス API リファレンス」の UpdateService を参照してください。

  • サービスタスクがロードバランサーのヘルスチェック条件を満たさない場合、タスクは停止され、再起動されます。このプロセスは、サービスが実行中のタスクの必要数に達するまで続行されます。

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

  • タスクとロードバランサーは、同じ VPC 内にある必要があります。

  • 各サービスに固有のターゲットグループを使用します。

    複数のサービスに同じターゲットグループを使用すると、サービスのデプロイ時に問題が発生する可能性があります。

Application Load Balancer の作成方法については、「Application Load Balancer」の「Application Load Balancer の作成」を参照してください。