ターゲットグループの正常性 - Elastic Load Balancing

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ターゲットグループの正常性

デフォルトでは、ターゲットグループが少なくとも 1 つの正常なターゲットを持っている限り、そのターゲットグループは正常であると見なされます。フリートが大きい場合、トラフィックを処理する正常なターゲットが 1 つだけでは十分ではありません。代わりに、正常でなければならないターゲットの最小数または割合、および正常なターゲットが指定されたしきい値を下回ったときにロードバランサーが実行するアクションを指定できます。これにより、可用性が向上します。

異常な状態アクション

以下のアクションに対して正常なしきい値を設定できます。

  • DNS フェイルオーバー - ゾーン内の正常なターゲットがしきい値を下回ると、そのゾーンのロードバランサーノードの IP アドレスが DNS で異常とマークされます。そのため、クライアントがロードバランサーの DNS 名を解決すると、トラフィックは正常なゾーンにのみルーティングされます。

  • ルーティングフェイルオーバー - ゾーン内の正常なターゲットがしきい値を下回ると、ロードバランサーは、異常なターゲットを含め、ロードバランサーノードで使用可能なすべてのターゲットにトラフィックを送信します。これにより、特にターゲットが一時的にヘルスチェックに合格しなかった場合に、クライアント接続が成功する可能性が高まり、正常なターゲットが過負荷になるリスクが軽減されます。

要件と考慮事項

  • アクションに両方のタイプのしきい値 (数と割合) を指定した場合、ロードバランサーはどちらかのしきい値を超えるとアクションを実行します。

  • 両方のアクションにしきい値を指定する場合、DNS フェイルオーバーのしきい値はルーティングフェイルオーバーのしきい値以上である必要があります。これにより、DNS フェイルオーバーはルーティングフェイルオーバーの有無にかかわらず発生します。

  • しきい値を割合として指定すると、ターゲットグループに登録されているターゲットの総数に基づいて、値が動的に計算されます。

  • ターゲットの合計数は、クロスゾーンロードバランサーがオフになっているかオンになっているかによって決まります。クロスゾーンロードバランサーがオフの場合、各ノードは独自のゾーン内のターゲットにのみトラフィックを送信します。つまり、しきい値は有効になっている各ゾーンのターゲット数に個別に適用されます。クロスゾーンロードバランサーがオンの場合、各ノードは有効なすべてのゾーンのすべてのターゲットにトラフィックを送信します。つまり、指定されたしきい値が有効になっているすべてのゾーンのターゲットの総数に適用されます。詳細については、「クロスゾーンロードバランサー」を参照してください。

  • DNS フェイルオーバーでは、ロードバランサーの DNS ホスト名から異常なゾーンの IP アドレスを削除します。ただし、DNS レコードの time-to-live (TTL) の有効期限 (60 秒) が切れるまで、ローカルクライアントの DNS キャッシュにこれらの IP アドレスが含まれる場合があります。

  • DNS フェイルオーバーが発生すると、ロードバランサーに関連するすべてのターゲットグループに影響します。特にクロスゾーンロードバランサーがオフになっている場合は、この追加のトラフィックを処理するのに十分な容量が残りのゾーンにあることを確認してください。

  • DNS フェイルオーバーでは、すべてのロードバランサーゾーンが異常と見なされると、ロードバランサーは異常なゾーンを含むすべてのゾーンにトラフィックを送信します。

  • DNS フェイルオーバーにつながる可能性のある正常なターゲットが十分にあるかどうか以外にも、ゾーンのヘルスなどの要因があります。

次の例は、ターゲットグループのヘルス設定がどのように適用されるかを示しています。

シナリオ
  • 2 つのアベイラビリティーゾーン A と B をサポートするロードバランサー

  • 各アベイラビリティーゾーンには 10 の登録済みターゲットが含まれています

  • ターゲットグループには、次のターゲットグループのヘルス設定があります。

    • DNS フェイルオーバー - 50%

    • ルーティングフェイルオーバー - 50%

  • アベイラビリティーゾーン B で 6 つのターゲットが失敗

