Amazon Route 53 のシンプルな構成でのヘルスチェックの動作
example.com を対象とした 2 つ以上のウェブサーバーなど、同じ機能を実行する 2 つ以上のリソースがある場合、次のヘルスチェック機能を使用して、正常なリソースにのみトラフィックをルーティングできます。
- EC2 インスタンスおよびその他のリソース (非エイリアスレコード) の正常性をチェックする
エイリアスレコードを作成できないリソース (EC2 インスタンスなど) にトラフィックをルーティングする場合は、各リソースのレコードとヘルスチェックを作成します。次に、各ヘルスチェックを該当するレコードに関連付けます。ヘルスチェックは、対応するリソースの正常性を定期的にチェックし、Route 53 は、ヘルスチェックが正常とレポートするリソースにのみトラフィックをルーティングします。
- AWS リソース (エイリアスレコード) の正常性を評価する
[alias records] (エイリアスレコード) を使用して、選択した AWS リソース (ELB ロードバランサーなど) にトラフィックをルーティングしている場合は、Route 53 を設定してリソースの正常性を評価し、トラフィックを正常なリソースにのみルーティングすることができます。エイリアスレコードを設定してリソースの正常性を評価する場合、リソースのヘルスチェックを作成する必要はありません。
シンプルな構成でリソースの正常性をチェックするように、Route 53 を設定する方法の概要を以下に示します。
-
どのリソースの正常性を Route 53 で監視するかを明確にします。例えば、example.com のリクエストに応答するすべての HTTP サーバーを監視対象にするとします。
-
データセンターで実行されている EC2 インスタンスやサーバーなど、エイリアスレコードを作成できないリソースのヘルスチェックを作成します。リソースにヘルスチェックリクエストを送信する方法を指定します。具体的には、使用するプロトコル (HTTP、HTTPS、TCP)、使用する IP アドレスとポート、さらに、HTTP/HTTPS ヘルスチェックの場合はドメインの名前とパスが伝えられます。
注記
ELB ロードバランサーなどのエイリアスレコードを作成できるリソースを使用している場合は、それらのリソースのヘルスチェックを作成しないでください。
リソースごとにヘルスチェックを 1 つ作成し、ヘルスチェックのエンドポイントには、リソースと同じ IP アドレスを使用するのが一般的な構成です。ヘルスチェックは、指定された IP アドレスに要求を送信します。
注記
Route 53 では、リソースの IP アドレスがローカル、プライベート、ルーティング範囲外、またはマルチキャストのいずれかに該当する場合、正常性をチェックすることはできません。ヘルスチェックを作成できない IP アドレスの詳細については、「RFC 5735, Special Use IPv4 Addresses
」と「RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space 」を参照してください。 ヘルスチェック作成の詳細については、「ヘルスチェックの作成、更新、削除」を参照してください。
-
ヘルスチェックで指定したエンドポイントに対し、Route 53 が定期的なリクエストを送信できるように、ルーターとファイアウォールのルールを設定する必要があります。詳細については、「Amazon Route 53 のヘルスチェックができるようにルーターとファイアウォールのルールを設定する」を参照してください。
-
例えば、加重レコードのグループなど、リソースのレコードのグループを作成します。エイリアスと非エイリアスレコードを混在させることができますが、[名前]、[タイプ]、および [ルーティングポリシー] のすべての値が同じである必要があります。
リソースの正常性をチェックするために Route 53 を設定する方法は、エイリアスレコードを作成するか非エイリアスレコードを作成するかによって異なります。
エイリアスレコード – [Evaluate Target Health (ターゲットの正常性の評価)] で [Yes (あり)] を指定します。
非エイリアスレコード– ステップ 2 で作成したヘルスチェックを、対応するレコードと関連付けます。
設定が完了したら、次の図のような設定になります。この図には、非エイリアスレコードのみが含まれています。
Route 53 コンソールを使用したレコード作成の詳細については、「Amazon Route 53 コンソールを使用したレコードの作成」を参照してください。
-
ヘルスチェックを作成した場合、Route 53 はヘルスチェックごとに定期的にエンドポイントにリクエストを送信します。つまり、DNS クエリを受信したときにヘルスチェックが実行されるわけではありません。Route 53 は、その応答に応じてエンドポイントが正常であるかどうかを判断し、その情報をもとにクエリへの応答方法を決定します。詳細については、「Amazon Route 53 でヘルスチェックの正常性を判断する方法」を参照してください。
Route 53 によって正常性がチェックされるのは、レコードで指定されたリソース (example.com の A レコードで指定された IP アドレスなど) ではありません。レコードにヘルスチェックが関連付けられた場合、Route 53 では、ヘルスチェックで指定されたエンドポイントの正常性のチェックを開始します。また、他のヘルスチェックの正常性をモニタリングしたり、CloudWatch アラームのデータストリームをモニタリングしたりするように Route 53 を設定することもできます。詳細については、「Amazon Route 53 ヘルスチェックの種類」を参照してください。
Route 53 が example.com のクエリを受信した場合の動作を以下に示します。
Route 53 が、ルーティングポリシーに基づいてレコードを選択します。このケースでは、重みに基づいてレコードが選択されます。
そのレコードのヘルスチェックのステータスをチェックして、選択されたレコードの現在の正常性を調べます。
選択したレコードに異常がある場合、Route 53 は別のレコードを選択します。このとき、異常のあるレコードは候補から外されます。
詳細については、「ヘルスチェックが設定されている場合に Amazon Route 53 がレコードを選択する方法」を参照してください。
正常なレコードを検出した Route 53 は、A レコードの IP アドレスなどの適切な値でクエリに応答します。
次の例は、加重レコードのグループを示しています。3 つ目のレコードに異常がみられます。まず、Route 53 は、3 つすべてのレコードの重みに基づいてレコードを選択します。最初に選択したレコードに異常が見つかると、Route 53 は別のレコードを選択します。このとき、3 つ目のレコードの重みは計算から除外されます。
-
初めに Route 53 が 3 つすべてのレコードからの選択を行った際に、1 つ目のレコードがリクエストへの応答に使用される時間は全体の 20% (= 10/(10 + 20 + 20)) となります。
-
Route 53 により、3 つ目のレコードに異常が発見された場合、1 つ目のレコードがリクエストへの応答に使用される時間は、全体の 33% (=10/(10 + 20)) となります。
レコードグループ内の 1 つ以上のレコードからヘルスチェックを省略すると、Route 53 には対応するリソースの正常性を判断する方法がなくなります。Route 53 は、それらのレコードを正常と見なします。