DNS フェイルオーバーで Route 53 のヘルスチェックを使用する方法を教えてください。
最終更新日: 2020 年 10 月 8 日
Amazon Route 53 ヘルスチェックを使用して DNS フェイルオーバーを設定するにはどうすればよいですか?
簡単な説明
Route 53 を使用してリソースの正常性を確認し、DNS クエリに対する応答として正常なリソースのみ返るようにすることができます。DNS フェイルオーバー設定には 3 つのタイプがあります。
- アクティブ/パッシブ: Route 53 はプライマリリソースをアクティブに返します。障害が発生した場合、Route 53 はバックアップリソースを返します。この方法は、フェールオーバーポリシーを使用して設定します。
- アクティブ/アクティブ: Route 53 は複数のリソースをアクティブに返します。障害が発生した場合、Route 53 は正常なリソースにフェイルバックします。この方法は、フェールオーバー以外のルーティングポリシーを使用して設定します。
- 組み合わせ: 複数のルーティングポリシー (例: レイテンシーベース、加重) を組み合わせて、より複雑な DNS フェイルオーバーを設定します。
解決方法
注意: Amazon CloudFront がプライマリターゲットである場合、以下の解決策は適用されません。
アクティブ/パッシブフェイルオーバー
アクティブ/パッシブの DNS フェイルオーバーは、1 つのプライマリリソースおよび 1 つのセカンダリリソースを使用する最もシンプルな方法です。
注意: 次に進む前に必ず、プライマリリソースの Route 53 ヘルスチェックを作成してください。
フェイルオーバーエイリアスレコードの値を使用して、プライマリリソースおよびセカンダリリソースの 2 つのリソースレコードを作成します。レコードごとに、以下を実行します。
- [Name] に、リソースの名前 (例: resource.example.com) を入力します。
注意: 両方のリソースに同じ名前を使用します。 - [Type] で、[A - IPv4 address] を選択します。
- [Alias] で、[Yes] を選択します。
- [Alias Target] に、プライマリリソースの DNS 名を入力します。[Alias Hosted Zone ID] が表示されます。
- [Routing Policy] では、[Failover] を選択します。
- プライマリレコードの [Failover Record Type] で [Primary] を選択します。[Set ID] に、一意の名前 (例: elb-Primary) を入力します。
- セカンダリレコードの [Failover Record Type] で [Secondary] を選択します。[Set ID] に、一意の名前 (例: elb-Secondary) を入力します。
- [Evaluate Target Health] で、プライマリレコードの [Yes] を選択します。セカンダリレコードで [No] を選択します。
- プライマリレコードの [Associate with Health Check] で [Yes] を選択します。[Health Check to Associate] で、プライマリリソース用に作成したヘルスチェックを選択します。
- [Create] を選択してレコードを作成します。
レコードで、ドメインがプライマリリソースに指定されるか、セカンダリリソースにフェイルオーバーされるようになりました。
アクティブ/アクティブフェイルオーバー
アクティブ/アクティブの DNS フェイルオーバーは、DNS クエリに複数のリソースを返します。正常でないリソースがあった場合、Route 53 は別のリソースにフェイルオーバーします。
注意: 次に進む前に必ず、両方のリソースの Route 53 ヘルスチェックを作成してください。
フェイルオーバーエイリアスレコードの値を使用して、各リソースのレコードを作成します。レコードごとに、以下を実行します。
- [Name] に、リソースの名前 (例: resource.example.com) を入力します。
注意: それぞれのリソースに同じ [Name] を使用します。 - レコードの [Type](A – IPv4 address など) を選択します。
注意: リソースのすべてのレコードは、同じ [Type] である必要があります。 - [Alias] で、[Yes] を選択します。
- [Alias Target] に、リソースの DNS 名を入力します。[Alias Hosted Zone ID] が表示されます。
- [Routing Policy] を選択し、そのポリシーの適切な値 (例: Weighted policy であれば Weight) を入力します。[Set ID] に、このリソースの一意の名前 (例: Resource 1) を入力します。
注意: 重み付けルーティングポリシーの場合、すべてのレコードを同じ重み (10 など) に設定します。または、すべてのレコードを異なる重みに設定します (20 と 10 など、20 レコードが 2 倍のトラフィックを受信します)。 - [Evaluate Target Health] で [Yes] を選択します。
- [Associate with Health Check] で [Yes] を選択します。
- [Health Check to Associate] で、このリソース用に作成したヘルスチェックを選択します。
- [Create] を選択してレコードを作成します。
組み合わせのフェイルオーバー
複数のルーティングポリシーとヘルスチェックを組み合わせて、複雑なフェールオーバーメカニズムを作成することができます。こうしたメカニズムにより、Route 53 は適切なレコードを返す前に、複数のレコード層を通過します。
たとえば、エンドポイントが 3 つあるとします。エンドポイント A とエンドポイント B の間のトラフィックをロードバランシングし、最初の 2 つのヘルスチェックが失敗したときにエンドポイント C にフォールバックすることができます。この設定では、2 つのルーティング層があります。下のルーティング層では、Route 53 はレコードのヘルスチェックを使用して、エンドポイント A と B が正常であることを確認します。次に、トラフィックは両方のプライマリリソース間で均等にルーティングされます。エンドポイント A と B でヘルスチェックに失敗した場合、トラフィックは上位ルーティング層にフェイルオーバーされます。上位ルーティング層では、Route 53 はセカンダリフォールバックリソースであるエンドポイント C にトラフィックをルーティングします。この設定を次のように作成します。
- 3 つのすべてのエンドポイントの Route 53 ヘルスチェックを作成し、ヘルスチェックレコードに関連付けます。
- 下位のルーティング層では、エンドポイント A と B のドメイン名に同じ重みを持つ 2 つの重み付きレコードを作成します。
重要: エンドポイント A とエンドポイント B のヘルスチェックを必ず加重レコードに関連付けてください。このステップでは、Route 53 が各レコードのヘルスチェックステータスを決定し、それに応じてトラフィック間の負荷分散を行います。 - 上位のルーティング層で、エンドポイント C のドメイン名 (例: domain.example.com) のフェイルオーバーレコードを作成します。
重要: プライマリレコードが、ステップ 2 で作成した resource.example.com のレコードに指定されるエイリアスレコードであることを必ず確認してください。また、セカンダリレコードがフェイルオーバーリソースとしてエンドポイント C に指定されていることも確認してください。 - Route 53 を設定して、プライマリフェイルオーバーレコードの正常性ステータスを確認します。カスタムヘルスチェックを作成して、2 つの加重レコードのヘルスステータスを判断します (計算されたヘルスチェックなど)。または、レコードオプションを使用して、ターゲットの正常性を評価します。
このフェイルオーバー設定は次のように機能します。
- クライアントより domain.example.com がリクエストされます。
- プライマリレコードがヘルスチェックを通過すると、Route 53 は、resource.example.com の負荷分散されたプライマリリソースレコードにトラフィックを送信します。これにより、クライアントはエンドポイント A またはエンドポイント B に指定されます。
- プライマリレコードがヘルスチェックに失敗した場合 (エンドポイント A と B がヘルスチェックに失敗した場合)、プライマリレコードは異常としてマークされます。プライマリレコードはセカンダリレコードにフェールオーバーします。続いて、Route 53 はクライアントリクエストをエンドポイント C (フォールバックリソース) に送信します。
- プライマリレコードがヘルスチェックを再び通過すると、Route 53 は自動的にプライマリリソースレコード (エンドポイント A と B) にフェールバックします。