クロスゾーンロードバランサーがオフの場合
  • 各アベイラビリティーゾーンのロードバランサーノードは、アベイラビリティーゾーンの 10 個のターゲットにのみトラフィックを送信できます。

  • アベイラビリティーゾーン A には 10 個の正常なターゲットがあり、これは正常なターゲットの必要な割合を満たしています。ロードバランサーは引き続き、10 の正常なターゲット間でトラフィックを分散します。

  • アベイラビリティーゾーン B には正常なターゲットが 4 つしかなく、これはアベイラビリティーゾーン B のロードバランサーノードのターゲットの 40% です。これは正常なターゲットの必要なパーセンテージを下回っているため、ロードバランサーは次のアクションを実行します。

    • DNS フェイルオーバー - アベイラビリティーゾーン B が DNS で異常とマークされています。クライアントはロードバランサー名をアベイラビリティーゾーン B のロードバランサーノードに解決できず、アベイラビリティーゾーン A は正常であるため、クライアントはアベイラビリティーゾーン A に新しい接続を送信します。

    • ルーティングフェイルオーバー - 新しい接続がアベイラビリティーゾーン B に明示的に送信されると、ロードバランサーは、異常なターゲットを含むアベイラビリティーゾーン B のすべてのターゲットにトラフィックを分散します。これにより、残りの正常なターゲット間でのシステム停止を防ぐことができます。

クロスゾーンロードバランサーがオンの場合
  • 各ロードバランサーノードは、両方のアベイラビリティーゾーンの 20 の登録済みターゲットすべてにトラフィックを送信できます。

  • アベイラビリティーゾーン A には 10 個の正常なターゲット、アベイラビリティーゾーン B には 4 個の正常なターゲット、合計 14 個の正常なターゲットがあります。これは両方のアベイラビリティーゾーンのロードバランサーノードのターゲットの 70% であり、正常なターゲットの必要な割合を満たしています。

  • ロードバランサーは、両方のアベイラビリティーゾーンの 14 個の正常なターゲット間でトラフィックを分散します。

ターゲットグループのヘルス設定の変更

ターゲットグループに関連するターゲットグループのヘルス設定は、次のように変更できます。

コンソールを使用してターゲットグループのヘルス設定を変更するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [ロードバランシング] で [ターゲットグループ] を選択します。

  3. ターゲットグループの名前を選択して、その詳細ページを開きます。

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

  5. クロスゾーンロードバランサーがオンになっているかオフになっているかを確認します。必要に応じてこの設定を更新して、ゾーンに障害が発生した場合に追加のトラフィックを処理するのに十分な容量を確保してください。

  6. [Target group health requirements] (ターゲットグループのヘルス要件) を拡張します。

  7. [Configuration type] (設定タイプ) には、両方のアクションに同じしきい値を設定する [Unified configuration] (統合設定) を選択することをお勧めします。

  8. [Healthy state requirements] (正常な状態の要件) については、次のいずれかを実行します。

    • [Minimum healthy target count] (正常なターゲットの最小数) を選択し、1 からターゲットグループの最大ターゲット数までの数値を入力します。

    • [Minimum healthy target percentage] (最小の正常なターゲット割合) を選択し、1 から 100 までの数値を入力します。

  9. [変更の保存] をクリックします。

を使用してターゲットグループのヘルス設定を変更するには AWS CLI

modify-target-group-attributesコマンドを実行します。次の例では、両方の異常な状態アクションの正常しきい値を 50% に設定しています。

aws elbv2 modify-target-group-attributes \ --target-group-arn arn:aws:elasticloadbalancing:region:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 \ --attributes Key=target_group_health.dns_failover.minimum_healthy_targets.percentage,Value=50 \ Key=target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage,Value=50

異常のあるターゲットの接続終了

接続の終了はデフォルトで有効になっています。Network Load Balancer のターゲットが設定されたヘルスチェックに失敗し、異常と見なされると、ロードバランサーは確立された接続を終了し、ターゲットへの新しい接続のルーティングを停止します。接続終了を無効にしても、ターゲットは異常と見なされ、新しい接続を受信しませんが、確立された接続はアクティブなままになるため、正常に閉じることができます。

異常なターゲットの接続終了は、ターゲットグループごとに個別に設定できます。

コンソールを使用して接続終了設定を変更するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [ロードバランシング] で [ターゲットグループ] を選択します。

  3. ターゲットグループの名前を選択して、その詳細ページを開きます。

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

  5. [Target unhealthy state management] の下で、[Terminate connections when targets become unhealthy] を有効にするか無効にするかを選択します。

  6. [変更の保存] をクリックします。

