私は現在、混合ネットワーク内のいくつかのRHELLinuxマシンの管理者です。私たちのDNSサーバーはWindowsADコントローラーです。そのため、メンテナンスのために時々降りる必要があります。 (例:パッチ適用)これは、ある時点で、LinuxマシンのプライマリDNSコントローラーに到達できなくなることを意味します。
Windowsの世界では、これはかなりうまく処理されます。プライマリへのDNSクエリが失敗すると、Windowsクライアントは15分間それを使用しなくなります。したがって、最初のしゃっくりを除けば、すべてが非常にスムーズに進みます。しかし、Linuxは同じ(失敗した)プライマリサーバーを試し続けます。デフォルトでは、セカンダリサーバーを試す前に少なくとも5秒待機します。これは、すべてに長い時間がかかることを意味し、DNSルックアップの数が多いと、アプリケーションでさえタイムアウトになります。
そこで、サーバーをより堅牢にすることを検討しています。私の現在の計画は、A)resolv.confを変更して、応答を1/2秒だけ待機し、再試行しないようにすることです。 B)主要なサーバーにすぐにアクセスできるように、/ etc/hostsに戦略的なエントリを作成する可能性があります。
そうは言っても、私はもっと良い解決策が欲しいです。または、他の人が自分のセットアップで何をしているのか聞いてみたいです。または単に理論的な "あなたのアイデアは良い/悪い、ここに理由があります。"
-クリストファー・カレル
リゾルバーライブラリだけに依存するのではなく、 dnsmasq を使用することを検討するかもしれません-dnsmasqは、シリアル方式ではなく並列でアップストリームサーバーにクエリを実行するため、1つのドロップアウトがあってもそれほど多くの問題は発生しません。
たぶんnscd
を実行して追加する
options rotate
to /etc/resolv.conf
はすでにあなたのためにトリックをします。
より簡単な解決策は、トラフィックを特定の時間リダイレクトすることです(メンテナンスウィンドウ)。
予備のマシンがある場合は、プライマリサーバーのIPを一時的に与えることができます。それ以外の場合は、ルーターにリダイレクトを展開できます。パケットの宛先がプライマリサーバーである場合は、セカンダリサーバーにリダイレクトできます。
より難しいがより堅牢なソリューションは、いくつかのネームサーバー(ADからスレーブ化)をセットアップし、エニーキャストを使用することです。 http://en.wikipedia.org/wiki/Anycast#Domain_Name_System