3つの内部DNSサーバー(バインド9)を指す約100のホストを持つ小さなデータセンターがあります。問題は、内部DNSサーバーの1つが使用できなくなったときに発生します。その時点で、そのサーバーを指すすべてのクライアントの実行が非常に遅くなります。
問題は、標準のLinuxリゾルバには、実際には別のDNSサーバーへの「フェイルオーバー」という概念がないということです。使用するタイムアウトと再試行回数を調整できます(そして、リストで機能するように回転を設定します)が、プライマリDNSサーバーが使用できなくなった場合、サービスを使用する設定がどれほど遅くなるかは関係ありません。現時点では、これは私たちにとって最大のサービス中断の原因の1つです。
私の理想的な答えは、「RTFM:tweak /etc/resolv.conf like this ...」のようなものですが、それがオプションである場合は見ていません。
私は他の人々がこの問題をどのように扱っているのだろうと思っていましたか?
私は3つの可能なタイプのソリューションを見ることができます:
linux-ha / PacemakerとフェイルオーバーIPを使用します(DNS IP VIPは「常に」利用可能です)。残念ながら、優れたフェンシングインフラストラクチャがなく、フェンシングなしではペースメーカーはあまりうまく機能しません(私の経験では、Pacemakerはフェンシングなしで可用性を低下させます)。
各ノードでローカルDNSサーバーを実行し、resolv.confがlocalhostを指すようにします。これは機能しますが、監視および管理するためのより多くのサービスを提供します。
各ノードでローカルキャッシュを実行します。人々はnscdが「壊れている」と考えているように見えますが、dnrdには適切な機能セットがあるようです。つまり、dnsサーバーをupまたはdownとしてマークし、「down」dnsサーバーを使用しません。
エニーキャスティングは、IPルーティングレベルでのみ機能するようであり、サーバー障害のルート更新に依存します。マルチキャスティングは完璧な答えのように見えましたが、バインドはブロードキャストまたはマルチキャスティングをサポートしていないため、マルチキャストdnsは通常のdns解決ではなく、サービス検出と自動構成を目的としていることがわかります。
明らかな解決策がありませんか?