DNSサーバのラウンドロビン機能を利用すると、1つのホスト名に複数のIPアドレスを割り当て、それを順番に循環させながらクライアントに返すことができる。これにより、複数台のサーバを自動的に切り替えることができるので、負荷分散を実現できる。
対象OS:Windows 2000 Server / Windows Server 2003
Webサーバやアプリケーション・サーバなどの負荷分散を実現するために、DNSサーバの「ラウンドロビン機能」を利用することがある。これは、同じサービスを提供する複数のサーバを用意しておき、それらへのアクセスを振り分けて分散させるために使われる機能である。その仕組みは非常に簡単で、1つのFQDN名(サーバ名)に対して、複数のIPアドレスを割り当てておき、DNSクライアントからの要求に応じて異なるIPアドレスを返す、というものである。
例えば、www.example.co.jpというWebサーバのFQDNに対して、10.20.1.1〜10.20.1.5というIPアドレスを持つ5台のWebサーバを用意する。通常は、サーバごとに異なるサーバ名(www1〜www5など)を付けるのだが、それでは、アクセスする際に5つのFQDN名を使い分けねばならず、面倒である。そこで1つのFQDN名で、この5台のサーバへアクセスするために使われるのが、DNSのラウンドロビン機能である。
www.example.co.jpというDNSのレコード(Aレコード)に対して、5つのIPアドレスを割り当てておくと、DNSのクライアントがアクセスするたびに、それらのIPアドレスが順番に返される(正確には、単一のIPアドレスではなく、IPアドレスのリストが返される)。アクセスするたびに異なるIPアドレスが返されるので、結果的に負荷分散が実現できる。返されるIPアドレスは、10.20.1.1→10.20.1.2→10.20.1.3→…→10.20.1.5などと順番に変わり、最後までいくと、また最初のIPアドレスへと循環する(このように、循環するリストやサービスなどを指してラウンドロビンという)。大規模な商用Webサイトでは、このような仕組みを使い、1つのFQDN名に対して複数のサーバ(主にWebサーバ)を割り当てて運用している。この様子は、例えば「nslookup www.microsoft.com」などを何度か実行してみれば分かる。
ただし、ここで返されるIPアドレスは、あくまでもDNSサーバに登録されている情報であり、実際にそのIPアドレスのサーバが稼働しているかどうかとは無関係である。返されたIPアドレスの先にあるサーバが、実際にそのときアクセスできるかどうかは、DNSサーバでは関知していないので、必要ならば別の冗長機能を導入したり(ダウンしたサーバを自動的に再起動したり、別のサーバに振り分ける仕組みや装置を導入する)、クライアント側の再試行機能(アクセスできない場合は、別のサーバIPアドレスへの接続を試行する)に“期待”したりする(アプリケーションによっては、アクセスできない場合は自動的に別IPアドレスへ再試行する機能を持っている)。
本TIPSでは、DNSサーバにおける、ラウンドロビン・レコードの設定と確認方法について解説する。クライアント側における、DNSラウンドロビンの確認方法についてはTIPS「DNSのラウンドロビン設定を確認する」を参照していただきたい。
DNSサーバで、ラウンドロビン・レコードを定義する方法は非常に簡単である。ある1つの名前に対して、複数のレコードを定義するだけでよい。例えば次は、www(www.example.co.jp)という名前に対して、複数のホスト・レコード(Aレコード)を定義した場合の例である。
このホスト・レコードの作り方は、通常の作成方法と同様であり、[操作]メニューの[新しいホスト]で該当するレコードを順番に作成すればよい。
DNSサーバのラウンドロビン機能は、デフォルトでは有効になっているが、設定によってはこれを無効にすることもできる。DNSサーバの管理ツールにおいて、サーバ名を右クリックしてポップアップ・メニューの[プロパティ]を実行すると、次のようなダイアログが表示される。[詳細]タブにある[サーバ オプション]でラウンドロビン機能の有効/無効を設定することができる。
ラウンドロビン設定が正しく機能しているかどうかは、nslookupコマンドを使って確認することができる。nslookupで該当レコードを確認すれば、実行するたびに、レコードの順番が入れ替わっている(循環している)ことが分かるだろう(同じ名前のレコードのうち、どのIPアドレスが先になるかは、特に指定することはできない。このDNSサーバでは、IPアドレスの逆順になっている)。
C:\>nslookup
Default Server: localhost
Address: 127.0.0.1
> www.example.co.jp ……1回目の問い合わせ
Server: localhost
Address: 127.0.0.1
Name: www.example.co.jp
Addresses: 10.20.5.5, 10.20.5.4, 10.20.5.3, 10.20.5.2
10.20.5.1 ……1回目の問い合わせ結果
> www.example.co.jp ……2回目の問い合わせ
Server: localhost
Address: 127.0.0.1
Name: www.example.co.jp
Addresses: 10.20.5.4, 10.20.5.3, 10.20.5.2, 10.20.5.1
10.20.5.5 ……2回目の問い合わせ結果
> www.example.co.jp ……3回目の問い合わせ
Server: localhost
Address: 127.0.0.1
Name: www.example.co.jp
Addresses: 10.20.5.3, 10.20.5.2, 10.20.5.1, 10.20.5.5
10.20.5.4 ……3回目の問い合わせ結果
……(以下省略)……
このように、問い合わせるたびに、IPアドレスのリストが循環している。だがラウンドロビン機能を無効にしていると、問い合わせ結果のIPアドレスの順番は常に同じになる。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.