← PC・IT用語集へ戻る

ロードバランサー

Load Balancer
network development beginner
ネットワーク通信を複数の処理先に振り分け、負荷と障害の影響を分散する仕組み。
ロードバランサー (Load Balancer)

概要(サマリー)

ロードバランサー(負荷分散装置)とは、WebサイトやWebアプリケーションへのトラフィックを、複数のサーバーやその他の処理先へ振り分ける仕組み、またはその装置である。

特定のサーバーにだけアクセスが集中して処理が遅くなったり、システムが停止してしまったりするのを防ぎます。ユーザーから見ると、裏側で複数のサーバーが動いていることを意識せず、いつでも安定したWebサービスを利用できるようになります。

詳細解説

ロードバランサーとは何か

「Load(負荷)」を「Balancer(釣り合わせるもの)」という名前の通り、負荷分散アルゴリズムと各処理先の状態に応じて通信を振り分ける。必ずしも各サーバーへ完全に均等に配るわけではない。

多くの利用者が同時にアクセスするサービスを1台のサーバーだけで処理すると、性能や障害時の継続性に限界が生じる。複数の処理先の手前にロードバランサーを置くことで、処理量と障害の影響を分散できる。

ロードバランサーの主な役割

ロードバランサーには、単にアクセスを割り振るだけでなく、システムの信頼性を高めるための重要な役割があります。

  • 負荷分散(ロードバランシング): ラウンドロビン、最小接続数、応答時間、重み付けなど、選択した方式に従って通信を転送する。CPU使用率などを直接見るかは製品や構成による。
  • 可用性の向上: ヘルスチェックなどで異常を検知し、正常な処理先へ通信を送ることで、障害時の影響を減らせる。ただし、サービスが止まらないことを保証するものではない。
  • スケールの柔軟性: 処理先を追加・登録し、必要なアプリ設定やデータ整合性を確保することで、水平方向に処理能力を増やせる。

ロードバランサーの仕組み(振り分け方式)

どのようにアクセスを振り分けるかは、いくつかのアルゴリズム(方式)が選べます。代表的なものは以下の通りです。

  • ラウンドロビン方式: 届いたリクエストを、登録されたサーバーに「1台目、2台目、3台目、また1台目...」と順番に均等に割り振る、最もシンプルな方式です。
  • 最小接続数方式(Least Connections): 現在処理しているアクティブな接続数が最も少ない、一番手が空いているサーバーへ優先的に割り振る方式です。
  • ソースIPハッシュ方式: クライアントのIPアドレスをもとに割り振り先を決定する。同じIPアドレスの通信を同じ処理先へ送りやすいが、IPアドレスの変化や処理先の障害時は別のサーバーが選ばれることがある。

ヘルスチェック機能

ロードバランサーは、配下のサーバーが正常に動いているかを定期的に監視しています。これを「ヘルスチェック」と呼びます。

ヘルスチェックには、定期的に専用リクエストを送るアクティブ方式と、実際の通信で起きたエラーをもとに判定するパッシブ方式などがある。失敗回数や復帰判定のしきい値は製品ごとに設定する。

L4負荷分散とL7負荷分散の違い

ロードバランサーには、通信のどの深さ(レイヤー)を見て振り分けるかによって、大きく2つのタイプがあります。

  • L4(レイヤー4)ロードバランサー: 送信元のIPアドレスやポート番号といったネットワークの接続情報だけを見て機械的に振り分けます。処理が高速である反面、細かい制御はできません。
  • L7(レイヤー7)ロードバランサー: HTTP/HTTPSの通信内容(URLパスCookieの値、ブラウザの種類など)まで解析して振り分けます。たとえば、「画像ファイルへのアクセスは画像専用サーバーへ」「ログイン後のアクセスは特定のサーバーへ」といった高度で柔軟なルーティングが可能です。

AIコーディングとの関係

