Amazon Route 53
開発者ガイド (API バージョン 2013-04-01)

複雑な Amazon Route 53 構成におけるヘルスチェックの動作

複雑な構成であっても、リソースの正常性をチェックする方法は同じです。ただし、複雑な構成では、エイリアスレコード (加重エイリアスやフェイルオーバーエイリアスなど) と非エイリアスレコードを組み合わせてデシジョンツリーを構築し、リクエストに対して Route 53 がどのように応答するかを柔軟に制御することができます。

たとえば、レイテンシーエイリアスレコードを使用して、ユーザーに近いリージョンを選択することが考えられます。また、各リージョン内の複数のリソースに加重レコードを使用して、単一エンドポイントやアベイラビリティーゾーンの障害への対策を講じることも可能です。この設定は以下の図のようになります。


				レイテンシーエイリアスレコードおよび加重エイリアスレコードを含む DNS 設定。

Amazon EC2 と Route 53 の具体的な構成は次のとおりです。ツリーの一番下から始めましょう。これはレコードを作成する順序です。

  • us-east-1 と ap-southeast-2 という 2 つのリージョンのそれぞれに、2 つの EC2; インスタンスが存在します。正常であるかどうかに基づいて Route 53 にトラフィックを EC2 インスタンスにルーティングさせるため、各インスタンスのヘルスチェックを作成します。各ヘルスチェックを設定して、インスタンスの Elastic IP アドレスで対応するインスタンスにヘルスチェックリクエストを送信します。

    Route 53 はグローバルサービスであるため、ヘルスチェックを作成するリージョンは指定しないでください。

  • インスタンスタイプに基づいて各リージョンの 2 つのインスタンスにトラフィックをルーティングするため、各インスタンスに加重レコードを作成し、各レコードに重みを付与します。(後で加重を変更して、より多くのトラフィックを、またはより少ないトラフィックをインスタンスにルーティングできます。) また、該当するヘルスチェックを各インスタンスに関連付けます。

    レコードを作成するとき、us-east-1-www.example.com. や ap-southeast-2-www.example.com. などの名前を使用します。ツリーの一番上に到達するまで待って、ユーザーがウェブサイトやウェブアプリケーションにアクセスするために使用する名前 (example.com など) をレコードに渡します。

  • ユーザーのレイテンシーが最も短いリージョンにトラフィックをルーティングする場合は、ツリー上部のレコードのレイテンシーのルーティングポリシーを選択します。

    トラフィックを各リージョンのリソースに直接ルーティングするのではなく、各リージョンのレコードにルーティングしたいとしますその結果、レイテンシーのエイリアスレコードを作成することになります。

    エイリアスレコードを作成するときに、ユーザーがウェブサイトやウェブアプリケーションにアクセスするために使用する名前 (example.com など) を指定します。エイリアスレコードは、example.com のトラフィックを us-east-1-www.example.com と ap-southeast-2-www.example.com のレコードにルーティングします。

    レイテンシーエイリアスレコードの [Evaluate Target Health] の値は、どちらも [Yes] に設定します。これにより、Route 53 は、そこにトラフィックをルーティングしようとする前に、リージョンに正常なリソースがあるかどうかを判断します。正常なリソースがない場合、Route 53 は、他のリージョンの正常なリソースを選択します。


				レイテンシーエイリアスレコードおよび加重エイリアスレコードを含む DNS 設定。

前の図は、以下の一連のイベントを示したものです。

  1. Route 53 が example.com のクエリを受け取ります。Route 53 は、要求元のユーザーに対するレイテンシーに基づいて、us-east-1 リージョンのレイテンシーエイリアスレコードを選択します。

  2. Route 53 が、重みに基づいて加重レコードを選択します。レイテンシーエイリアスレコードの [Evaluate Target Health] が [Yes] であるため、Route 53 は、加重レコードの正常性をチェックします。

  3. ヘルスチェックで不合格と判明すると、Route 53 は、別の加重レコードを重みに基づいて選択し、その正常性をチェックします。そのレコードも異常であると判明します。

  4. Route 53 は、分岐の出発点に戻り、次善のレイテンシーを持つレイテンシーエイリアスレコードを探して、ap-southeast-2 のレコードを選択します。

  5. Route 53 は再度、重みに基づいてリソースを選択し、その正常性をチェックします。リソースは正常なので、Route 53 はクエリに応じて適切な値を返します。

エイリアスレコードにヘルスチェックを関連付けるとどうなるか

