ロードバランシングとは、入ってくるネットワークトラフィックをバックエンドサーバのグループ(サーバファームやサーバプールとも呼ばれます)に効率的に分配することです。
現代の高トラフィックのWebサイトは、ユーザやクライアントからの何十万、何百万もの同時リクエストに対応し、適切なテキスト、画像、動画、アプリケーションデータをすべて高速かつ信頼性の高い方法で返す必要があります。このような大容量に対応するためにコスト効率良く拡張するには、現代のコンピューティングのベストプラクティスでは、一般的にサーバを追加する必要があります。
ロードバランサーは、サーバの前で「交通整理」の役割を果たし、クライアントのリクエストを対応可能なサーバに分配することで、スピードと容量を最大化し、1台のサーバだけに過剰な負荷がかからないようにすることでパフォーマンスの低下を防ぎます。サーバが1台停止した場合、ロードバランサーは残りのオンラインサーバにトラフィックをリダイレクトします。新しいサーバがサーバグループに追加されると、ロードバランサーは自動的にそのサーバへのリクエスト送信を開始します。
この方法で、ロードバランサーは以下の機能を実行します。
- クライアントのリクエストやネットワークの負荷を、複数のサーバに効率的に分散する
- オンラインのサーバにのみリクエストを送信することで、高い可用性と信頼性を確保する
- 需要に応じてサーバを追加・削減する柔軟性を提供する

ロードバランシングのアルゴリズム
ロードバランシングのアルゴリズムごとにメリットが異なるため、ニーズに応じてロードバランシングの手法を選択する必要があります。
- ラウンドロビン – リクエストがサーバグループに順次分配されます。
- リースト コネクション(最小接続) – クライアントとの現在の接続数が最も少ないサーバに新しいリクエストが送信されます。各サーバの相対的な計算能力は、どのサーバが最も接続数が少ないかを決定する際に考慮されます。
- 最小レスポンス – 最も速いレスポンスタイムと最も少ないアクティブな接続数を組み合わせた計算式を使用し、これによって選択されたサーバにリクエストを送信します。NGINX Plusでのみ利用できます。
- ハッシュベース –クライアントのIPアドレスやリクエストのURLなど、定義したキーに基づいてリクエストを分配します。NGINX Plusでは、上流サーバのセットが変更された場合の負荷の再分配を最小限に抑えるために、一貫したハッシュを適用するオプションを利用できます。
- ソースIPハッシュベース – クライアントのIPアドレスは、リクエストを受信するサーバを決定するために使用されます。
- Random with Two Choices – ランダムに2つのサーバを選び、Least Connectionsアルゴリズム(NGINX Plusの場合、構成によってはLeast Timeアルゴリズム)を適用して選択されたサーバにリクエストを送信します。
ロードバランシングのメリット
- ダウンタイムの削減
- 拡張性
- 冗長性
- 柔軟性
- 効率性
関連トピック
セッションパーシステンス
多くの場合、ユーザのセッションに関する情報は、ブラウザでローカルに保存されます。たとえば、ショッピングカートのアプリケーションでは、ユーザのカートに入っているアイテムは、ユーザの購入準備ができるまでブラウザレベルで保存されます。ショッピングセッションの途中で、クライアントからのリクエストを受け取るサーバを変更すると、パフォーマンスの問題や、トランザクションの失敗を引き起こす可能性があります。このような場合は、セッションの間、クライアントからのすべてのリクエストが同じサーバに送られるようにする必要があります。これはセッションパーシステンスと呼ばれます。
最善のロードバランサーは、必要に応じてセッションパーシステンスを処理できます。セッションパーシステンスのもう1つの使用例は、上流サーバがユーザから要求された情報をキャッシュに保存し、パフォーマンスを向上させる場合です。サーバが切り替わると情報を再び取得しなければならず、パフォーマンスの効率が低下するので、セッションパーシステンスが有意義です。
サーバグループの動的構成
変更の多いアプリケーションでは、常に新しいサーバの追加や削除が必要になります。これは、AWS(Amazon Web Services)のEC2(Elastic Compute Cloud)のような環境で一般的です。EC2の場合、ユーザは実際に使用するコンピューティング能力に対してのみ料金を支払うことができるとともに、トラフィックの急増に応じた能力の拡張が保証されます。このような環境で、ロードバランサーが既存の接続を中断することなく、動的にサーバをグループに追加したりグループから削除したりできれば、大いに役立ちます。
ハードウェアとソフトウェアのロードバランシング
一般的には、ハードウェアベースとソフトウェアベースの2タイプのロードバランサーが提供されています。ハードウェアベースのソリューションの場合、ベンダーは自社マシンに独自ソフトウェアを搭載します。多くの場合、マシンには専用プロセッサが搭載されます。Webサイトのトラフィック増加に対応するには、ベンダーからより多くのマシン、もしくはより大きなマシンを購入する必要があります。ソフトウェアソリューションは、一般的に汎用ハードウェア上で動作するため、低コストで柔軟性が高くなります。また、任意のハードウェアや、AWS EC2などのクラウド環境にインストールできます。
7層構造のOSI(Open System Interconnection)
ロードバランシングは、ネットワークのOSI(Open Systems Interconnection)参照モデルのさまざまなレイヤーで実行できます。
レイヤー7ロードバランシングは、パケットベースのレイヤー4ロードバランシングに比べるとCPUへの負荷が大きくなりますが、最新サーバでパフォーマンスの低下を引き起こすことはほとんどありません。レイヤー7ロードバランサーは、高度なロードバランシングの決定を下すことができ、コンテンツに最適化や変更を適用できます。
NGINX Plusはどのように役立ちますか?
NGINX PlusとNGINXは、クラス最高のロードバランシングソリューションであり、Dropbox、Netflix、Zyngaなどの高トラフィックのWebサイトで使用されています。世界中で4.5億以上のWebサイトがNGINX PlusとNGINX Open Sourceを利用しており、迅速かつ確実で安全なコンテンツのデリバリーを実現しています。
ソフトウェアロードバランサーであるNGINX Plusは、同様の機能を持つハードウェアソリューションに比べてはるかに低価格です。NGINX Plusの包括的ロードバランシング機能により、高度に最適化されたアプリケーションデリバリーネットワークを構築できます。
NGINX PlusをロードバランサーとしてアプリケーションやWebサーバファームの前に配置することで、Webサイトの効率、パフォーマンス、信頼性を向上させることができます。顧客満足度とIT投資収益率の両方を最大化するNGINX Plusをぜひお役立てください。
関連コンテンツ
- クラウドロードバランシングとは?
- DNSロードバランシングとは?
- グローバルサーバロードバランシングとは?
- HTTPとは?
- ハイブリッドロードバランシングとは?
- レイヤー4ロードバランシングとは?
- レイヤー7ロードバランシングとは?
- ネットワークロードバランサーとは?
- ラウンドロビンロードバランシングとは?
- SSLロードバランサーとは?
- NGINX Plusを使用した高性能ロードバランシング
- NGINX Plus管理者ガイドの「ロードバランサー」 セクション
- NGINX Plusのお客様事例
参考資料
- ロードバランシング(コンピューティング)(Wikipedia)
- ロードバランシングとは?(YouTube)
- ロードバランシングの定義(TechTarget)
- Elastic Load Balancingとは?(AWSドキュメント)