SHOEISHA iD

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

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

japan.internet.com翻訳記事

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

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

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

DNSベースのロードバランス

 インターネットのDNS(Domain Name System)は、ドメイン名をIPアドレスに解決する仕組みです。ラウンドロビン型のDNSロードバランスは、特別なハードウェアやソフトウェアのコンポーネントを必要としないロードバランス方式として人気があります。DNSロードバランスを実装するには、DNSの基本とDNS解決のプロセスを十分に理解する必要があります。

 例えば、ブラウザからwww.iberindia.comというURLが要求されたとします。ブラウザはwww.iberindia.comのサーバに到達する必要がありますが、その前にこのURL文字列をiberindiaサーバのIPアドレスに変換しなければなりません。DNSは、URL文字列のドメイン部分(ここではiberindia)をIPアドレスに変換します。

 ブラウザ側は、まず解決済みのアドレスが自分のキャッシュに入っていないかを確認します。最近www.iberindia.comを開いたことがあれば、そのIPアドレスはブラウザのローカルDNSキャッシュに残っています。キャッシュにあれば、そのIPアドレスを使って接続を直接開きます。www.iberindia.comを指すIPアドレスがキャッシュに複数ある場合は、サーバとのHTTP接続が成立するまで順番にIPアドレスを試していきます。

※著者注

 このシナリオは一般論として書いたものです。ブラウザによって動作が異なりますし、設定を変更すれば動作も変わります。ブラウザのDNSキャッシュは、ブラウザのHTTPコンテンツキャッシュとは別に存在します。ユーザーの管理が及ぶ範囲は、DNSキャッシュよりもHTTPコンテンツキャッシュの方が広いのが一般的です。

 IPアドレスがキャッシュにないか、キャッシュ内のIPアドレスがどれも有効ではない場合は、あらためてIPアドレスを取得する必要があります。ブラウザは、名前をIPアドレスへと解決するためにオペレーティングシステムと通信します(オペレーティングシステムにもDNSキャッシュがあり、キャッシュ内のIPアドレスをブラウザに通知できることがあります)。

 オペレーティングシステムにドメインのIPアドレスがキャッシュされていなければ、DNSサーバ(ドメインネームサーバ)に問い合わせが発行されます。図1はDNS解決のフローを示しています。ユーザーマシンにあるローカルリゾルバは、ルートDNSサーバに問い合わせを発行します。これに応じて、ルートサーバはアドレスが取得されるまで次々とサブDNSサーバと通信します。取得されたアドレスはブラウザに返されます。一致するIPアドレスが見つからない場合は、エラーコードが返されます。

図1 一般的なDNS要求フロー:キャッシュにアドレスがない場合、クライアントからローカルリゾルバに送信されたDNS要求は、ルートDNSサーバ、サブドメインサーバに渡されて、最終的にクライアントに戻ってくる
図1 一般的なDNS要求フロー:キャッシュにアドレスがない場合、クライアントからローカルリゾルバに送信されたDNS要求は、ルートDNSサーバ、サブドメインサーバに渡されて、最終的にクライアントに戻ってくる

 DNSの仕組みを理解したという前提で、ラウンドロビン方式の説明に戻ります。ユーザーからのDNS要求に対するDNS応答を適切に扱うには、1組のサーバをラウンドロビン方式で操作します。例えば、1つのDNS要求に対して複数のIPアドレスを応答するのも、この方式の実装例です。クライアントがIPアドレスを要求すると、ブラウザはDNS応答の最初のIPを試します。このアドレスが無効であれば次のIPを試す、という流れで手続きは進みます。サーバIPに正常に接続するたびに、返されるIPの順序も変わります。従って、クライアントがIPを要求すると前回とは別のIPが返されることになり、実質的に負荷が複数のサーバに分散されます。

 このテクニックは、WebサーバとFTPサーバの両方で負荷分散に効果があります。世界各国のユーザーからアクセスがあるようなサーバに地理的なロードバランスを提供する方法として、これはよく使われます。要求にタイムリーに応じるには、サーバの方も世界各地に分散して配置すると有効です。要求元のクライアントからなるべく近い場所にあるサーバで要求を扱うことは、明らかに理にかなっています。このようなロードバランスを設定するには、クライアントの地域や隣接する場所にあるサーバのIPリストをDNS要求で返されるIPリストの先頭に配置します。使用できるローカルサーバが複数ある場合は、要求ごとに順序を変えてDNSリストを入れ替える(負荷を均等にする)ことができます。

 残念ながら、単純明快さを長所とするこの方式にも欠点があります。例えば、稼働状況の自動チェックを行わない場合、セットになっているローカルサーバがすべてダウンしたときも、DNS応答に含まれるその地域のIPリストにダウン中のサーバIPが残ってしまいます。また、ラウンドロビン方式のDNSロードバランスでは各ユーザーからの負荷の大小は考慮されず、単に要求が順番にサーバに割り振られるに過ぎません。このような問題を克服するには、サーバの可用性と負荷を調べる機能を実装します。ご想像のとおり、このような機能はあっという間に複雑化するため、大規模ポータルでは自前でサポートするよりもこの分野で実績のある商用プロバイダを頼るのがよいでしょう。

 ロードバランスのソリューションを検討する際に着目すべきはパフォーマンス信頼性拡張性の3点であり、さらに各自の要求事項や予算に基づいて各ソリューションの長所・短所を判断してください。

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング