2008年8月6日水曜日

名前解決時の鶏と卵問題を解決するために/etc/host.confを調整

スズキです。

現在、PowerDNSのバックエンドMySQLを下記のように
名前で指定しています。
gmysql-host=db.localdomain

しかし、このdb.localdomainの名前は、まさに上記の
PowerDNSで管理しているので、起動時に鶏と卵問題が
発生してしまいます。
つまり、起動時にdb.localdomainの名前解決を使用とすると、
そのDNSがそもそも無い、ということです。

解決方法は簡単で、/etc/hostsファイルに

127.0.0.1 db.localdomain

のように記述しておけばいいのですが、
そうすると、逆にDNS(ラウンドロビン)での負荷分散や
フェールオーバー/バックがきかなくなります。

理想は、まずDNSで名前解決して、無い場合に、
hostsファイルで名前解決してくれればいいのですが、
それが、/etc/host.confで調整することができます。

hosts.confのデフォルトは大体下記のように
なっていると思います。

order hosts,bind

これは、まず、hostsファイルで名前解決して、解決できなければ、
/etc/resolv.confで指定しているDNSを用いて
名前解決することを意味しています。

この順序を下記のように変えると、

order bind,hosts

まず、DNSで名前解決して、なければhostsファイルを
使うことになります。これで解決です。

次こそ、ようやく、SquidのDNSラウンドロビンかな。

--
http://suz-lab.blogspot.com/

0 コメント: