SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 拡張性のある企業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)攻撃を実行するプログラムは、サーバに極度の負荷を与えます。ロードバランサは、このような攻撃を緩和または阻止する能力を備えています。

次のページ
DNSベースのロードバランス

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

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

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Puneet M. Sangal(Puneet M. Sangal)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4408 2009/10/06 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング