応用情報技術者試験(2012年度秋期)「ロードバランサを用いた負荷分散」の解説

 2012年度秋期 応用情報技術者試験 午後問題に出題された12問から、問5の「ロードバランサを用いた負荷分散」に関する問題を取り上げ、解説していこう。まずはこの設問内容を掲示した後、その解答例とその解説を行っていくので順番に読み進めていただきたい。応用情報技術者試験の試験問題の全問ならびに全解答はIPAのホームページからPDF形式でダウンロード可能だ。ここで解説する解答例ならびにそのほか全問の解答例とその解説は、キャリアラボラトリーの資料でダウンロードできる。併せて参照していただければ幸いである。

問5 ロードバランサを用いた負荷分散に関する次の記述を読んで、設問1~5に答えよ。

 C社は企業の健康保険組合向け旅行予約サイトを運営している。現在の旅行予約サイトの利用者は、約20組合、約10万人であり、組合ごとの利用者数には20名から10,000名までばらつきがある。旅行予約サイトは、平日の昼食休憩時間(12:00~13:00)になるとアクセス数が急増する。利用者は、旅行予約サイトの会員企業にある自席のPC(以下、クライアントという)から所属企業のプロキシサーバ経由でC社の旅行予約サイトにアクセスする。

 旅行予約サイトには、アクセス数の増大やシステム障害の発生によってWebページが表示できなくなる時間を、可能な限り短くすることが求められる。C社では、レスポンスタイムの改善と信頼性の向上を目的として、システムを再構築することにした。C社情報システムのD君が、システムの再構築を担当することになった。

〔再構築後のネットワーク構成〕

 再構築後のシステムでは、レスポンスタイムの改善と信頼性の向上のために、DNSサーバ及びWebサーバの二重化を行う。図1に再構築後のネットワーク構成を示す。

図1 旧来からあるファイルチェック方法
図1 再構築後のネットワーク構成(抜粋)

 クライアントからC社の旅行予約サイトにアクセスできるようにするために、図1中のネットワーク機器及びサーバに次の設定を行う。ロードバランサに振り分け先のIPアドレスとして[ a ]と[ b ]を登録し、DNSサーバ(プライマリ)にC社の旅行予約サイトのURLに対応するIPアドレス[ c ]をゾーン情報(DNSサーバに登録されたIPアドレスやホスト名などの情報)の一つとして登録する。また、①クライアントがどちらのDNSサーバにIPアドレスを問い合わせても同一の結果を返せるような設定を、DNSサーバ(セカンダリ)に行う。

〔ロードバランサーを用いた負荷分散〕

 ロードバランサを用いてWebサーバの負荷分散を行う場合、クライアントからの初回のHTTP通信と2回目移行のHTTP通信を同一のWebサーバへ振り分ける必要がある。ロードバランサにはL4(Layer4)スイッチとして動作するものと、L7(Layer7)スイッチとして動作するものがあり、HTTP通信の振り分け方が異なる。D君はこれらの違いについて調査した。

(1)L4スイッチとして動作するロードバランサ

 L4スイッチとして動作するロードバランサは、送信されてきたIPパケットないの送信元IPアドレスとポート番号を使って、振り分け先のWebサーバを決定する。振り分け先の決まったIPパケットは、NAPTによるIPアドレス変換が行われ、対象のWebサーバに転送される。プロキシサーバを経由したクライアントとWebサーバの間の通信について、TCPコネクション開始時におけるロードバランサの振る舞いを図2に示す。

図2 L4スイッチとして動作するロードバランサの振る舞い(抜粋)
図2 L4スイッチとして動作するロードバランサの振る舞い(抜粋)

 クライアントからプロキシサーバ経由でC社の旅行予約サイトにアクセスする場合、ロードバランサは、初回のHTTP通信については初回と同じWebサーバに振り分ける。ロードバランサからWebサーバ1に送信されるIPパケットは、送信元IPアドレスがa.b.c.111、宛先IPアドレスが[ f ]となる。

 D君は、②L4スイッチとして動作するロードバランサを用いた負荷分散では、大規模な組合からのアクセスが片方のWebサーバに集中し、Webサーバの負荷に偏りが生じるおそれがあると考え、L7スイッチとして動作するロードバランサを使用することにした。

(2)L7スイッチとして動作するロードバランサ

 L7スイッチとして動作するロードバランサは、HTTP Header内のクライアント識別情報である[ g ]やURLを用いて、振り分け先のWebサーバを決定する。振り分け先が決まったら、ロードバランサがクライアントの代わりにWebサーバにアクセスし、HTMLコンテンツを取得してクライアントへ返信する。プロキシサーバを経由したクライアントとWebサーバの間の通信について、TCPコネクション開始時におけるロードバランサの振る舞いを図3に示す。

図3 L7スイッチとして動作するロードバランサの振る舞い(抜粋)
図3 L7スイッチとして動作するロードバランサの振る舞い(抜粋)

 クライアントからプロキシサーバ経由でC社の旅行予約サイトにアクセスする場合、ロードバランサは、[ g ]やURLを用いて図3中の(4)の自転で振り分け先のWebサーバを決定する。このような振る舞いによって、C社のような利用者特性をもつシステムの場合にも、クライアント単位で負荷を分散するのて、Webサーバの負荷に偏りが生じることが少ない。

設問1 本文中の[ a ]~[ c ]に入れる適切なIPアドレスを、図1中のIPアドレスを用いて答えよ。

