ラウンドロビン負荷分散とは

NGINXで、クライアントからのリクエストをサーバー群に分散する最もシンプルな方法の1つであるラウンドロビン負荷分散についてご紹介します。

ラウンドロビン負荷分散は、クライアントリクエストをサーバーグループに分散する最もシンプルな方法の1つです。ラウンドロビンロードバランサーは、グループ内のサーバーをリストの順にたどり、各サーバーへクライアントリクエストを順番に転送します。リストの末尾に達すると先頭に戻り、再び順番に転送します(次のリクエストをリストの最初のサーバー、その次のリクエストを2番目のサーバーへ送信し、以降も同様に処理します)。

ロードバランシングの詳細については、「ロードバランシング:NGINX Plusによるスケーラブルなトラフィック管理」をご覧ください。

ラウンドロビン方式のロードバランシングには、実装が非常に簡単という大きな利点があります。ただし、多くのラウンドロビン方式のロードバランサーは、すべてのサーバーが現在稼働中で、同じ負荷を処理し、同等のストレージ容量とコンピューティング能力を備えていると想定するため、トラフィックを常に最も正確かつ効率的に分散できるとは限りません。ラウンドロビンアルゴリズムの以下のバリエーションでは、追加の要素を考慮することで、ロードバランシングを改善できる可能性があります。

  • 重み付きラウンドロビン – サイト管理者が選択した基準に基づいて、各サーバーに重みを割り当てます。最も一般的な基準は、サーバーのトラフィック処理能力です。重みが大きいほど、そのサーバーが受信するクライアントリクエストの割合も大きくなります。たとえば、サーバーAに3、サーバーBに1の重みを割り当てた場合、ロードバランサーはサーバーBに1件のリクエストを転送するごとに、サーバーAに3件のリクエストを転送します。
  • 動的ラウンドロビン – サーバーの現在の負荷と空き容量に関するリアルタイムデータに基づいて、各サーバーに重みが動的に割り当てられます。

アプリケーションを複数のクラウドに展開する際の考慮事項については、こちらの動画をご覧ください。

NGINXはどのように役立つのか

NGINX PlusとNGINXは、Dropbox、Netflix、Zyngaなど、トラフィック量の多いWebサイトで使用されている最高クラスの負荷分散ソリューションです。世界中で3億5,000万を超えるWebサイトが、コンテンツを迅速かつ確実、安全に配信するためにNGINX PlusとNGINX Open Sourceを利用しています。

NGINX Plusロードバランサーは、デフォルトでラウンドロビン方式を使用しますが、パフォーマンスを向上させ、クライアントに返されるエラー数を削減する機能も備えています。サーバーがリクエストに応答しない場合やエラーを返した場合、NGINX Plusロードバランサーはそのリクエストを別のサーバーに自動的に再送信し、指定された期間(デフォルトでは10秒)、障害が発生しているサーバーにはリクエストを送信しません。また、重み付けラウンドロビンや動的ラウンドロビンのほか、NGINX Plusで利用できる、より高度な負荷分散アルゴリズムも設定できます。アルゴリズムの詳細については、NGINX Plus Admin Guideの「負荷分散方式の選択」を参照してください。

NGINX Plusを使用してアプリケーションの負荷を分散するメリットについて詳しくは、eBook「ソフトウェアロードバランサーを選ぶ5つの理由」をダウンロードしてください。