今回はサーバーにおける冗長化を解説する。ネットワーク管理者が扱うことが多い「DNS(Domain Name System)ラウンドロビン」「負荷分散装置」「NIC(Network Interface Card)の冗長化」という3つの方法を取り上げる。
DNSでアクセス要求を振り分け
DNSラウンドロビンは、DNSの名前解決を利用してWebサーバーなどへのアクセス要求を分散させる方法だ。複数台のサーバーに通信を振り分けるので、1台のサーバーで障害が発生した場合でもサービスを提供し続けられる。権威DNSサーバー(以下、DNSサーバー)の設定を変更するだけで実現できるので、導入のハードルが低い。
DNSラウンドロビンでは、1つのホスト名に複数のIPアドレスを割り当てる。具体的には、DNSサーバーのゾーンファイルにおいて、1つのホスト名に対して複数のAレコードを設定する。
例えば、Aレコードに「192.168.10.1」「192.168.10.2」「192.168.10.3」というIPアドレスを登録しておくと、DNSサーバーは名前解決の問い合わせごとに「192.168.10.1→192.168.10.2→192.168.10.3」と順番に切り替えて応答する。Aレコードの最後尾に登録されているIPアドレスを返したら、次は先頭のIPアドレスに戻って応答する。こうしてサーバーへのアクセスを振り分ける。
DNSラウンドロビンは手軽に導入できるが、障害が発生したサーバーにも通信を振り分けてしまう欠点がある。DNSサーバーはサーバーの障害を検知できないからだ。つまり「冗長化」としては不十分だ。またパソコンからのアクセスが同一のサーバーに連続して発生することを前提としたシステムでは使えない。
負荷分散装置で束ねる
こうした問題があるため、実際には負荷分散装置がよく使われる。複数のサーバーに処理を振り分ける目的に特化した装置だ。サーバーの障害を検知して振り分けから切り離す機能や、処理を担当したサーバーにパソコンから連続的にアクセスできるようにする機能を備える。
負荷分散装置は、パソコンとサーバー群の間に配置する。パソコンからは負荷分散装置が1台のサーバーとして見える。負荷分散装置がパソコンからのアクセス要求を受け付け、適切なサーバーに振り分ける。そして、サーバーからの結果を、要求を出したパソコンに送り返す。