このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

DNSの設定について

発言者:やな
( Date Monday, May 29, 2000 19:11:47 )


はじめまして

DNSでひとつのWWWサイトに複数のIPアドレスを割り当てて交互にIPアドレスを返し負荷分散を
行いたいと思っているのですが方法がわかりません
いろいろHPを調べたのですが有効なページが見当たりませんでした

で、たどり着いたのがこの会議室でちろっと見たところ結構皆さん詳しい方がそろってるみたいなので
解決策が得られるかと思い記入させていただきました
みなさんよろしくお願いします

で、上の質問をもう少し具体的に書くと
DNSはLinuxでBindを使用しています
基本的な記述の仕方は把握してます(初心者ですが(汗)
やりたいことは
www.xxx.co.jp    192.168.100.1
                 192.168.100.2
というように同一ホスト名にたいして2つのIPアドレスを割り当て最初の問い合わせに対して
192.168.100.1を返す。次の問い合わせにたいして192.168.100.2を返す。次は192.168.100.1・・・・
というように順番に返し負荷分散を行いたいというものです。
(Yahooとかは既にやっているようですよね。nslookupでwww.yahoo.co.jpを引くと複数のIPが帰ってくる)
というようなことをしたいのです

で、そのDNSの記述方法を教えていただきたいと思っています
よろしくお願いいたします

今井真人 さんからのコメント
( Monday, May 29, 2000 19:38:09 )

 MacOSのQuickDNSではLoad Balancingという機能があります。
Bindの場合は、知りません。

http://www.menandmice.com/infobase/mennmys/vefsidur.nsf/index/2.2.103#load

田中求之 さんからのコメント
( Monday, May 29, 2000 23:06:18 )

BIND では同じホスト名で A レコードを複数定義した場合には Round Robin 
方式で順に IP を返すようになっているんではありませんでしたっけ?

ですから、

www.xxx.co.jp  IN  A  192.168.100.1
www.xxx.co.jp  IN  A  192.168.100.2

てな具合に定義を行っておけば、やなさんのご希望のような動作をすると
思うのですが。

Round Robin というキーワードで BIND の設定方法を調べてみてください。

田中求之 さんからのコメント
( Monday, May 29, 2000 23:27:19 )

ちょっと調べてみたかぎりでは、BIND は、やはり Round Robin の機能を
標準で持っているようですね(少なくとも現在のバージョンは)。

なお、Round Robin の場合、相手のマシンや経由しているプロバイダに
DNS の情報がキャッシュされていた場合には、キャッシュの有効期限が
切れるまでは、最初にアクセスしたほうにアクセスし続けることになり
ますので、厳密な振り分けにはならない可能性があることは注意して
ください。

QuickDNS の Load Balancing は、WebSTAR との連携の場合には、
Web サーバが落ちていた場合には、自動的に落ちているサーバの
IP を割り振らないようにするんですが、BIND の Round Robin は
そういった機能はありませんので、サーバが落ちないように気をつ
ける必要があります。ま、Linux なら落ちないか。

大西恒樹 さんからのコメント
( Tuesday, May 30, 2000 03:14:11 )

>なお、Round Robin の場合、相手のマシンや経由しているプロバイダに
>DNS の情報がキャッシュされていた場合には、キャッシュの有効期限が
>切れるまでは、最初にアクセスしたほうにアクセスし続けることになり
>ますので、厳密な振り分けにはならない可能性があることは注意して
>ください。

田中さん、違いますよ。
BINDで複数のAレコードを持たせた場合、問い合わせに対してはその「全て」
が返されます。例えばwww.yahoo.comをnslookupすると、5つのIPアドレスが
返ります。

その中から順番にアクセスをくり返すため、立派な負荷分散になります。

つまり、やなさんのやりたいことは、最初に田中さんが答えた通り、
複数のAレコードを設定すればよいわけです。

田中求之 さんからのコメント
( Tuesday, May 30, 2000 11:11:55 )

>問い合わせに対してはその「全て」が返されます。

あ、そうなんですか。ということは、

>その中から順番にアクセスをくり返すため、

という動作は、リソルバ(クライアント側)が行う動作なんですね?

てっきり、Named が順番に返しているものだと思ってました (^_^;;

やな さんからのコメント
( Tuesday, May 30, 2000 12:31:25 )

皆さんさっそくのコメントありがとうございます
こんなに早くて多くのレスをいただけるとは思っていなかったのでとてもうれしく思っています
これからも活用させていただきたいと思いました <(_ _)>
なにせ初心者ネットワーク管理者なもんで覚えることがいっぱいあるのです (^_^;)

さて田中さんのご指摘だとBINDの場合はいつもどおりに書けばいいとの事ですね
ですので実際には
www01    A      192.168.100.1
www02    A      192.168.100.2
www      CNAME  www01
www      CNAME  www02
って感じで書いておけばネームサーバー側はOKということですよね

あともうひとつ質問なんですがクライアントがうちのサーバーを最初に見にきた
(URLはwww.xxx.co.jpにアクセス)とき
www01(192.168.100.1)にアクセスしたとしますよね
そのときにもしwww01が落ちていた場合クライアントはwww02(192.168.100.2)に
かってにアクセスするものなのですか?
それともクライアントは一度ブラウザ上でサーバーが見つかりませんでしたみたいな
エラーを見てからもう一度更新とかしないともうひとつの方のサーバーを見に行けないのでしょうか?

よろしかったらこちらの回答もお願いいたします  m(__)m

>田中さんへ
一度RoundRobinというキーワードで検索をかけたのですが有効な情報が載っているページを
捕まえることが出来ませんでした (T_T)
もし何かDNSの設定とかが載っているページでいいところがあったら教えてください
お願いします (^^ゞ

田中求之 さんからのコメント
( Tuesday, May 30, 2000 12:43:03 )

>そのときにもしwww01が落ちていた場合クライアントはwww02
>にかってにアクセスするものなのですか?

いいえ。サーバが落ちていたら、「見つかりませんでした」というエラーになり
ます(ローカルにキャッシュされた IP が有効期限切れになって、再び
やなさんの DNS サーバに IP を尋ねに行くまでは、エラーになってしまう
と思いますが、この点は自身がない…)

サーバが落ちている場合には、その落ちているサーバの IP を返さない
ようにしたい場合には、負荷分散用のソフトあるいは機器を用いるしか
ないでしょう(BIND にそういうオプションはないと思うんですが…)。

DNS の設定に関しては、なんだかんだいっても、オライリーの
『DNS & BIND』でしょう。サイト運営者は必携の本ですね。

やな さんからのコメント
( Tuesday, May 30, 2000 14:27:22 )

>田中さんへ
早速のレスありがとうございます

やっぱりかってに次のサーバーを探しには行かないんですね
当然といえば当然の仕様の気がしますが (^_^;)

でもとりあえずこれでやりたいことはできそうなのでとても助かりました
あと最後にもうひとつ質問なんですが

>ちょっと調べてみたかぎりでは、BIND は、やはり Round Robin の機能を
>標準で持っているようですね(少なくとも現在のバージョンは)。

というのはBind Ver8.2.2-P5.6 は大丈夫ですよね
最新のはずですし

あと書籍の案内はありがとうございます
早速本屋で探してきたいと思います