DNSラウンドロビンの質問です。以下のようにDNSの設定を行っています。


<hoge.comのDNS設定>
a test 123.123.123.12 ・・・(1)
a test 123.123.123.34 ・・・(2)

一方のウェブサーバーのみにhoge.gifを設置して、http://test.hoge.com/hoge.gifにブラウザでアクセスすると、普通にエラー表示(404)されます。

http://japan.cnet.com/blog/neta/2006/08/10/dns_ecfc/などの記事によれば、落ちたサーバーにアクセスしたユーザーも、DNSラウンドロビンの設定で2つの候補があれば、一方が接続できない場合でも、違うサーバーに接続しにいくと書いていますが、今回の場合は何が原因で、落ちていないサーバーへの再接続ができないのでしょうか。

これはDNSの設定が悪いのでしょうか。

回答の条件
  • 1人2回まで
  • 登録:2008/03/22 05:02:11
  • 終了:2008/03/22 23:54:03

回答(4件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/03/22 14:15:04

ポイント10pt

一方が接続できない場合でも、違うサーバーに接続しにいく

「接続できない場合」という判定条件がUAによって微妙に違います。

この場合、明らかに「接続した」上で「単にファイルが見つからなかった」だけなので、別のサーバーに見に行くことは無いです。

つまりアクセスしにいったサーバーは「落ちていない」


通常DNSラウンドロビンで期待する「接続できない場合」というのはサーバーが起動していないなどの理由で

接続自体が出来ずタイムアウトになってしまった場合などに起こります。

このためサーバーダウンの対応としては、レスポンスが遅くなるので向いていません。ただ、どの程度遅くなるかはクライアントごとに違うので使い物になるかどうかは場合によりけりですが。

DNSラウンドロビンで通常期待する「簡易の負荷分散」としてはそれなりの効果は得られます。

id:redhat

なるほど、ありがとうございます。

2008/03/22 23:48:20
id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262008/03/22 14:34:41

ポイント10pt

参考にされているサイトで言っている「DNSラウンドロビンの設定をすると、一方が接続できない場合でも、違うサーバーに接続しにいく」という説明がそもそも間違っているだけです。

クライアントアプリケーションが特別に対応しない限りそんなことは出来ません。

質問者が行った実験結果が全てです。

id:redhat

勉強になります。ありがとうございます。

2008/03/22 23:48:59
id:fontmaster No.3

fontmaster回答回数94ベストアンサー獲得回数32008/03/22 07:00:15

ポイント40pt

DNSラウンドロビンの欠点は、分散先のサーバが障害で停止しているとしてもそのIPアドレスを返してしまうのを避けられないことだ

(DNSサーバに小細工を加えることで可能かもしれないが、原則的には無理)。したがって、壊れているWebサーバのIPアドレスをDNS問合せ結果のリストの最初として返されてしまった運の悪いWebブラウザはWebページを見れないことになる。少なくともDNS問合せ結果がキャッシュされている間は。


このままの現象が起こっているだけだと思うけど。

そもそも、DNSラウンドロビンは、

あまり知られていないことかもしれませんが、DNS があるホスト名に対して複数の IP アドレスを返した場合、多くのウェブブラウザは、その全てのアドレスに対して接続を試みます (接続に成功するまで)。


接続を試みるのは「ホスト名」であって個々の「URL」に対してではない。一旦ホスト名で接続が確立できたらそのホストのIPアドレスがキャッシュされ、キャッシュされた時間が過ぎるまではそのIPアドレスだけにアクセスし、そしてそこに「hoge.gif」が無ければ404が返されるのは当たり前。


勘違いしてはならないのはDNSラウンドロビンはキャッシュ時間というものがあるのであくまでもホスト(IPアドレス)のロードバランスであってコンテンツのロードバランス(URL)には対応できないということ。

hoge.gifのアクセスだけではなくもしあるホストが落ちたらキャッシュ時間の間は404の嵐になる。

id:redhat

詳細な回答ありがとうございます。疑問が解決しました。

2008/03/22 23:50:41
id:thewizardofoz No.4

thewizardofoz回答回数32ベストアンサー獲得回数32008/03/22 08:52:59

ポイント30pt

DNSで提供されるのはホスト名に対するIPアドレスだけです。

一度、ホスト名に対するIPアドレスでアクセスが成立してしまえばそのIPアドレスがアクセス元で使っているDNSキャッシュにキャッシュされキャッシュ期間が過ぎるまでそれが使用されます。

もし、そのIPアドレスのホストに無いコンテンツをアクセスしてしまったとしてもそれは単に404エラーとしてみなされます。404エラーを返すのはそのIPアドレスのホストであり、そのホストは生きていて接続できているという状態なので他のホストを探すことはしません。

あくまでも、DNSラウンドロビンはアクセスしたIPアドレスのホストが落ちていてhttpdが返事自体を返さない状態に対して他の接続可能なhttpdが生きているホストのIPアドレスを提供するだけで接続はできるがコンテンツが無い状態に対しては無力です。

id:redhat

詳細な回答ありがとうございます。疑問が解決しました。

2008/03/22 23:53:31

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません