Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Webアプリケーションのロードバランス

パフォーマンスと拡張性の観点から見たロードバランスの概念

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/10/06 14:00

 ロードバランスは、Webアプリケーションのパフォーマンスを維持したまま拡張性を高めたいときに重要な鍵を握る技術です。この記事では、サーバ側に重点を置き、パフォーマンスと拡張性の観点から見たロードバランスの概念を紹介します。

目次

はじめに

 拡張性のある企業Webアプリケーションを作るには、クライアント側とサーバ側の両方のコンポーネントをよく検討する必要があります。しっかりしたコードベース、厳正に実装されたキャッシュ、圧縮技術を用いたコンテンツアクセラレーションは、高いパフォーマンスを得るための最適な土台作りに役立ちます。この記事では、サーバ側に重点を置き、パフォーマンスと拡張性の観点から見たロードバランスの概念を紹介します。いくつかの一般的なロードバランス方式について概説すると共に、それがアプリケーションの拡張性とエンドユーザー側から見たパフォーマンスの維持・向上にどのように役立つかについて解説します。ロードバランスはそれだけでもかなり大きなテーマなので、この記事では、ロードバランスの具体的なセットアップ方法には触れません。詳しいセットアップ方法については専門に扱った書籍や文書が多数提供されているので、そちらをご利用ください。

 Yahooを一例に考察してみましょう。Yahooのポータルサイトには、世界中から数百万のユーザーがアクセスします。このサイトは動的なWebアプリケーションであり、データベーストランザクションを実行し、コンテンツをリアルタイムで構築して表示します。単なる画像やHTMLの固定コンテンツを表示するサイトよりも多くの処理を行っています。Yahooの同じWebアプリケーションを繰り返し利用するユーザーも多く、こうした人々は常に一定の(あるいは前回よりも優れた)パフォーマンスを期待しています。パフォーマンスが期待に反すれば、Yahooはユーザーベースをライバルに奪われるおそれがあります。ユーザーがクリックするたびに、一定の負荷がサーバに課されます。このクリックが数百万回も発生すれば、サーバの負荷はたちまち増大します。

 サーバの能力は有限なので、すべてのユーザーの要求に応じるにはサーバを集合的に利用するしかありません(このサーバの集合のことをサーバファームと呼びます)。しかし、各サーバは個別に動作しているわけですから、負荷の上昇に伴って要求を複数のサーバに分散し、ユーザーに提供されるパフォーマンスのレベルを均等に保つ必要があります。ロードバランスは、受け取った要求を複数のサーバに分散するためのプロセスです。

 1台かそれ以上のサーバがダウンした場合、ロードバランサは処理能力の減退を認識し、要求を適切に振り分ける必要があります。このようにエンドユーザー側から見たパフォーマンスを落とさずに処理を続ける機能もロードバランスの一部であり、これを"高可用性"と呼びます。

 簡単に言えば、ロードバランスとは、サーバファームへの一本化されたエントリポイントを提供し、負荷をファーム内のすべてのサーバに分散化することです。ロードバランスは、HTTP Webアプリケーションのみならず、FTPなどの他のプロトコルを使うアプリケーションや、チャットアプリケーションにも有効です。

ロードバランスの方式

 一般的なロードバランスのソリューションはハードウェアとソフトウェアの両方から構成されますが、純粋にソフトウェアまたはハードウェアのみで機能するソリューションもあります。

  • ソフトウェアベースのロードバランサは、すべてのクライアントが接続するサーバ上で動作します。ロードバランサのソフトウェアはポートをリッスンし、サーバファーム内のどのサーバに要求を処理させるべきかを判断します。ソフトウェア型のロードバランサは、リバースプロキシキャッシュに似ています(ただし、通常はキャッシュを備えていません)。サーバに代わって、受け取った要求をサーバに振り分けるのがその役目です。従って、ユーザーがサーバ本体に直接通信することはできません。ロードバランサは、要求元のクライアントがバックエンドサーバに直接通信することがないようにします。これは実質的に1つのセキュリティ層となります。このタイプのロードバランサをオープンソースで製品化した例が、Apacheのmod_proxy_balancerエクステンションです。
  • ハードウェアベースのロードバランサは、ルーティング、トンネリング、またはIP変換に基づいて機能します。取り扱いが複雑になるので、このタイプの導入を検討している場合はエキスパートの力を借りてセットアップや構成を計画することをお勧めします。

 要求の処理を担当するサーバをロードバランサが選択するときには、さまざまな方法が使われます。ランダムに選択する、あるいはラウンドロビン方式で割り振るというシンプルなやり方もありますが、商業製品として提供されているもっと複雑なソリューションでは、サーバの負荷、トラフィックの状況、サーバとエンドユーザーとの隣接レベル、地理的な位置、最新の応答時間なども考慮してサーバが選択されます。

 多くのソリューションでは、HTTPS(SSL対応接続)の使用が必須です。このようなアプリケーションでは、暗号化と復号のオーバーヘッドが生じるため、ハードウェアやソフトウェアのリソースが集中的に消費されます。過大な処理負荷を緩和するために、SSL接続だけを扱う特殊なハードウェアを設置し、暗号化と復号のタスクをこれに任せてWebサーバの負担を軽くできます。この方法と似ていますが、1台のサーバにセキュリティ処理(ユーザーの認証と承認)を割り振り、他のWebサーバがコンテンツの要求と応答の処理に専念できるようにすることも可能です。

 ロードバランサは、サーバの応答をバッファ化することもできます。負荷が高くなってきたらロードバランサが応答をバッファまたはキャッシュから取り出して返すようにすれば、サーバの処理能力を節約して、他の優先度の高いタスクに振り向けることが可能になります。

 ロードバランサはサーバの「健康診断」を実施して、ダウンしたサーバまたは過負荷状態のサーバを認識できます。サーバの稼働状況の診断は、ほぼリアルタイムに行うことも、定期的に行うこともできます。異常なサーバが見つかった場合は、それぞれのソリューションの要件や機能に応じて手動または自動で正常なサーバに置き換えます。

 大規模なポータルは、ハッカーからさまざまな手口で攻撃され、深刻な脅威にさらされることがあります。例えば、同じURLを連続して要求してDoS(Denial of Service:サービス停止)攻撃や分散DoS(Distributed Denial of Service)攻撃を実行するプログラムは、サーバに極度の負荷を与えます。ロードバランサは、このような攻撃を緩和または阻止する能力を備えています。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Puneet M. Sangal(Puneet M. Sangal)

    プラクティスマネージャ。欧州、太平洋地域、インド、および米国で12年間にわたりグローバルマネジメント、プロジェクトマネジメント、営業サービス、コンサルティング、ソフトウェア開発に携わる。IIMコルコタでエグゼクティブマネジメントを学び、ノースイースタン大学(マサチューセッツ州ボストン)で理学修士号、...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5