Webシステムの設計やクラウド環境の構築において、インフラの自動化コード(Terraformなど)や、Webサーバーをロードバランサーとして動作させる設定ファイルをAIに書いてもらう場面は多くあります。

たとえば、代表的なWebサーバーであるNginxを簡易的なロードバランサーとして動作させる設定コードをAIに生成させることができます。

以下は、Nginxを使用したロードバランサーの設定例です。

http {
    # 振り分け先となるサーバーのグループ(アップストリーム)を定義します
    upstream my_web_servers {
        server 192.168.1.11:80; # 1台目のウェブサーバー
        server 192.168.1.12:80; # 2台目のウェブサーバー
    }

    server {
        listen 80; # ロードバランサー自身が待ち受けるポート

        location / {
            # 定義したサーバーグループにリクエストを転送(負荷分散)します
            proxy_pass http://my_web_servers;
        }
    }
}

AIに設定ファイルや構成を指示する際は、以下のように質問すると効果的です。

  • 「Nginxを使って、2台のバックエンドサーバーにラウンドロビンで負荷分散するための最小限の設定ファイルを書いてください」
  • AWSのALB(Application Load Balancer)を構築するTerraformのコードを生成し、ヘルスチェックの設定も含めてください」
  • 「ロードバランサー経由で接続した際、ユーザーのログインセッションが途切れてしまう問題を解消するためのセッション固定(スティッキーセッション)の設定例を教えてください」

よくある勘違い

ロードバランサー自体がサーバーの処理速度を速くする?

ロードバランサーは通信を「交通整理」するだけの存在であり、プログラムの実行速度やデータベースの読み書き速度自体を高速化するわけではありません。

ただし、1台のサーバーに負荷が集中して処理が遅延するのを防ぐため、結果としてユーザーから見た「Webサイトの表示速度や応答性」は快適に保たれます。

ロードバランサーが1台あれば絶対にシステムは停止しない?

配下のサーバーが複数あっても、入り口であるロードバランサー自体が故障などで停止してしまえば、システム全体にアクセスできなくなってしまいます。この状態を「単一障害点(SPOF)」と呼びます。

自前で運用する場合は、複数台構成やDNSフェイルオーバーなどで入り口も冗長化する。クラウドのマネージド型ロードバランサーでは、サービス側が複数ノードやゾーンを使って冗長性を提供する場合がある。

ロードバランサーは高価な専用の機械(ハードウェア)が必要?

昔はデータセンターに設置する専用の機械(アプライアンス)が主流でしたが、現在はソフトウェアやクラウドサービスとしての利用が一般的です。

クラウド環境では、AWS Elastic Load BalancingやGoogle Cloud Load Balancingなどのマネージドサービスを利用できる。料金、対応プロトコル、スケーリング、ヘルスチェックの仕様はサービスごとに異なる。NginxやHAProxyなどのソフトウェアを使い、自分で構築・運用する方法もある。

まとめ

  • ロードバランサーは、アルゴリズムと処理先の状態に応じて通信を分散する仕組みである
  • サーバーが故障した際に自動的に切り離す「ヘルスチェック」機能を備えている
  • 通信の内容(URLなど)まで見て振り分ける高度なL7ロードバランサーもある
  • クラウドの普及により、専用のハードウェアがなくても手軽に導入できるようになっている

情報ソース

より詳しくAIに聞いてみよう

  • ロードバランサーの役割とメリットを、道路の交通整理にたとえて初心者向けに解説してください。
  • ロードバランサーの代表的な振り分け方式(ラウンドロビン、最小接続数など)の違いを説明してください。
  • ロードバランサーの「ヘルスチェック」とはどのような仕組みで、システム停止をどう防いでいるのですか。
  • AWSのELB(Elastic Load Balancing)の種類と、それぞれの使い分けについて教えてください。
  • Nginxをリバースプロキシおよびロードバランサーとして設定する際の、基本パラメータと手順を教えてください。