
私は namecheap でドメインを購入し、クライアント パネルで個人の NS サーバーをセットアップしました。
ns1.example.com
ns2.example.com
1) サーバー ns1 が使用不可になった場合、すべてのリクエストは引き続き ns1 に届きますか、それともすべてサーバー ns2 に届きますか? ns1 または ns2 が使用不可になった場合にすべてのリクエストを突然切り替えるように設定するにはどうすればよいですか?
2) NS サーバー ns1/2 の後に、LB の 1 つが使用できない場合に備えてロード バランサーがあります。この状態を確認するために ns サーバーを設定するにはどうすればよいでしょうか (どのアプリケーションを使用するか - バインドか、その他のアプリケーションか、何らかの API があるか、またはすべての要求を動作中の LB にのみリダイレクトするように設定できるか)?
答え1
1) サーバー ns1 が使用できない場合、すべてのリクエストは引き続き ns1 に送信されますか、それともすべてサーバー ns2 に送信されますか?
いいえ、DNS はそのような動作をしません。DNS は、フェイルオーバーではなく、デフォルトで負荷分散を提供します。
DNS はリソース レコード セットを扱います。リストではなくセットです。リストは順序付けられていますが、セットは順序付けられていません。
ドメイン名のネームサーバーのセットには、このドメインで権限を持つすべての名前が含まれます。言い換えると、 がexample.org
ありns1.example.com
、ns2.example.com
両方のサーバーが常にすべてのリクエストの50%を統計的に受信することになります。ないは 100% になりns1
、失敗した場合にのみ に 100% になりますns2
。
つまり、リクエストはそれぞれ 50% ですが、何らかの理由で 1 つが応答しなくなった場合はどうなるでしょうか。リゾルバはもう 1 つに切り替えますが、いつ応答がなくなったかを知ることはできないため、クエリを実行した後でのみ切り替えます。また、オンラインに戻ったことを検出するために、応答していないものを定期的に調査する必要があります。つまり、解決は行われますが、アルゴリズムが最初に次のようになるため、時間がかかります。- 要求ns1
- しばらく待機 - 再度要求ns1
- しばらく待機 - そして、ある時点で (2 つのクエリ間の待機時間と再試行回数は多くの場合構成可能で、ソフトウェアごとに異なります) 切り替えが行われns2
、最終的に応答が返されます。
この DNS 解決の元の呼び出しアプリケーション自体にタイムアウトがある可能性があるため、上記の処理が行われ、時間がかかりすぎる場合は、応答の待機を停止する可能性があります。
現在、「高可用性 DNS」は、通常、エニーキャスト テクノロジを使用して提供されます。ネームサーバーは、さまざまな場所でエニーキャストされる IP アドレスに解決されます。これにより、より多くの「ローカル」アクセスによるパフォーマンスの向上と、BGP の動作により、応答しないノードがある場合は別のノードがトラフィックを選択するため、自動フェイルオーバー (ただし、特定の DNS 機能ではなく IP 機能による) の両方が実現します。したがって、上記で説明したタイムアウトと再試行のループは発生しません。
NSサーバns1/2の後にロードバランサがあります
よく分かりませんが、いずれにしても、ネームサーバーの前にロード バランサーなどを配置しないでください。ほとんどの場合、それらは解決策を提供するよりも多くの問題を引き起こします (多くの場合、DNS プロトコルの非常に狭いサブセットを実装し、相互運用性の問題を引き起こすため)。
APIがあるかもしれない
ロード バランサーを構成および使用する方法は多数あり、実際にロード バランサーが接続されているサービスの状態を考慮して設定することもできます。ただし、この段階では質問が広範すぎるため、最初の部分と DNS に関する誤解を考慮して、より明確にする必要があります。
答え2
使用しているドメイン ネーム システム (DNS) サーバーの種類によって、アプローチは大きく異なります。たとえば、他の DNS サーバー (通常はドメイン コントローラーでもある) 間で適切にレプリケーションが行われる Active Directory 統合ゾーンでは、ある程度のフォールト トレランスが実現します。
クライアントには通常、ローカル IP 構成で使用するプライマリ、セカンダリ、場合によっては 3 次以降の DNS プロバイダーが指定されます。クライアントがまだレコードをキャッシュしておらず (Time To Live (TTL) に基づく)、要求時にプライマリ DNS プロバイダーに到達できない場合は、タイムアウト間隔に達するまでセカンダリ プロバイダーを経由して処理を開始します。このプライマリ/セカンダリ クライアント DNS プロバイダーの指定は、アクティブ/パッシブ高可用性の相対バージョンと考えるのが適切です。
最新の負荷分散ソリューション、特に高級物理アプライアンスには、通常、ヘルスチェック(一般に「プローブ」と呼ばれる)があり、これを使用して、あなたが探しているようなサービスの状態を確認できます。実装については、ベンダーのドキュメントを参照する必要があります。ただし、NS1そしてNS2がダウンしていて、ロード バランサの名前レコードがクライアントが指している同じ DNS プロバイダーによって提供されている場合、基本的にこの障害の第 3 段階でロード バランサに依存しても何も得られません (幸運なクライアント レコードのキャッシュを除く)。