[Evaluate Target Health] の値を [Yes] に設定する代わりに (または設定したうえで)、エイリアスレコードにヘルスチェックを関連付けることができます。ただし、実用性の面からいうと、基になるリソース (HTTP サーバー、データベースサーバーなど、エイリアスレコードの参照先となるリソース) の正常性に基づいて Route 53 がクエリに応答する、という構成のほうが一般的です。たとえば、次の構成を考えてみます。

  • 一連の加重レコードをエイリアスターゲットとするレイテンシーエイリアスレコードにヘルスチェックを割り当てます。

  • レイテンシーエイリアスレコードの [Evaluate Target Health] の値は、[Yes] に設定します。

この設定で、加重レコードに該当する値を Route 53 が返すためには、次の 2 点が満たされなければなりません。

  • レイテンシーエイリアスレコードに関連付けられているヘルスチェックが合格すること。

  • 少なくとも 1 つの加重レコードが、合格したヘルスチェックに関連付けられているか、またはヘルスチェックそのものに関連付けられていないことから、正常と見なされること。後者のケースでは常に、Route 53 加重レコードが正常と見なされます。

次の図では、左上のレイテンシーエイリアスレコードのヘルスチェックに失敗しています。その結果、Route 53 は、すべて正常であったとしても、レイテンシーエイリアスレコードが参照する加重レコードのいずれかを使用したクエリへの応答を停止します。レイテンシーエイリアスレコードのヘルスチェックが正常な状態に戻った場合のみ、Route 53 は再度これらの加重レコードの評価を始めます。(例外については、「ヘルスチェックが設定されている場合に Amazon Route 53 がレコードを選択する方法」を参照してください。)


					ターゲットの正常性の評価が Yes で、エイリアスレコードのヘルスチェックに設定してあるエイリアスレコードを含む DNS 設定。

ヘルスチェックを省略するとどうなるか

複雑な構成では、エイリアス以外のすべてのレコードにヘルスチェックを関連付けることが大切です。次の例では、us-east-1 リージョンのいずれかの加重レコードでヘルスチェックが欠落しています。


					ヘルスチェックが一度失敗し、ヘルスチェックのないレコードが 1 つある DNS 設定。

以下に、この構成の非エイリアスレコードでヘルスチェックを省略した場合の動作を説明します。

  1. Route 53 が example.com のクエリを受け取ります。Route 53 は、要求元のユーザーに対するレイテンシーに基づいて、us-east-1 リージョンのレイテンシーエイリアスレコードを選択します。

  2. Route 53 が、レイテンシーエイリアスレコードのエイリアスターゲットを探し、対応するヘルスチェックのステータスをチェックします。一方の加重レコードのヘルスチェックが不合格となり、そのレコードは考慮の対象から除外されます。

  3. us-east-1 リージョンのエイリアスターゲット内のもう一方の加重レコードにはヘルスチェックが関連付けられていません。対応するリソースが正常であるかどうかは、ヘルスチェック以外に Route 53 が知る方法はありません。Route 53 は、そのリソースが正常であると仮定し、該当する値をクエリへの応答として返します。

[Evaluate Target Health] を [No] に設定するとどうなるか

一般に、ツリー内のすべてのエイリアスレコードについて、[ターゲットの正常性の評価] を [Yes (あり)] に設定する必要があります。[ターゲットの正常性の評価] を [No (なし)] に設定した場合、Route 53 は、レコードのヘルスチェックが失敗した場合でも、エイリアスレコードが参照するレコードにトラフィックをルーティングし続けます。

次の例では、すべての加重レコードに関連付けられたヘルスチェックがありますが、us-east-1 リージョンのレイテンシーエイリアスレコードの [ターゲットの正常性の評価] は [No (なし)] に設定されています。


					ターゲットの正常性の評価が No に設定されているエイリアスレコードを含む DNS 設定。

この構成でエイリアスレコードの [Evaluate Target Health] を [No] に設定した場合の動作を以下に説明します。

  1. Route 53 が example.com のクエリを受け取ります。Route 53 は、要求元のユーザーに対するレイテンシーに基づいて、us-east-1 リージョンのレイテンシーエイリアスレコードを選択します。

  2. Route 53 は、レイテンシーエイリアスレコードのエイリアスターゲットを特定し、対応するヘルスチェックを調べます。どちらも不合格です。

  3. us-east-1 リージョンは、レイテンシーエイリアスレコードの [Evaluate Target Health] の値が [No] であるため、Route 53 は、このブランチの中からいずれかのレコードを選ばなければなりません。分岐の出発点に戻って ap-southeast-2 リージョンから正常なレコードを探す、という選択肢はありません。