翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ターゲットグループの正常性
デフォルトでは、ターゲットグループが少なくとも 1 つの正常なターゲットを持っている限り、そのターゲットグループは正常であると見なされます。フリートが大きい場合、トラフィックを処理する正常なターゲットが 1 つだけでは十分ではありません。代わりに、正常でなければならないターゲットの最小数または割合、および正常なターゲットが指定されたしきい値を下回ったときにロードバランサーが実行するアクションを指定できます。これにより、可用性が向上します。
異常な状態アクション
以下のアクションに対して正常なしきい値を設定できます。
-
DNS フェイルオーバー - ゾーン内の正常なターゲットがしきい値を下回ると、そのゾーンのロードバランサーノードの IP アドレスが DNS で異常とマークされます。そのため、クライアントがロードバランサーの DNS 名を解決すると、トラフィックは正常なゾーンにのみルーティングされます。
-
ルーティングフェイルオーバー - ゾーン内の正常なターゲットがしきい値を下回ると、ロードバランサーは、異常なターゲットを含め、ロードバランサーノードで使用可能なすべてのターゲットにトラフィックを送信します。これにより、特にターゲットが一時的にヘルスチェックに合格しなかった場合に、クライアント接続が成功する可能性が高まり、正常なターゲットが過負荷になるリスクが軽減されます。
要件と考慮事項
-
ターゲットが Lambda 関数であるターゲットグループでは、この機能は使用できません。Application Load Balancer が Network Load Balancer または Global Accelerator のターゲットである場合は、DNS フェイルオーバーのしきい値を設定しないでください。
-
アクションに両方のタイプのしきい値 (数と割合) を指定すると、どちらかのしきい値に達したときにロードバランサーがアクションを実行します。
-
両方のアクションにしきい値を指定する場合、DNS フェイルオーバーのしきい値はルーティングフェイルオーバーのしきい値以上である必要があります。これにより、DNS フェイルオーバーはルーティングフェイルオーバーの有無にかかわらず発生します。
-
しきい値を割合として指定すると、ターゲットグループに登録されているターゲットの総数に基づいて、値が動的に計算されます。
-
ターゲットの合計数は、クロスゾーンロードバランサーがオフになっているかオンになっているかによって決まります。クロスゾーンロードバランサーがオフの場合、各ノードは独自のゾーン内のターゲットにのみトラフィックを送信します。つまり、しきい値は有効になっている各ゾーンのターゲット数に個別に適用されます。クロスゾーン負荷分散がオンの場合、各ノードはすべての有効ゾーンのすべてのターゲットにトラフィックを送信します。つまり、指定されたしきい値はすべての有効ゾーンのターゲットの総数に適用されます。
-
DNS フェイルオーバーでは、ロードバランサーの DNS ホスト名から異常のあるゾーンの IP アドレスを削除します。ただし、DNS レコードの time-to-live (TTL) が期限切れになるまで (60 秒)、ローカルクライアント DNS キャッシュにこれらの IP アドレスが含まれる場合があります。
-
DNS フェイルオーバーが発生すると、ロードバランサーに関連するすべてのターゲットグループに影響します。特にクロスゾーンロードバランサーがオフになっている場合は、この追加のトラフィックを処理するのに十分な容量が残りのゾーンにあることを確認してください。
-
DNS フェイルオーバーでは、すべてのロードバランサーゾーンが異常と見なされると、ロードバランサーは異常なゾーンを含むすべてのゾーンにトラフィックを送信します。
-
DNS フェイルオーバーにつながる可能性のある正常なターゲットが十分にあるかどうか以外にも、ゾーンのヘルスなどの要因があります。
モニタリング
ターゲットグループのヘルスをモニタリングするには、CloudWatch 「ターゲットグループのヘルスのメトリクス」を参照してください。
例
次の例は、ターゲットグループのヘルス設定がどのように適用されるかを示しています。
シナリオ
-
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 個の正常なターゲット間でトラフィックを分散します。
ターゲットグループのヘルス設定の変更
ターゲットグループに関連するターゲットグループのヘルス設定は、次のように変更できます。
コンソールを使用してターゲットグループのヘルス設定を変更するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインの [ロードバランシング] で [ターゲットグループ] を選択します。
-
ターゲットグループの名前を選択して、その詳細ページを開きます。
-
[Attributes] タブで、[Edit] を選択します。
-
クロスゾーンロードバランサーがオンになっているかオフになっているかを確認します。必要に応じてこの設定を更新して、ゾーンに障害が発生した場合に追加のトラフィックを処理するのに十分な容量を確保してください。
-
[Target group health requirements] (ターゲットグループのヘルス要件) を拡張します。
-
[Configuration type] (設定タイプ) には、両方のアクションに同じしきい値を設定する [Unified configuration] (統合設定) を選択することをお勧めします。
-
[Healthy state requirements] (正常な状態の要件) については、次のいずれかを実行します。
-
[Minimum healthy target count] (正常なターゲットの最小数) を選択し、1 からターゲットグループの最大ターゲット数までの数値を入力します。
-
[Minimum healthy target percentage] (最小の正常なターゲット割合) を選択し、1 から 100 までの数値を入力します。
-
-
[変更の保存] を選択します。
を使用してターゲットグループのヘルス設定を変更するには 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
ロードバランサーで Route 53 DNS フェイルオーバーを使用する
Route 53 を使用して DNS クエリをロードバランサーにルーティングする場合は、同時に Route 53 によりロードバランサーの DNS フェイルオーバーを設定することもできます。フェイルオーバー設定では、ロードバランサー用のターゲットグループのターゲットに関する正常性チェックが Route 53 によって行われ、利用可能かどうかが判断されます。ロードバランサーに正常なターゲットが登録されていない場合、またはロードバランサー自体で不具合が発生している場合、Route 53 は、トラフィックを別の利用可能なリソース (正常なロードバランサーや、Amazon S3 にある静的ウェブサイトなど) にルーティングします。
例えば、www.example.com
用のウェブアプリケーションがあり、異なるリージョンにある 2 つのロードバランサーの背後で冗長なインスタンスを実行するとします。1 つのリージョンのロードバランサーは、主にトラフィックのルーティング先として使用し、もう 1 つのリージョンのロードバランサーは、エラー発生時のバックアップとして使用します DNS フェイルオーバーを設定する場合は、プライマリおよびセカンダリ (バックアップ) ロードバランサーを指定できます。Route 53 は、プライマリロードバランサーが利用可能な場合はプライマリロードバランサーにトラフィックをルーティングし、利用できない場合はセカンダリロードバランサーにルーティングします。
ターゲットの正常性の評価を使用する
-
Application Load Balancer のエイリアスレコードでターゲットの正常性の評価が
Yes
に設定されている場合、Route 53 はalias target
値で指定されたリソースの正常性を評価します。Application Load Balancer の場合、Route 53 は、ロードバランサーに関連付けられたターゲットグループのヘルスチェックを使用します。 -
Application Load Balancer 内のすべてのターゲットグループが正常である場合、Route 53 はエイリアスレコードを正常としてマークします。ターゲットグループに少なくとも 1 つの正常なターゲットが含まれている場合、ターゲットグループのヘルスチェックは合格となります。その後、Route 53 は、ルーティングポリシーに従ってレコードを返します。フェイルオーバールーティングポリシーを使用すると、Route 53 はプライマリレコードを返します。
-
Application Load Balancer 内のターゲットグループのいずれかが異常な場合、エイリアスレコードは Route 53 ヘルスチェックに失敗します (フェイルオープン)。ターゲットの正常性の評価を使用している場合は、フェイルオーバールーティングポリシーが失敗します。
-
Application Load Balancer 内のすべてのターゲットグループが空である (ターゲットがない) 場合、Route 53 はレコードが異常であるとみなします (フェイルオープン)。ターゲットの正常性の評価を使用している場合は、フェイルオーバールーティングポリシーが失敗します。
詳細については、Amazon Route 53 開発者ガイドの「DNS フェイルオーバーの設定」を参照してください。