を使用して接続終了設定を変更するには AWS CLI

target_health_state.unhealthy.connection_termination.enabled 属性を指定して modify-target-group-attributes コマンドを使用します。

異常なドレイン間隔

重要

異常なドレイン間隔を有効にする前に、接続の終了を無効にする必要があります。

unhealthy.draining 状態のターゲットは異常と見なされますが、新しい接続を受信しませんが、設定された間隔の間、確立された接続を保持します。異常な接続間隔は、ターゲットが unhealthy.draining 状態になるまでに 状態のままになる時間を決定しますunhealthy。異常な接続間隔中にターゲットがヘルスチェックに合格すると、その状態はhealthy再び になります。登録解除がトリガーされると、ターゲットの状態は になりdraining、登録解除の遅延タイムアウトが開始されます。

異常なドレイン間隔は、ターゲットグループごとに個別に設定できます。

コンソールを使用して異常なドレイン間隔を変更するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [ロードバランシング] で [ターゲットグループ] を選択します。

  3. ターゲットグループの名前を選択して、その詳細ページを開きます。

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

  5. 「ターゲットの異常な状態管理」でターゲットが異常な状態になったときに接続を終了してください。

  6. 異常のあるドレイン間隔 の値を入力します。

  7. [変更の保存] をクリックします。

を使用して異常なドレイン間隔を変更するには AWS CLI

target_health_state.unhealthy.draining_interval_seconds 属性を指定して modify-target-group-attributes コマンドを使用します。

ロードバランサーの Route 53 DNS フェイルオーバーを使用する

Route 53 を使用して DNS クエリをロードバランサーにルーティングする場合は、同時に Route 53 によりロードバランサーの DNS フェイルオーバーを設定することもできます。フェイルオーバー設定では、ロードバランサー用のターゲットグループのターゲットに関する正常性チェックが Route 53 によって行われ、利用可能かどうかが判断されます。ロードバランサーに正常なターゲットが登録されていない場合、またはロードバランサー自体で不具合が発生している場合、Route 53 は、トラフィックを別の利用可能なリソース (正常なロードバランサーや、Amazon S3 にある静的ウェブサイトなど) にルーティングします。

例えば、www.example.com 用のウェブアプリケーションがあり、異なるリージョンにある 2 つのロードバランサーの背後で冗長なインスタンスを実行するとします。1 つのリージョンのロードバランサーは、主にトラフィックのルーティング先として使用し、もう 1 つのリージョンのロードバランサーは、エラー発生時のバックアップとして使用します DNS フェイルオーバーを設定する場合は、プライマリおよびセカンダリ (バックアップ) ロードバランサーを指定できます。Route 53 は、プライマリロードバランサーが利用可能な場合はプライマリロードバランサーにトラフィックをルーティングし、利用できない場合はセカンダリロードバランサーにルーティングします。

ターゲットの正常性の評価を使用する
  • Network Load Balancer のエイリアスレコードで、ターゲットの正常性の評価が Yes に設定されている場合、alias target 値で指定されたリソースの正常性が、Route 53 により評価されます。Route 53 は、Network Load Balancer に対し、そのロードバランサーに関連付けられたターゲットグループのヘルスチェックを使用します。

  • Network Load Balancer 内のターゲットグループがすべて正常であれば、Route 53 はそのエイリアスレコードを正常とマークします。ターゲットグループが正常なターゲットを 1 つでも含んでいれば、そのターゲットグループはヘルスチェックに合格します。その後、Route 53 は、ルーティングポリシーに従ってレコードを返します。フェイルオーバールーティングポリシーが使用されている場合、Route 53 はプライマリレコードを返します。

  • Network Load Balancer のターゲットグループのいずれかに異常がある場合、そのエイリアスレコードは Route 53 のヘルスチェックに失敗します (fail-open) 。ターゲットの正常性の評価を使用している場合は、フェイルオーバールーティングポリシーが失敗します。

  • Network Load Balancer のすべてのターゲットグループが空 (ターゲットが存在しない状態) の場合、Route 53 は対象のレコードを異常と見なします (fail-open)。ターゲットの正常性の評価を使用している場合は、フェイルオーバールーティングポリシーが失敗します。

詳細については、Amazon Route 53 開発者ガイドの「DNS フェイルオーバーの設定」を参照してください。