サーバロードバランス

複数の計算機リソースの負荷分散とその技術
ロードバランサーから転送)

サーバロードバランシング英語: Server Load balancing)は、コンピュータネットワークにおける技法の一種である。クライアントサーバの間にロードバランサ(負荷分散装置)を設置し、複数のサーバが分散処理を行う。利用者の多いWebアプリケーションネットワークゲームの運営などに適しており、サーバ1台では処理しきれない場合に、この技法を利用することで効率よくサーバの数を増やすことができる。また、故障や保守によりサーバが停止した際にも、サービスを続行させることができる。

Elasticsearchクラスターへのユーザーリクエストがロードバランサーにより分散される様子を描いた図。(Wikipediaでの例)

概要 編集

ロードバランサは、クライアントからのサービス要求に対して、サーバファーム内から適切な物理サーバを選択するよう管理・制御されなければならない。

物理サーバの選択後、そのクライアントからの要求は同じ物理サーバに転送される。これは、クライアントの状態をサーバ側で管理するようなアプリケーションでは必須となるが、故障などが発生したとき問題となる。この持続性をどう実装するかは、ロードバランサの機種によって異なる。最も典型的な方法は、状態情報を共有データベースに保持し、全ての物理サーバがそれにアクセスできるようにし、Cookieなどの小さなトークンを使って状態情報とクライアントを結びつける手法である。

外部のネットワークから見て、ロードバランサは仮想的な1台のサーバに見える。つまり、IPアドレスポート番号は、背後にあるサーバ群の代表としてロードバランサのものだけが見える。サーバ群で動作する各種サービスは、外部からはこの仮想サーバが提供するように見える。各サービスは物理サーバのIPアドレスやポート番号を指定することで機能する。クライアントは仮想サーバに要求を送り、ロードバランサが物理サーバを選んでクライアントからの要求をそのサーバに転送する。

サービスが異なれば、ロードバランサによる仮想サーバの構成も変わってくる。基本的にはTCPUDP上のサービスだが、仮想サーバがサポートする通信プロトコルとしては、HTTPFTPSSL、SSL BRIDGE、SSL TCP、NNTPSIPDNS などがある。

ロードバランサは、サーバ群が健全に動作しているかを把握することが重要である。このため、各サーバにキープアライブと呼ばれるパケットを定期的に送り、応答時間を監視する。応答が無い場合、そのサーバはダウン状態であると判断される。この監視は通常のネットワークとは別の経路で行われることが多い。サーバダウンが発生したとき、ロードバランサは残っているサーバ群で負荷分散を続行する。仮想サーバを構成する全サーバに障害が発生すると、(もしあれば)バックアップの仮想サーバに要求を転送したり、Webサービスであれば、事前に定義されたURLにリダイレクトする。リダイレクト先は、例えばサイト保守中であることを知らせるWebページである。

負荷分散されるサーバの種類としては、以下のものがある:

広域サーバ負荷分散(GSLB)は、地理的に離れたサーバ群を対象とした負荷分散手法である。

通常は、サーバはサーバ技術者、ネットワークはネットワーク技術者が相互に依存することなく構築が行われるが、サーバロードバランスにおいては、サーバ構築とネットワーク構築の統合が必要となる。

ロードバランサの機能 編集

  • SSLオフロードと加速: SSLアプリケーションはWebサーバにとっては重い負担であり、特にCPU時間を消費する。そのため、SSLコネクションと非SSLコネクションを同時に処理すると、ユーザーから見て反応が悪くなったように感じられる。これに対処するため、ロードバランサにはSSLオフロードを行う機能を持つものもある。
  • Secure Remote Access (SSL-VPN):
  • DDoS攻撃への防御
  • 圧縮
  • TCP 負荷低減
  • クライアント・キープアライブ
  • TCP バッファリング
  • 統合ロギング
  • アプリケーションのキャッシュ化
  • TCP 圧縮
  • コンテンツのフィルタリング
  • 優先度別キューイング
  • コンテンツ切り替え
  • キャッシュのリダイレクト
  • 広域サーバ負荷分散
  • リンク負荷分散

手法 編集

Webサーバでの手法 編集

インターネットの大きな問題として、あるサイトに訪れる多数のユーザーによる負荷を如何に制御するかという問題がある。この問題はサイトの成長に伴って発生するスケーラビリティの問題でもある。負荷分散を実現する手法はいくつかあり、ウィキメディア財団も負荷分散を行っている。2004年6月時点で同サイトが行っている負荷分散手法は以下の組合せである。

  • DNSラウンドロビンにより、ページ要求を3つのSquidサーバに平等に分散させる。
  • Squidサーバは応答時間を測定しており、7台のWebサーバにページ要求を分散させる。さらに Squid のキャッシュにより要求の75%はWebサーバを煩わせることなく応答できる。
  • 各WebサーバにはPHPスクリプトが動作していて、要求の種類によっていくつかのデータベースサーバに負荷を分散する。すなわち、更新要求はマスターデータベースに渡されるが、クエリは複数のスレーブデータベースに分散される。

他にもレイヤ4スイッチを使った手法や、オープンソースの負荷分散機能であるLinux Virtual Serverを使う手法がある。UNIX系での負荷分散手法としてリバースプロキシがある(HAProxyなど)。適切なモジュール構成にすれば、ApacheLighttpd などのWebサーバもリバースプロキシとしての働きをする。

無線LANにおける負荷分散 編集

無線LANで使用するWireless LAN Controllerは、多数のクライアントが接続しているアクセスポイントへの新規の接続を止め、接続しているクライアントが少ないアクセスポイントに新規のクライアントを割り当てることで、ひとつのアクセスポイントへのアクセスの集中を防ぐ。一方、チャネルボンディングMIMOスループットは向上するが、負荷分散にはならない。

参考文献 編集

主な執筆者順。
洋書と翻訳(主な執筆者のアルファベット順)

  • Bourke, Tony (2001). Server Load Balancing. O'Reilly & Associates  ISBN 0-596-00050-2 NCID BA53190280。️
    • Bourke, Tony『サーバ負荷分散技術』上谷 一、横山 晴庸 訳、オライリー・ジャパン、オーム社(発売)、2001年。 ISBN 4873110653NCID BA54950619。️
  • Syme, Matthew; Goldie, Philip (2004). Optimizing Network Performance with Content Switching: Server, Firewall and Cache Load Balancing. Prentice Hall series in computer networking and distributed systems. Prentice Hall PTR. NCID BA84616128  ISBN 9780131014688, 0-13-101468-4OCLC 54368356
  • Zawodny, Jeremy; Balling, Derek J.. High Performance MySQL. O'Reilly  ISBN 0-596-00306-4
    • Schwartz, Baron、Zaitsev, Peter『実践ハイパフォーマンスMySQL』クイープ、伊藤 直也、田中 慎司、吉川 英興 訳(第2版)、オライリー・ジャパン、オーム社(発売)、2009年。 NCID BB00608270 ISBN 9784873114262, 4873114268OCLC 676086494

和書

脚注 編集

出典 編集

関連項目 編集

主なロードバランサ製造企業 編集

50音順。

外部リンク 編集