ロードバランシングとは?負荷分散の仕組み・L4/L7の違い・主要アルゴリズムを解説

ロードバランシングとは?

ロードバランシング(負荷分散)とは、複数のサーバーにリクエスト(アクセス)を均等に振り分けることで、1台のサーバーに負荷が集中するのを防ぐ技術です。

その名の通り「Load(負荷)」を「Balancing(均衡させる)」仕組みで、この役割を担う装置やソフトウェアをロードバランサーと呼びます。

なぜロードバランシングが必要か?

Webサービスのアクセス数が増えると、1台のサーバーだけでは処理能力が追いつかなくなります。レスポンスが遅くなったり、最悪の場合サーバーがダウンしたりします。

この問題への対策は大きく2つあります。スケールアップ(サーバーのスペックを上げる)スケールアウト(サーバーの台数を増やす)です。スケールアップには物理的な上限がありますが、スケールアウトは理論上いくらでもサーバーを追加できます。

ロードバランシングは、スケールアウトを実現するための中核技術です。複数台のサーバーにリクエストを振り分けることで、1台あたりの負荷を下げ、全体としての処理能力を向上させます。

ロードバランシングの主要なアルゴリズム

アルゴリズム 仕組み 向いている場面
ラウンドロビン 順番に1つずつ振り分ける 各サーバーの性能が同等な場合
重み付きラウンドロビン 性能に応じて振り分け比率を変える サーバーの性能が異なる場合
最小接続数(Least Connections) 現在の接続数が最も少ないサーバーに振り分ける 処理時間にばらつきがある場合
IPハッシュ クライアントのIPアドレスに基づいて常に同じサーバーに振り分ける セッション維持が必要な場合

L4ロードバランサーとL7ロードバランサーの違い

ロードバランサーは動作するOSI参照モデルの層(レイヤー)によって2種類に分かれます。

L4ロードバランサー:トランスポート層(TCP/UDP)で動作。IPアドレスとポート番号に基づいて振り分けます。処理が高速で、通信の中身を見ません。

L7ロードバランサー:アプリケーション層(HTTP/HTTPS)で動作。URLのパスやHTTPヘッダーの内容に基づいて振り分けます。「/api/*へのリクエストはAPIサーバー群へ」「/images/*へのリクエストは画像サーバー群へ」といった柔軟なルーティングが可能です。

主要なロードバランサー

種類 代表例 特徴
クラウドサービス AWS ALB/NLB、GCP Cloud Load Balancing、Azure Load Balancer マネージドで運用負荷が低い。オートスケーリングと連携
ソフトウェア NGINX、HAProxy、Envoy 高いカスタマイズ性。オンプレミスでも利用可能
Kubernetes内部 kube-proxy、Ingress Controller Kubernetes環境でのサービス間通信とHTTPルーティング

ロードバランシングの注意点

セッション管理:ロードバランサーがリクエストごとに異なるサーバーに振り分けると、セッション情報が引き継がれない問題が起きます。スティッキーセッション(同一クライアントを同一サーバーに固定)か、セッション情報をRedisなどの外部ストアに保存する方式で解決します。

ヘルスチェック:サーバーが正常に動作しているかを定期的に確認し、異常なサーバーへのリクエスト振り分けを自動的に停止する機能です。適切に設定しないと、ダウンしたサーバーにリクエストが送られ続けてしまいます。

よくある質問(FAQ)

Q. ロードバランサーとリバースプロキシの違いは?

A. リバースプロキシはクライアントとサーバーの間に入って中継する仕組み全般を指し、ロードバランサーはその中でも「負荷分散」に特化した機能です。NGINXのようにリバースプロキシとロードバランサーの両方の機能を持つソフトウェアも多いです。

Q. 小規模なサイトでもロードバランサーは必要ですか?

A. アクセス数が少ないうちは不要ですが、サーバー1台のダウンでサービスが停止しないよう、冗長化の観点から2台構成+ロードバランサーを早めに検討する価値はあります。

まとめ

ロードバランシングは、複数のサーバーにリクエストを振り分けて負荷を分散させる技術です。L4とL7の2種類があり、アルゴリズムの選択やセッション管理の設計が重要です。クラウドのマネージドサービスを使えば少ない運用負荷で導入でき、Webサービスの可用性とパフォーマンスの向上に直結します。

コメント