鈴木淳也
アットマーク・アイティ 編集局
(取材協力:RBB TODAY)
2002/3/1
増大するトラフィックをいかにさばき、ダウンしないWebサイトを構築するか。これは、技術者にとっての大きな課題だろう。「サーバ負荷分散」という言葉はよく聞かれるが、実際にどのような技術があり、どのようなネットワークを構築すればいよいか、その手法が語られる機会は意外と少ない。求める情報が得られないというジレンマに、いらだつ読者の方も多かったのではないだろうか?
今回は、2002年1月31日に開催された「IP Network Technology
& Solution Meeting」(主催:インターネット総合研究所/RBB
TODAY/アットマーク・アイティ)のイベント・レポート第3弾として、ワークショップB-2「ECサイト構築で求められる負荷分散ネットワーク技術」(講師:リアルネットワークス
鍋島公章氏)で語られた、基礎技術部分を中心にお送りしていこう。
複数のサーバに対してトラフィックを割り振り、処理にかかる負荷を分散させるのが負荷分散技術だが、大きく分けて「水平負荷分散」と「垂直負荷分散」の2つの技術が存在する。水平負荷分散が複数のサーバを並べて純粋にトラフィックを振り分けていく方法なのに対し、垂直負荷分散では機能別にサーバを分ける方法をとる。
さらに、水平負荷分散にも、サーバ群の前に「負荷分散装置」と呼ばれる機器を配置する方法と、各サーバにミドルウェアを導入してトラフィックを互いにやりとりさせる方法の2種類の実現方式がある。後者はコストの割にパフォーマンスが出ないため、最近では使われることはないという。今回の講演では、負荷分散装置を用いた水平負荷分散技術を中心テーマとして取り扱うと前置きし、解説へと入っていった。
■負荷分散技術の基礎知識
負荷分散技術の基礎知識として、まずDNSによる負荷分散についての解説が行われた。
●DNSによる負荷分散
DNSを使った負荷分散技術は古典的な技法であり、1995年くらいまで使われていたという。DNS名に対して複数のIPアドレスを割り当て、DNSサーバにアクセスしてきたユーザに対して、順番に別々のIPアドレスを返答することで、複数のサーバに対してトラフィックを割り振る。つまり、この方法で負荷分散を実現している(参考記事「連載:DNSの仕組みと運用(3)『DNS導入に向けての予備知識』」)。
DNSには役割に応じていくつか種類がある。ユーザが目的のサイトにアクセス場合に、最低でも3種類のDNSサーバにお世話になることになる。ユーザが目的のサイトにアクセスする際に、まず最初に自身が属するサイトのDNSサーバ(ローカルDNSサーバ)に名前解決を依頼する。ローカルDNSサーバは、目的のサイトのDNSサーバの情報を知るために、まずルートDNSサーバにアクセスする。そこで得られた情報を基に、目的のサイトのDNS情報を持つDNSサーバに対してアクセスを行い、IPアドレスを得る。この際に得られた情報は、ローカルDNSサーバにキャッシュされ、次回、アクセスがあった際に高速に反応することが可能となる。
ここで1つ問題がある。DNS情報がキャッシュされてしまった場合(通常は数週間)、この方法による負荷分散は行えなくなってしまう。また、目的のサーバがダウンしてしまっていた場合、DNSサーバにとってはその情報を把握できていないため、本来であればアクセスできないサーバのIPアドレスを返答してしまうのだ。このため、DNSによる負荷分散ではサーバ障害には対応できない。
●スイッチによる負荷分散
そこで登場するのが、スイッチによる負荷分散だ。通常、スイッチといえばレイヤ2でのトラフィック制御を行う機器だが、今回の話で登場するのは、それよりもさらに上位にあたる、レイヤ3/レイヤ4/レイヤ7での制御が行えるスイッチ製品だ。
|
名称
|
該当レイヤ
|
スイッチ単位
|
|
レイヤ3スイッチ
|
ネットワーク層
|
パケット単位にスイッチ
|
|
レイヤ4スイッチ
|
トランスポート層
|
コネクション単位にスイッチ
|
|
レイヤ7スイッチ
|
アプリケーション層
|
コンテンツ単位にスイッチ
|
|
| 表1 レイヤ3以上のスイッチ製品 |
ここで、講演で話題の中心となるのがレイヤ4以上で動作するスイッチである。レイヤ3スイッチでは、IPアドレスを基に特定のポートに対してパケットを振り分けるのが主な動作だったが、レイヤ4以上のスイッチでは負荷分散のために、NAT(Network
Address Translation)によるアドレス書き換えや、MAT(Mac Address Translation)による直接サーバ返答(Direct
Server Return:DSR)などの技法が用いられる。
●NATとMAT
NATについては、その動作をご存じの読者も多いだろう。ルータが外部ネットワークと内部ネットワークの窓口となり、やりとりされるパケットのアドレス変換を行う技術だ。NAT機能を持つ負荷分散装置は、VIPと呼ばれるIPアドレスを持ち、仮想サーバとしてユーザからのリクエストを受け取る。負荷分散装置がパケットを受け取ると、NATによるアドレス変換を行い、各サーバへとトラフィックを振り分ける。NATによるアドレス変換が行われているため、サーバには自身の持つIPアドレスとユーザ同士が直接やりとりしているように見える。ここでサーバにより返答されたパケットは、いちど負荷分散装置で元のVIPのIPアドレスへと変換が行われ、ユーザのところに届けられる。
一方のMATは、レイヤ2レベルでMACアドレスによる振り分けを行う。MATでは、複数のサーバが同一のVIPを持っている。ところがイーサネットでは、IPアドレスを基にARP応答を行い、送信先ホストのMACアドレスを特定しているため、このままでは正常な通信が行えない(すべてのサーバが同時に返答を行ってしまうため)。この問題の回避のため、ARPに対して応答を行わないループバック・インターフェイスに対してVIPを振っておき、負荷分散装置にはサーバ群のMACアドレス・テーブルを持たせておく。これら手法により、MATが実現される。NATとは異なり、MATではIPアドレスの変換が行われないため、返答のために負荷分散装置を介さない直接サーバ返答(DSR)が可能である。