Webシステムの負荷分散
〜ロードバランサ〜
0.改訂履歴
- 2002.04.21 新規作成.
- 2002.06.23 リンクなど追加.
1.はじめに
このドキュメントでは,Webシステムを設計する際に用いる「ロードバランサ」をに関連するシステム基盤について説明する.
2.Webシステム
インターネットの広まりは,WebブラウザとWebサーバの進化と比例して加速するなんてのはどうでもよくて,一般的なWebシステムとは,次のようなクライアント/サーバシステムの事である.
図1
一般的にPULL型といわれており,WebブラウザがWebサーバに対して情報を要求(PULL)する命令を出し,Web Serverは要求にあったデータをWebブラウザに対して返答する形である.
3.システム基盤設計の難しさ
これまでのシステムを構築する際,そのシステム規模は比較的はかりやすかった.
たとえば,企業内の基幹システム等であれば,「人事部の人数が50人で,そのうち30人が利用するシステムで,扱うデータは全社員4万人のデータで5年間データを保持する」などという基礎データを取り出すことができた.
そのような基礎データを元に,該当データを投入した後に,人事部の同時利用(同時接続ユーザ数)などを元に,負荷テストツールなどを用いてサーバの処理能力についてある程度の負荷を想定することも可能であった. そうして見つかったボトルネックにより必要なハードウェア資源を選定したり,必要であればアプリケーションやOSのチューニングを行ってきた.
しかし,Webシステムの場合,従来の方式では厳密にシステム基盤を決めることができず,次のような問題点がある.
- Webサイトに同時接続するユーザを想定できない.
- Webシステムの場合,3ヶ月程度でシステム設計〜開発を終わらせるパターンがおおく,厳密にテスト&チューニングなどを行っている時間がない.
- 利益率が見込めない場合が多いため,初期投入時にあまりにも巨大なシステム基盤をいる事もできない.
この様な要件に対応するため,Webシステムではそのシステム基盤を柔軟に変更できる仕組みとして構築しなければならない.
4.ロードバランサを導入する
Webシステムでよく用いられるのが,「ロードバランサ」とよばれる負荷分散装置である.
ロードバランサを用いたWebシステムの例は,次のような形態となる.
図2
Webブラウザからは,1つの接続先としてしかみえないが,その接続をロードバランサと呼ばれる装置が受け取って,裏に隠れているWebサーバに各処理を振り分けているのである.
Webサーバの処理能力が足りなくなった場合,Webサーバを追加する事がある.
図3
この場合,追加するWebサーバをネットワークに設置し,ロードバランサの設定を追加するだけでよい.
単純なWebサーバの処理能力不足が発生した場合,この方式が一番簡単である.
5.ラウンドロビン方式
ロードバランサは,複数のWebブラウザからきた要求を,Webサーバに割り振る処理を行うが,その機能の1つに「ラウンドロビン(Round Robin)」と呼ばれる方式がある.
ラウンドロビンは,一番低レベルな負荷分散方式であり,Webブラウザからの要求がくる都度,順番にWebサーバに処理を渡す方式である.
次の図で,ラウンドロビン方式について説明する.
図4
- Webブラウザ1からの要求は,Webサーバ1に割り当てられる.
- Webブラウザ2からの要求は,Webサーバ2に割り当てられる.
- Webブラウザ3からの要求は,Webサーバ1に割り当てられる.
- あとはこの繰り返し.
ラウンドロビン方式では,ロードバランサは特に何も考えず,順番にWebサーバに対して要求を振り分けるだけのため,この機能だけを搭載している製品は安く,またロードバランサ自体の処理能力もあまり求められない.
このラウンドロビン方式では,野球の打順でいう1番バッターと同じで,割り振りの1番目に対応されたWebサーバに処理が集中しやすいという特性がある.
また,Webサーバの処理負荷が高かろうが低かろうがセッションを割り振るため,完全な負荷分散をしているとは言えない.
ただし,製品によってはサーバの処理能力に応じて,振り分ける割合を設定するものもある. これは,Pentium II 266MHzと,Pentium III 1GHzなど,処理能力の異なるサーバが混在したシステムで有効な手段である.
単純なラウンド・ロビンを行うだけであれば,DNSのRoundRobin機能を使うことで,安価に利用することもできるが,やはり,厳密にはアプライアンス品(専用製品)には性能や機能が及ばないと.
6.ロードアベレージ(性能分散方式)
このロードアベレージ(Load Average)方式では,セッションを割り振る先のWebサーバのシステム全体の負荷状態を見て,処理負荷が低いサーバに対してセッションを割り当てるなど,処理負荷を均等に割り当てる事で,バランスを保つ仕組みである.
よって,ロードバランサ自体に「考える能力」が必要になるため,ラウンドロビン方式と同じセッション数を処理しようとすると,より高性能=高価なロードバランサを導入する必要がある.
7.ブラウザによって分散する方式
インテリジェントなロードバランサを使用すると,色々な条件によって処理分散を行うことができる.
たとえば,HTTPのBROWSER_AGENTパラメータを使用して,接続してきたブラウザによって割り振るWebサーバを変更する事が考えられる.
たとえとして,iモード端末を例に挙げて説明する.
iモードサービスが始まった当初は,“501シリーズ”という機種が圧倒的であった.
図5
よって,図5のように単純にラウンドロビンで分散していれば処理が行えた.
しかし,iアプリ(Java)が稼働する503シリーズが発売され,1年も経つと,サイトによってはその80%くらいのアクセスが503シリーズ端末に置き換わった等ということがある.
図6
その様な場合は,HTTPヘッダのBROWSER_AGENTを判断し,503シリーズのグループと,それ以外のグループの振り先を図6のように変更する等という利用方法もある.
同じように,N503シリーズ,SO503シリーズなど,機種別にグループをわける等という応用方法も考えられる.
参考リンク
- BIG IP
- F5 Networks
- 一番メジャーなアプライアンス装置だとおもわれる.
- 色々な会社が扱っている.
- BSDベースのOSが乗っている単なるPC互換機だという話.(そんなこといったら怒られそ)
- Windows 2000 Advanced Server Network Load Balancer(NLB)
- ネットワーク負荷分散技術 概要
- Windows 2000 Advanced Serverに付いている機能であり,ハードウェアを選ばない点でメリットがある.
- ただし,普通のServer製品を既に買っていたり,UnixベースのOSのサーバが対象だと使えない.
- WebSphere Edge Server
- http://www-6.ibm.com/jp/software/websphere/edge/about.html
- Windows2000上で稼働する,ソフトウェア製品.
- Network Dispatcherというのがロードバランス製品になる.
- Alteon ACEdirector
- Nortel Networks
- 以前はAlteonという会社が扱っていた.業務提携して,ノーテルの一部門になったらしい.
- 詳細はよく知らない.
- LocalDirector
- ServerIron
- Foundry Networks
- 元々三井物産が販売していたが,日本支社は物産の100%出資.