ゲートウェイロードバランサーは、開放型システム間相互接続 (OSI) モデルの第 3 層(ネットワークレイヤー)で機能します。すべてのポートですべての IP パケットをリッスンし、リスナールールで指定されたターゲットグループにトラフィックを転送します。5 タプル(TCP/UDP フローの場合)または 3 タプル(非 TCP/UDP フローの場合)を使用して、特定のターゲットアプライアンスへのフローのスティッキ状態を維持します。たとえば、タスクコンテナ定義で NGINX コンテナポートのポート 80、ホストポートのポート 0 を指定した場合、ホストポートはコンテナインスタンスの一時ポート範囲から動的に選択されます (最新の Amazon ECS に最適化された AMI の 32768~61000 など)。タスクの起動時に、NGINX コンテナは、インスタンス ID およびポートの組み合わせとして Gateway Load Balancer で登録されます。トラフィックは、コンテナに対応するインスタンス ID およびポートに分散されます。この動的なマッピングにより、同じコンテナインスタンスの単一のサービスから複数のタスクを持つことができます。詳細については、「Gateway Load Balancers」の「What is a Gateway Load Balancer」を参照してください。
デプロイを高速化するためのパラメータ設定のベストプラクティスについては、以下を参照してください。
Amazon ECS で Gateway Load Balancer を使用する場合は、次の点を考慮してください。
-
Amazon ECS には、タスクの作成時および停止時に、ロードバランサーへのターゲットの登録および登録解除に必要なアクセス許可を提供するサービスリンク IAM ロールが必要です。詳細については、「Amazon ECS のサービスリンクロールの使用」を参照してください。
-
awsvpc
ネットワークモードを使用するタスクを含むサービスの場合、サービスのターゲットグループを作成するときに、instance
ではなく、ip
をターゲットタイプとして選択する必要があります 。これは、awsvpc
ネットワークモードを使用するタスクは、Amazon EC2インスタンスではなく、Elastic Network Interface に関連付けられているためです。 -
ロードバランサーのサブネット設定には、コンテナインスタンスが存在するアベイラビリティーゾーンすべてを含める必要があります。
-
サービスの作成後にロードバランサーの設定を 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 を参照してください。 -
サービスタスクがロードバランサーのヘルスチェック条件を満たさない場合、タスクは停止され、再起動されます。このプロセスは、サービスが実行中のタスクの必要数に達するまで続行されます。
-
IP アドレスをターゲットとして設定した Gateway Load Balancer を使用する場合、リクエストは Gateway Load Balancer のプライベート IP アドレスから送信されたと見なされます。これは、ターゲットのセキュリティグループで受信リクエストとヘルスチェックを許可するとすぐに、Gateway Load Balancer の背後にあるサービスが世界中からアクセス可能になることを意味します。
-
Fargate タスクでは、プラットフォームバージョン
1.4.0
(Linux) または1.0.0
(Windows) を使用する必要があります。 -
ロードバランサーで有効にされているサービスに問題がある場合は、「Amazon ECS のサービスロードバランサーのトラブルシューティング」を参照してください。
-
タスクとロードバランサーは、同じ VPC 内にある必要があります。
-
各サービスに固有のターゲットグループを使用します。
複数のサービスに同じターゲットグループを使用すると、サービスのデプロイ時に問題が発生する可能性があります。
Gateway Load Balancer を作成する方法については、「Gateway Load Balancer」の「Gateway Load Balancer の使用開始方法」を参照してください。
重要
サービスのタスク定義で、awsvpc
ネットワークモード (起動タイプが Fargate の場合に必要) が使用されている場合は、instance
ではなく、ip
をターゲットタイプとして選択する必要があります。これは、awsvpc
ネットワークモードを使用するタスクは、Amazon EC2インスタンスではなく、Elastic Network Interface に関連付けられているためです。
インスタンス ID が C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3、および T1 のインスタンス ID でインスタンスを登録することはできません。IP アドレスで、これらの種類のインスタンスを登録することができます。