人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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の設定が悪いのでしょうか。

●質問者: redhat
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:GIF hoge test アクセス ウェブ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● b-wind
●10ポイント

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

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

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

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


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

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

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

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

◎質問者からの返答

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


2 ● y-kawaz
●10ポイント

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

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

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

◎質問者からの返答

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


3 ● fontmaster
●40ポイント

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

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


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

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

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


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


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

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

◎質問者からの返答

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


4 ● thewizardofoz
●30ポイント

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

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

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