Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
DNS フェイルオーバーに Route 53 ヘルスチェックを使用する方法を教えてください。
Amazon Route 53 ヘルスチェックを使用して DNS フェイルオーバーを設定したいと考えています。
概要
Route 53 を使用してリソースの状態を確認し、DNS クエリに対する応答として正常なリソースのみを返すことができます。DNS フェイルオーバー構成には 3 つのタイプがあります。
- アクティブ/パッシブ: Route 53 はプライマリリソースをアクティブに返します。障害が発生した場合、Route 53 はバックアップリソースを返します。Route 53 はフェイルオーバーポリシーからこのメソッドを設定します。
- アクティブ/アクティブ: Route 53 は複数のリソースをアクティブに返します。障害が発生した場合、Route 53 は正常なリソースにフェイルバックします。Route 53 は、フェイルオーバー以外のルーティングポリシーからこのメソッドを設定します。
- 組み合わせ: 複数のルーティングポリシー (レイテンシーベースや加重ポリシーなど) が 1 つのツリーにまとめられ、より複雑な DNS フェイルオーバーを構成します。
解決策
**注:**Amazon CloudFront がメインターゲットである場合、以下の解決策は適用されません。
アクティブ/パッシブ フェイルオーバー
アクティブ/パッシブ DNS フェイルオーバーは、1 つのプライマリリソースと 1 つのセカンダリリソースを使用する最も簡単な方法です。
**注:**先に進む前に、必ずプライマリリソースの Route 53 ヘルスチェックを作成してください。
フェイルオーバーエイリアスレコードの値を使用して、プライマリリソースとセカンダリリソースの 2 つのリソースレコードを作成します。各レコードについて、次の手順を実行します。
- リソースの [名前] を入力します (resource.example.com など)。
注: 両方のリソースに同じ名前を使用してください。 - [タイプ] で [A-IPV4 アドレス] を選択します。
- [エイリアス] には [はい] を選択します。
- [エイリアスターゲット] には、プライマリリソースの DNS 名を入力します。次に、[エイリアスホストゾーン ID] が表示されます。
- [ルーティングポリシー] で、[フェイルオーバー] を選択します。
- プライマリレコードでは、[フェイルオーバーレコードタイプ] に [プライマリ] を選択します。[セット ID] には一意の名前 (elb-Primary など) を入力します。
- セカンダリレコードの場合は、[フェイルオーバーレコードタイプ] に [セカンダリ] を選択します。[セット ID] には一意の名前 (elb-Secondary など) を入力します。
- [ターゲットヘルスを評価] では、プライマリレコードに [はい] を選択します。2 番目のレコードには [いいえ] を選択します。
- プライマリレコードでは、[ヘルスチェックと関連付ける] で [はい] を選択します。[関連付けられるヘルスチェック] では、プライマリリソース用に作成したヘルスチェックを選択します。
- [作成] を選択してレコードを作成します。
これで、レコードはドメインをプライマリリソースにポイントするか、セカンダリリソースにフェイルオーバーします。
アクティブ-アクティブフェイルオーバー
アクティブ-アクティブ DNS フェイルオーバーは、複数のリソースを DNS クエリに返します。あるリソースに異常があると、Route 53 は別のリソースにフェイルオーバーします。
注: 続行する前に、必ず両方のリソースの Route 53 ヘルスチェックを作成してください。
フェイルオーバーエイリアスレコードの値を使用して、各リソースのレコードを作成します。各レコードについて、次の手順を実行します。
- リソースの [名前] を入力します (resource.example.com など)。
注: 各レコードには必ず同じ名前を使用してください。 - レコード [タイプ] (A-IPv4アドレスなど) を選択します。
注: リソースのすべてのレコードは同じタイプでなければなりません。 - [エイリアス] には [はい] を選択します。
- [エイリアスターゲット] には、リソースの DNS 名を入力します。次に、[エイリアスホストゾーン ID] が表示されます。
- [ルーティングポリシー] を選択し、そのポリシーに適した値を入力します ([加重ポリシー] の場合は 「ウェイト」など)。[セット ID] には、このリソースの一意の名前 (「Resource 1」など) を入力します。
注: 加重ルーティングポリシーの場合は、すべてのレコードを同じウェイト (10 など) に設定します。または、すべてのレコードに異なる重みを設定します(20 と 10 など、20 のレコードは 2 倍のトラフィックを受信します)。 - [ターゲットの正常性の評価] には、[はい] を選択します。
- [ヘルスチェックと連携] で [はい] を選択します。
- [関連付けられるヘルスチェック] では、このリソース用に作成したヘルスチェックを選択します。
- [作成] を選択してレコードを作成します。
組み合わせフェイルオーバー
複数のルーティングポリシーとヘルスチェックを組み合わせて、複雑なフェイルオーバーメカニズムを作成できます。これらのメカニズムにより、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) に自動的にフェイルバックします。
関連情報
- 言語
- 日本語
