web-dev-qa-db-ja.com

フェイルオーバー中にクライアントがセカンダリDNSサーバーに切り替えなかった

2つの内部DNSサーバーをセットアップしていて、すべてのサーバーのresolv.confに両方があります。メインのDNSサーバーがダウンし、突然サーバーがお互いを認識できなくなりました。いくつかのサーバーresolv.confを手動で編集し、最初の(ダウンした)dnsサーバーをコミットすると、そのマシンは即座に再度pingを実行できるようになります。私は何を間違えましたか、タイムアウトしたときにセカンダリDNSサーバーに自動的に切り替わりませんか?

# File managed by puppet
nameserver 192.168.146.100
nameserver 192.168.159.101
;nameserver 72.14.188.5
domain example.com
search example.com
4

デフォルトのタイムアウトが長すぎて、結果としてアプリが壊れている可能性があります。リゾルバーは、呼び出されるたびに(キャッシュされたエントリに関係なく)、/ etc /resolv.confの最初のエントリから開始されることに注意してください。

「optionstimeout:.5」などを追加してみてください(manページを参照してください http://linux.die.net/man/5/resolv.conf )ローカルリゾルバーに試してもらいます代替ネームサーバーをより早く。一部の再帰的ルックアップは合法的にかなりの時間がかかる可能性があるため、この値を低くしすぎることに注意してください。

9
rnxrx

タイムアウトを減らすことに加えて、 options rotate これにより、リゾルバーは開始するネームサーバーを変更します。これは、最初のサーバーが使用できない場合、少なくとも一部の時間、リゾルバーが2番目のサーバーにクエリを実行することによって開始することを意味します。もちろん、2番目のネームサーバーの障害の影響がより顕著であることを意味します。

options rotate timeout:3
3
mgorven

それは透明で、うまく機能するはずです。私が考えることができるのは、最初のサーバーに異常なタイムアウトがあるということだけです。問題を確実に再現できますか?