メニュー
Elastic Load Balancing
Application Load Balancers

Application Load Balancer のターゲットグループ

EC2 インスタンスなどのターゲットをターゲットグループに登録できます。ターゲットグループ内のターゲットにリクエストをルーティングするには、ロードバランサーのいずれかのリスナーのルールでターゲットグループを指定します。

ロードバランサーのヘルスチェック設定は、ターゲットグループ単位で定義します。各ターゲットグループはデフォルトのヘルスチェック設定を使用します。ただし、ターゲットグループを作成したときや、後で変更したときに上書きした場合を除きます。リスナーのルールでターゲットグループを指定すると、ロードバランサーは、ロードバランサーで有効なアベイラビリティーゾーンにある、ターゲットグループに登録されたすべてのターゲットの状態を継続的にモニタリングします。ロードバランサーは、正常な登録済みターゲットにリクエストをルーティングします。

ルーティング設定

デフォルトでは、ロードバランサーはターゲットグループの作成時に指定したプロトコルとポート番号を使用して、リクエストをターゲットにルーティングします。または、ターゲットグループへの登録時にターゲットへのトラフィックのルーティングに使用されるポートを上書きすることもできます。

ターゲットグループでは、次のプロトコルとポートがサポートされています。

  • プロトコル: HTTP、HTTPS

  • ポート: 1 ~ 65535

ターゲットグループが HTTPS プロトコルを使用して設定されているか、HTTPS ヘルスチェックを使用する場合、これらの接続には ELBSecurityPolicy2015-05 ポリシーのセキュリティ設定が使用されます。

登録済みターゲット

ロードバランサーは、クライアントにとって単一の通信先として機能し、正常な登録済みターゲットに受信トラフィックを分散します。各ターゲットは、1 つ以上のターゲットグループに登録できます。異なるポートを使用すると、同じ EC2 インスタンスを 1 つのターゲットグループに複数回登録できます。これにより、ロードバランサーから ECS コンテナにリクエストをルーティングできます。

アプリケーションの需要が高まった場合、需要に対処するため、1 つまたは複数のターゲット グループに追加のターゲットを登録できます。登録処理が完了し、ターゲットが最初のヘルスチェックに合格するとすぐに、ロードバランサーは新しく登録したターゲットへのリクエストのルーティングを開始します。

アプリケーションの需要が低下した場合や、ターゲットを保守する必要がある場合、ターゲットグループからターゲットを登録解除することができます。ターゲットを登録解除するとターゲットグループから削除されますが、ターゲットにそれ以外の影響は及びません。登録解除するとすぐに、ロードバランサーはターゲットへのリクエストのルーティングを停止します。ターゲットは、未処理のリクエストが完了するまで draining 状態になります。リクエストの受信を再開する準備ができると、ターゲットをターゲットグループに再度登録することができます。

Auto Scaling グループでロードバランサーを使用する場合、ターゲットグループにターゲットを登録する必要はありません。Auto Scaling グループにターゲットグループをアタッチすると、ターゲットの起動時に Auto Scaling によりターゲットグループにターゲットが登録されます。詳細については、『Auto Scaling ユーザーガイド』の「Auto Scaling グループにロードバランサーをアタッチする」を参照してください。

ターゲットグループの属性

ターゲット グループの属性は次のとおりです。

deregistration_delay.timeout_seconds

登録解除するターゲットの状態が draining から unused に変わるのを Elastic Load Balancing が待機する時間の長さです。範囲は 0 ~ 3600 秒です。デフォルト値は 300 秒です。

stickiness.enabled

スティッキーセッションが有効かどうかを示します。

stickiness.lb_cookie.duration_seconds

Cookie の有効期間 (秒単位) です。この期間が過ぎると、Cookie は古いと見なされます。最小値は 1 秒で、最大値は 7 日間 (604800秒) です。デフォルト値は 1 日 (86400 秒) です。

stickiness.type

維持の種類です。有効な値は lb_cookie です。

登録解除の遅延

Elastic Load Balancing は、登録解除するインスタンスへのリクエストの送信を停止します。接続のストリーミングを行うと、既存の接続が終了する前に未処理のリクエストが完了します。登録解除するターゲットの初期状態は draining です。デフォルトでは、登録解除するターゲット状態は 300 秒後に unused に変化します。状態が unused に変わるのを Elastic Load Balancing が待機する時間の長さを変更するには、登録解除の遅延値を更新します。

コンソールを使用して登録解除の遅延値を更新するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Target Groups] を選択します。

  3. ターゲットグループを選択します。

  4. [Description] タブで、[Edit attributes] を選択します。

  5. [Edit attributes] ページで、必要に応じて [Deregistration delay] の値を変更し、[Save] を選択します。

AWS CLI を使用して登録解除の遅延値を更新するには

modify-target-group-attributes コマンドを使用します。

スティッキーセッション

スティッキーセッションは、ターゲットグループ内の同じターゲットにリクエストをルーティングするメカニズムです。これは、クライアントに連続したエクスペリエンスを提供するために状態情報を維持するサーバーに役立ちます。スティッキーセッションを使用するには、クライアントが Cookie をサポートしている必要があります。

ロードバランサーは、クライアントから最初のリクエストを受信すると、リクエストをターゲットにルーティングし、クライアントへのレスポンスに含める Cookie を生成します。そのクライアントからの次のリクエストには、Cookie が含まれています。スティッキーセッションがターゲットグループに対して有効であり、リクエストが同じターゲットグループに送信される場合、ロードバランサーは Cookie を検出して同じターゲットにリクエストをルーティングします。

Application Load Balancer はロードバランサーによって生成されるクッキーのみをサポートします。Cookie 名は、AWSALB です。このクッキーのコンテンツはローテーションキーを使用して暗号化されます。ロードバランサーによって生成されたクッキーを複合あるいは編集することはできません。

WebSockets 接続は本来はスティッキーです。クライアントが WebSockets へ接続アップグレードをリクエストする場合、接続アップグレードを受け入れるために HTTP 101 のステータスコードを返したターゲットが、WebSockets 接続で使用されるターゲットです。WebSockets のアップグレードが完了したら、Cookie ベースの維持は使用されません。

ターゲットグループレベルでスティッキーセッションを有効にします。ロードバランサー生成のクッキーの維持期間を秒単位で設定することもできます。複数のターゲットグループのスティッキーセッションを有効にした場合、すべてのターゲットグループに同じ継続時間を設定することをお勧めします。

コンソールを使用してスティッキーセッションを有効にするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Target Groups] を選択します。

  3. ターゲットグループを選択します。

  4. [Description] タブで、[Edit attributes] を選択します。

  5. [Edit attributes] ページで、以下を実行します。

    1. [Enable load balancer generated cookie stickiness] を選択します。

    2. [Stickiness duration] で、1 秒から 7 日の間の値を指定します。

    3. [Save] を選択します。

AWS CLI を使用してスティッキーセッションを有効にするには

modify-target-group-attributes コマンドを使用します。