ロードバランサとは

ロードバランサ(Load Balancer:負荷分散装置)とは、ネットワーク上の複数のサーバーに対して、外部からのアクセス(通信要求)を均等に振り分けるための装置やソフトウェアのことです。Webサイトやオンラインゲームなどへのアクセスが特定の1台のサーバーに集中すると、そのサーバーの処理が追いつかなくなり、表示が遅くなったりシステムが停止したりします。ロードバランサをサーバーの手前に設置することで、アクセスを各サーバーの空き状況や性能に応じて分散させ、システム全体の安定稼働とパフォーマンスを保つことができます。
具体例
人気のテーマパークの入場ゲートに例えられます。ゲートの前に誘導スタッフ(ロードバランサ)が立っており、並んでいるお客さん(アクセス)を空いているゲート(サーバー)へ順番に「あなたは1番ゲートへ、あなたは2番ゲートへ」と案内します。これにより、特定のゲートだけが大混雑するのを防ぎます。プログラムによる振り分けルールのイメージ(ラウンドロビン方式)は以下のようになります。
// アクセスを順番に振り分けるプログラムの例 String[] servers = {"ServerA", "ServerB", "ServerC"}; int index = 0; void handleRequest(Request req) { String target = servers[index]; sendTo(target, req); // 順番にサーバーへ振り分け index = (index + 1) % servers.length; }
もう少し詳しく
ロードバランサ(負荷分散装置)は、外部からの通信要求(トラフィック)を受け取り、背後にある複数のサーバーへ適切に振り分ける役割を担います。これにより、特定のサーバーに対する過負荷を防ぎ、システム全体のパフォーマンスと安定性を高めることができます。
トラフィックをどのように振り分けるか(負荷分散アルゴリズム)には、いくつかの種類があります。
- ラウンドロビン方式:各サーバーに対して、順番に均等にリクエストを割り振る最も基本的な方式です。サーバーの性能が全て同じ場合に適しています。
- 最小接続(リーストコネクション)方式:現在処理中の通信(セッション)数が最も少ないサーバーに対して、新たなリクエストを割り振る方式です。処理に時間がかかる要求が混ざっている環境で有効です。
- ハッシュ方式:送信元のIPアドレスなどを基に計算を行い、常に同じサーバーに割り振るようにする方式です。
また、ロードバランサは単に振り分けるだけでなく「ヘルスチェック(死活監視)」という重要な機能を持っています。これは定期的に背後のサーバーへ通信を送り、正常に稼働しているかを確認する仕組みです。もしサーバーが故障して応答がない場合、ロードバランサはそのサーバーを振り分け先から自動的に除外し、正常なサーバーのみで運用を継続します。
さらに高度なロードバランサ(L7ロードバランサなど)では、暗号化されたHTTPS通信の復号処理(SSLターミネーション)を肩代わりしてサーバーの負荷を軽減したり、Cookieの情報を見て「ログイン中のユーザーは必ず前回と同じサーバーに振り分ける(セッション維持機能:パーシステンス)」といった細やかな制御も行います。
試験でのポイント
試験では、ロードバランサが「システムの可用性」や「応答性能の向上」にどう寄与するかが問われます。特に「ラウンドロビン」というアルゴリズムの名前はよく出題されるため、順番に均等に割り振る方式であることを覚えておきましょう。
また、ロードバランサ自体が故障するとシステム全体が停止してしまう「単一障害点(SPOF)」になる可能性があるため、ロードバランサ自身も2台用意して冗長化(アクティブ・スタンバイ構成など)しておくのが一般的である、というシステム構成のセオリーも問われることがあります。
関連する用語
順番に処理を割り当てる ラウンドロビン や、サーバーの台数を増やして処理能力を向上させる スケールアウト、複数のサーバーを連携させる クラスタリング といった用語が深く関連します。