設問2 本文中の下線①について、DNSサーバ(プライマリ)のゾーン情報が変更になった場合でも、DNSサーバ(プライマリ)とDNSサーバ(セカンダリ)が同一の結果を返せるようにするためには、何をすればよいか。35文字以内で述べよ。

設問3 本文及び図中の[ d ]~[ f ]について、(1)、(2)に答えよ

(1)図2及び図3に示した制御のための通信は、TCPのセッション確立のプロトコルである。[ d ]、[ e ]に入れる適切な字句を解答群の中から選び、記号で答えよ。
解答群
ア ACK
イ FIN
ウ FIN+ACK
エ HTTP
オ PSH
カ PST
キ SYN
ク SYN+ACK
(2)[ f ]に入れる適切なIPアドレスを、図1の中のIPアドレスを用いて答えよ。

設問4 本文の下線②について、大規模な組合からのアクセスが片方のWebサーバに集中し、Webサーバの負荷に偏りが生じるのはなぜか。35文字以内で述べよ。

設問5 本文中の[ g ]に入れる適切な字句を解答群の中から選び記号で答えよ。

解答群
ア Cookie
イ HTMLの要素
ウ HTMLの<body>要素
エ 宛先IPアドレス
オ 送信元IPアドレス
カ 送信元ポート番号
ここで解説する解答例ならびにそのほか全問の解答例とその解説
キャリアラボラトリーの資料
(資料の最後、「2012 年度秋期 応用情報技術者試験午後問題 解答例・解説 」を選択)

応用情報技術者試験の試験問題の全問および解答例
IPAのホームページ

ロードバランサを用いた負荷分散の本解説での解答例

設問 解答 備考
設問1 a 192.168.0.1 順不同
b 192.168.0.2
c x.y.z.21  
設問2 プライマリが持つゾーン情報を定期的にセカンダリに転送する設定を行う  
設問3 (1) d  
e  
(2) f 192.168.0.1  
設問4 最初にラウンドロビンで決定した片方のサーバに振り分けられるから  
設問5 g  

ロードバランサを用いた負荷分散の解答解説

設問1 空欄a、b

 ロードバランサは、2台のWebサーバ1及びWebサーバ2に処理を振り分けます。ロードバランサのLAN側(右側)につながっている、Webサーバ1のIPアドレス192.168.0.1及びWebサーバ2のIPアドレス192.168.0.2を振分け先として登録します(順不同)。

設問1 空欄c

 インターネット側に対しては、ロードバランサがWebサーバとして動作しているように見せます。したがって、ロードバランサのインターネット側のIPアドレスであるx.y.z.21を、URLのホスト名に対応するIPアドレスとしてDNSサーバに登録します。

設問2

 障害対策の一環で、DNSサーバは2台(プライマリとセカンダリ)設置して運用するのが一般的です。両者に登録されるゾーン情報(ホスト名とIPアドレスの対応の情報)は、一致させておく必要があります。手作業での管理もできますが、プライマリサーバのゾーン情報をセカンダリサーバへ自動的に転送して反映することもでき、変更漏れやミスを防ぐために有効です。

設問3 (1) 空欄d、e

 IPネットワークでTCPによる通信を開始したい側は、通信相手にSYN (Synchronize)パケットを送って、セッション確立を要求します。

 次に、通信相手はそれを承諾するACK (Acknowledgement)と、通信を求めてきた側へ逆にセッション確立を要求するSYNを合わせた、SYN/ACKパケットを送り返します。

 最後に、通信を開始したい側から承諾のACKパケットを送り返すと、セッションが確立します。

 以上3回のやりとりが行われるため、この手順は3ウェイハンドシェイクと呼ばれます。

設問3 (2)

 ロードバランサはLAN側(右側)のネットワークインタフェースから、Webサーバ1にIPパケットを転送します。その宛先IPアドレスは、Webサーバ1の左側のネットワークインタフェースの192.168.0.1となります。

設問4

 ロードバランサに届くIPパケットの送信元IPアドレスは、会員企業のプロキシサーバのIPアドレスですが、送信元ポート番号は一定していません。

 〔ロードバランサを用いた負荷分散〕(1)に「L4スイッチとして動作するロードバランサは、送信されてきたIPパケット内のIPアドレスとポート番号を使って、振分け先のWebサーバを決定する。」とあります。IPアドレスが同じでもポート番号が異なれば、振分け先Webサーバが片方に偏ることはないと考えられます。

 ところが、「クライアントからプロキシサーバ経由でC社の旅行予約サイトにアクセスする場合、ロードバランサは、初回のHTTP通信についてはラウンドロビンでWebサーバを決定し、2回目以降のHTTP通信については初回と同じWebサーバに振り分ける。」とありますので、結局はラウンドロビン方式による振分けが行われます。

このラウンドロビン方式について詳しい記述がありませんが、送信元IPアドレスが同じIPパケットが届いた場合、初回と同じWebサーバに振り分けると解釈します。そうすると、同一企業からのIPパケットは、異なるクライアント(PC)からのものでも、すべて片方のWebサーバに振り分けられてしまい、負荷が偏ると考えられます。

設問5

 「HTTP Header内のクライアント識別情報」とありますので、Cookieです。Cookieは、WebサーバがHTTPヘッダに含めて送ったデータを、Webブラウザを通じてクライアントに保存できる仕組みであり、セッション管理やユーザ識別などに利用されています。

ここで解説する解答例ならびにそのほか全問の解答例とその解説
キャリアラボラトリーの資料

(資料の最後、「2012 年度秋期 応用情報技術者試験午後問題 解答例・解説 」を選択)

応用情報技術者試験の試験問題の全問および解答例
IPAのホームページ