web-dev-qa-db-ja.com

/etc/resolv.confにリストされているリゾルバーを動的に更新する

私はいくつかのLinuxサーバーを借りており、ホスティング会社は8つのDNSリゾルバーのセットを提供しています。

応答速度はリゾルバーごとに異なり、最高のパフォーマンスを得るために定期的に/etc/resolv.confを変更します。

2回、公開Webサイトの1つがロードに時間がかかりすぎていることに気付きました。これは、ドメインをIPに解決するのに約15秒かかっていたバックエンドWebサービスに一部依存していました。

最も応答性の高いリゾルバーが常に指定されるようにするために、/etc/resolv.confを変更するプロセスを自動化したいと思います。

必要に応じてスクリプトを作成できますが、それは必然的にあいまいなバグを特徴とし、自動化されたプロセスが/etc/resolv.confを台無しにするリスクを最小限に抑えたいと考えています。長い間テストされ、安定していることが示された既存のソリューションは、私自身のソリューションよりも信頼性が高くなります。

私は、誰かが以前にこのタイプの問題に取り組んだことがあるかどうか、そしてこれを処理するための安定したスクリプト/プロセス/メソッドがあるかどうかを知りたいと思っています。

3
Jon Cram

名前付きの独自のローカルキャッシュをインストールしてみましたか? BINDをローカルにインストールし(キャッシュのみ)、意図したとおりにDNSにクエリを実行させます(委任に基づいて委任を動的に検索します)。 resolv.confを127.0.0.1を指すように変更するだけで、それで完了します。たぶん、バックアップとしてホストIPの1つをそこにスローしますが、ほとんどは独自のリゾルバーに依存しています。

2
jj33

Debianベースのシステムには、resolv.confの更新を処理するように設計されたパッケージ resolvconfwiki )があります。

エントリを追加または削除できます。更新が発生するたびに呼び出されるスクリプトを設定できます。これにより、更新が行われたことを他のサービスに通知できます。

2
Zoredache

追加のサーバーをインストールする必要がありますが、cfengineやpuppetなどの一元化された構成管理システムを使用して、新しいresolv.confをサーバーにプッシュすることができます。Brett

0
Brett