DNSラウンドロビン
DNSのお話で出てくるよ
1つのドメイン名に複数のIPアドレスを割り当てるよ
負荷分散のための仕組みだよ
簡単に書くよ
DNSラウンドロビン(読:デーエヌエスラウンドロビン 英:DNS round robin)とは
IPアドレス
(インターネットをするときにコンピュータに割り当てられる住所)とドメイン名
(IPアドレスに付けた人間様向けの名前)を紐付けしまっせシステム(DNS)の話で出てくる用語のひとつ
であり
1つのドメイン名に対して複数のIPアドレスを割り当てることによって負荷を分散する仕組みのこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・IPアドレス
・ドメイン名
・DNS
・DNSサーバ
について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
IPアドレスは「コンピュータさん向けのネットワーク上の住所」です。
インターネットっぽい通信において、送信先を特定するときとかに使う情報です。
「198.51.100.2」のような形式になっています。
ドメイン名は「IPアドレスに付けた人間様向けの名前」です。
インターネットやメールなどで使われる住所です。
「i-3-i.info」のような形式になっています。
コンピュータさんはIPアドレスしか分かりません。
ドメイン名を見せられても「う~ん、どこの住所だろう」と困ってしまいます。
一方、人間様はIPアドレスがピンときません。
「198.51.100.1」と「198.51.100.10」と「198.51.100.11」の違いなんて、パッと見で分かりませんよね。
うっかりミスも増えそうです。
そのため、コンピュータさんはコンピュータさんが分かりやすい形式の住所(IPアドレス)、人間様は人間様が分かりやすい形式の住所(ドメイン名)を扱える仕組みがあります。
具体的には、事前にIPアドレスとドメイン名を対応付けておいて、必要に応じて変換するのです。
このIPアドレスとドメイン名の対応付けをやり、かつ必要に応じて変換してくれる仕組みを「DNS」と言います。
そして、この変換をお仕事としているコンピュータは「DNSサーバ」と呼ばれています。
以上を踏まえて、本題に入ります。
DNSの仕組みにおいて、ドメイン名とIPアドレスの対応付けは1対1でやるのが普通です。
例えば
ドメイン名「i-3-i.info」に対応するIPアドレスは「198.51.100.10」
といった調子です。
ところがどっこい、ドメイン名とIPアドレスを1対nで対応付けることもできるのです。
例えば
ドメイン名「i-3-i.info」に対応するIPアドレスは「198.51.100.10」と「198.51.100.11」と「198.51.100.12」
といった調子です。
このような
1つのドメイン名に対して複数のIPアドレスを割り当てる仕組み
が「DNSラウンドロビン」です。
ドメイン名とIPアドレスを1対1で対応付けた場合、問い合わせに対する答えは1つです。
例えば、ピヨ太君から「『i-3-i.info』に遊びに行きたいんだけどIPアドレスは何?」とDNSサーバさんに問い合わせが来たとしましょう。
DNSサーバさんは「『198.51.100.10』だよ~」とお返事します。
ピヨ太君はIPアドレスが「198.51.100.10」のコンピュータに向かいます。
同じようにピヨ子さんから「『i-3-i.info』に遊びに行きたいんだけどIPアドレスは何?」と問い合わせが来ました。
DNSサーバさんは「『198.51.100.10』だよ~」とお返事します。
ピヨ子さんはIPアドレスが「198.51.100.10」のコンピュータに向かいます。
同じようにアクマ君から「『i-3-i.info』に遊びに行きたいんだけどIPアドレスは何?」と問い合わせが来ました。
DNSサーバさんは「『198.51.100.10』だよ~」とお返事します。
アクマ君はIPアドレスが「198.51.100.10」のコンピュータに向かいます。
ピヨ太君も、ピヨ子さんも、アクマ君も、IPアドレスが「198.51.100.10」のコンピュータに向かいました。
ドメイン名「i-3-i.info」(=IPアドレスが「198.51.100.10」)に遊びに行った3人を相手にするのは、IPアドレスが「198.51.100.10」のコンピュータ1台です。
これが普通の流れです。
それでは次にDNSラウンドロビンの仕組みを使った場合を見てみましょう。
DNSラウンドロビンを使うと、ドメイン名とIPアドレスを1対nで対応付けられます。
そうすると、問い合わせに対する答えが複数になるのです。
「ドメイン名『i-3-i.info』に対応するIPアドレスは何?」の問い合わせに対する答えが「『198.51.100.10』だよ」になったり「『198.51.100.11』だよ」になったり「『198.51.100.12』だよ」になったりします。
例えば、ピヨ太君から「『i-3-i.info』に遊びに行きたいんだけどIPアドレスは何?」とDNSサーバさんに問い合わせが来たとしましょう。
DNSサーバさんは「『198.51.100.10』だよ~」とお返事します。
ピヨ太君はIPアドレスが「198.51.100.10」のコンピュータに向かいます。
同じようにピヨ子さんから「『i-3-i.info』に遊びに行きたいんだけどIPアドレスは何?」と問い合わせが来ました。
DNSサーバさんは「『198.51.100.11』だよ~」とお返事します。
ピヨ子さんはIPアドレスが「198.51.100.11」のコンピュータに向かいます。
同じようにアクマ君から「『i-3-i.info』に遊びに行きたいんだけどIPアドレスは何?」と問い合わせが来ました。
DNSサーバさんは「『198.51.100.12』だよ~」とお返事します。
アクマ君はIPアドレスが「198.51.100.12」のコンピュータに向かいます。
ピヨ太君はIPアドレスが「198.51.100.10」のコンピュータに向かいました。
ピヨ子さんはIPアドレスが「198.51.100.11」のコンピュータに向かいました。
アクマ君はIPアドレスが「198.51.100.12」のコンピュータに向かいました。
ドメイン名「i-3-i.info」に遊びに行った3人を相手にするのは、IPアドレスが「198.51.100.10」のコンピュータ、「198.51.100.11」のコンピュータ、「198.51.100.12」のコンピュータ3台です。
普通の流れ(ドメイン名とIPアドレスの対応:1対1)では、1台のコンピュータで3人の相手をしました。
DNSラウンドロビンを使った流れ(ドメイン名とIPアドレスの対応:1対n)では、3台で3人の相手をします。
コンピュータ1台あたりの負担は軽くなりました。
このように、DNSラウンドロビンは負荷分散を目的とした仕組みです。
DNSラウンドロビンを使うメリットは「お手軽に負荷分散ができる」です。
やることは基本的にゾーンファイル(権威DNSサーバさんがお仕事で使うネタ帳)を書き換えるだけだからです。
一方のデメリットは……説明が面倒くさくなってきたので小難しい表現も使いますね。
分からない用語が出てきたら、頑張って調べてください。
DNSラウンドロビンをロードバランサ(負担を軽くするために処理を振り分ける誘導係的な装置)と比較したときのデメリットとして
1.負荷状況を考慮しないで振り分けを機械的にやる
2.死活監視をしない
3.セッションを管理できない
などがあります。
細かいことは、専門的に解説しているところで情報を補完してください。
そろそろ読むのが疲れましたか?
私も書くのが疲れてきました。
ですが、せっかくなので、DNSラウンドロビンの仕組みについて、もう少し細かい部分にも触れておきます。
読むのが疲れた人は、ここで読むのを止めても結構です。
DNSラウンドロビンの概要の説明は、終わりました。
……えっ、まだ読んでくれるのですか?
ありがとうございます。
それでは、もう少し細かい部分を書いていきます。
先ほどのピヨ太君たち3バカトリオを使った説明ですが、ピヨ太君の問い合わせに対して、DNSサーバさんは「『198.51.100.10』だよ~」とお返事をしました。
ピヨ子さんの問い合わせに対して、DNSサーバさんは「『198.51.100.11』だよ~」とお返事をしました。
アクマ君の問い合わせに対して、DNSサーバさんは「『198.51.100.12』だよ~」とお返事をしました。
この説明は嘘です。
いや、嘘ではないですけどね。
どっちだよ。
実はですね。
ピヨ太君の問い合わせに対して、DNSサーバさんは「『198.51.100.10』と『198.51.100.11』と『198.51.100.12』だよ~」とお返事をしているのです。
ただし、ピヨ太君はせっかちさんです。
最初の「198.51.100.10」を聞いた時点で、IPアドレスが「198.51.100.10」のコンピュータに向かっちゃいます。
同じように、ピヨ子さんの問い合わせに対しては「『198.51.100.11』と『198.51.100.12』と『198.51.100.10』だよ~」とお返事をしているのです。
ピヨ太君の場合と、伝える内容は同じです。
伝える順番が違うだけです。
ただし、ピヨ子さんもせっかちです。
最初の「198.51.100.11」を聞いた時点で、IPアドレスが「198.51.100.11」のコンピュータに向かっちゃいます。
同じように、アクマ君の問い合わせに対しては「『198.51.100.12』と『198.51.100.10』と『198.51.100.11』だよ~」とお返事をしているのです。
ピヨ太君やピヨ子さんの場合と、伝える内容は同じです。
伝える順番が違うだけです。
やっぱりアクマ君もせっかちです。
最初の「198.51.100.12」を聞いた時点で、IPアドレスが「198.51.100.12」のコンピュータに向かっちゃいます。
結果として、3人は別々のコンピュータに向かい、負荷が分散されます。
……というのが、もともとのDNSラウンドロビンの仕組みでした。
コンピュータの
答えがいっぱい返ってきたときは最初に聞いたのを採用することが多い
性質を利用して振り分けを行っていたのです。
ところがあるとき、RFC3484とかいう文書で
答えがいっぱい返ってきたときは自分に一番近いのを採用してね
というルールというかマナーが発表されました。
「最初に聞いたやつ」ではなく「自分に一番近いやつ」です。
そうすると、順番を並び替えても意味がなくなってしまいます。
よって、RFC3484を考慮しているやつが相手だとDNSラウンドロビンの設定をしていても上手く振り分けられない、という場合もあるようです。
とはいえ、DNSラウンドロビンは手軽で便利ですからね。
「RFC3484?何それ?美味しいの?」なんてとぼけてみたり、新しいテクニック?を考えて何とかしたり、いろいろ工夫もされているようです。
気になる方は「DNSラウンドロビン RFC3484」あたりをキーワードにしてGoogleやYahoo!などで検索してみてください。
きっといろいろな情報が見つかると思います。
一言でまとめるよ
まぁ「DNSラウンドロビン」って単語が出てきたら「1つのドメイン名
(IPアドレスに付けた人間様向けの名前)に複数のIPアドレス
(インターネットをするときにコンピュータに割り当てられる住所)を割り当てる仕組みなんだな~」と お考えください。
おまけ
■訳してみるよ
「DNS」は「Domain Name System(ドメイン・ネーム・システム)」の略です。
「domain(ドメイン)」の意味は「領域」とか「区域」とか「領土」とかです。
「name(ネーム)」の意味は「名前」とかです。
「system(システム)」はカタカナで「システム」と解釈してください。
「round robin(ラウンド・ロビン)」はフランス語の「ruban rond(リボンの輪)」が語源だそうです。
昔のフランスでは、嘆願書みたいなのを出すときに、誰が首謀者かバレないように中心から放射状に名前を書いていったんですってさ。
そこから「何かを順番に交換しながらやっていく」的な意味で使われるようになった表現みたいです。
「ふーん(--)」って感じですね。
ということで
領域名システム版「ruban rond(リボンの輪)」
みたいな意味です。
■検索してみる?






