Webシステムやクラウドの構成を学んでいると必ず登場する「ロードバランサー」。
「ロードバランサーって何をする機器・ソフトウェアなの?」「どうやって負荷を分散しているの?」と疑問を持つ方も多いでしょう。
本記事では、ロードバランサーの意味・仕組み・振り分け方式・代表的な製品・AWSでの活用まで、わかりやすく解説していきます。
Webシステムのインフラを理解したい方はぜひ最後までご覧ください。
ロードバランサーとは?意味と基本的な仕組み
それではまず、ロードバランサーの基本的な意味と仕組みについて解説していきます。
ロードバランサー(Load Balancer)とは、複数のサーバーに対してクライアントからのリクエストを分散させることで、システム全体の負荷を均等にし、高可用性・高性能を実現する機器・ソフトウェアのことです。
「Load Balance(負荷分散)」という名称のとおり、1台のサーバーに処理が集中することを防ぐことが主な目的です。
【ロードバランサーの基本的な動作】
クライアント → ロードバランサー → サーバー1
→ サーバー2
→ サーバー3
ロードバランサーがリクエストを各サーバーに振り分ける
ロードバランサーを使うことで、1台のサーバーがダウンしても他のサーバーでサービスを継続できる「高可用性(High Availability)」も実現できます。
大規模なWebサービス・EC サイト・クラウドシステムにはロードバランサーが不可欠です。
ロードバランサーの主な役割
ロードバランサーが果たす主な役割は次のとおりです。
| 役割 | 内容 |
|---|---|
| 負荷分散 | 複数サーバーにリクエストを均等に分配 |
| 高可用性 | サーバー障害時に自動でリクエストを迂回 |
| スケールアウト | サーバー追加による処理能力の拡張を容易にする |
| ヘルスチェック | サーバーの死活監視・障害を検知 |
| セッション管理 | 同一ユーザーを同じサーバーに誘導(スティッキーセッション) |
| SSL終端 | HTTPS通信の暗号化・復号処理を引き受ける |
L4ロードバランサーとL7ロードバランサーの違い
ロードバランサーには動作するOSI参照モデルの階層によって「L4(レイヤー4)」と「L7(レイヤー7)」の2種類があります。
L4ロードバランサーはトランスポート層(TCP/UDP)で動作し、IPアドレス・ポート番号に基づいて振り分けを行います。
L7ロードバランサーはアプリケーション層(HTTP/HTTPS)で動作し、URLパス・HTTPヘッダー・クッキーの内容に基づいて振り分けが可能です。
コンテンツベースの高度な振り分けが必要な場合はL7ロードバランサーを使います。
代表的なロードバランサーの製品・ソフトウェア
ロードバランサーの代表的な製品・ソフトウェアを見てみましょう。
ハードウェア製品としては F5 Networks BIG-IP・Citrix ADC(旧NetScaler)・A10 Networks などが有名です。
ソフトウェアでは nginx(エヌジンクス)・HAProxy・Apache HTTP Serverのmod_proxy_balancerがよく使われます。
クラウドでは AWS ELB・GCP Cloud Load Balancing・Azure Load Balancerが代表的です。
コスト・スケーラビリティ・管理コストを考慮して最適なロードバランサーを選択することが重要です。
ロードバランサーの振り分けアルゴリズム
続いては、ロードバランサーでリクエストを振り分けるアルゴリズムを確認していきます。
ラウンドロビン(Round Robin)
最もシンプルな振り分け方式で、サーバーに順番に均等にリクエストを振り分けます。
実装が簡単で各サーバーに均等な負荷がかかりますが、サーバーごとの処理能力の差を考慮しません。
最小接続数(Least Connections)
現在の接続数が最も少ないサーバーにリクエストを振り分ける方式です。
処理に時間がかかるリクエストが混在する場合にラウンドロビンより均等な負荷分散ができます。
IPハッシュ(IP Hash)
クライアントのIPアドレスをハッシュ計算し、常に同じサーバーに振り分ける方式です。
セッション情報をサーバー側で保持する場合に、同一ユーザーを同じサーバーに誘導できます(スティッキーセッション)。
AWSのロードバランサー(ELB)について
続いては、クラウド最大手AWSのロードバランサーサービスを確認していきます。
AWSでは「Elastic Load Balancing(ELB)」というマネージドなロードバランサーサービスが提供されています。
AWS ELBの種類
| 種類 | 特徴 | 主な用途 |
|---|---|---|
| ALB(Application Load Balancer) | L7、HTTPSルーティング・コンテンツベース振り分け | WebアプリケーションのHTTP/HTTPS通信 |
| NLB(Network Load Balancer) | L4、超高速・超低レイテンシ | TCPトラフィック・リアルタイム通信 |
| CLB(Classic Load Balancer) | 旧世代・L4/L7両方 | レガシーシステム(非推奨) |
| GLB(Gateway Load Balancer) | サードパーティ仮想アプライアンスの展開 | ファイアウォール・IPS/IDS |
通常のWebアプリケーションにはALB(Application Load Balancer)を選ぶのが一般的です。
AWSのELBはオートスケーリングとの連携・マネージド証明書のSSL終端など多くの便利機能を持ちます。
ロードバランサーとオートスケーリングの組み合わせ
ロードバランサーとオートスケーリング(Auto Scaling)を組み合わせることで、トラフィックに応じてサーバー台数を自動で増減させる「弾力的なインフラ」が構築できます。
突発的なトラフィックの増加にも自動対応でき、使っていない時間はサーバーを削減してコストを抑えられます。
クラウド時代のWebシステムには「ロードバランサー + オートスケーリング」の組み合わせが標準的な構成となっています。
まとめ
本記事では、ロードバランサーの意味・仕組み・役割・L4/L7の違い・振り分けアルゴリズム・AWSのELBまで詳しく解説しました。
ロードバランサーは複数サーバーへのリクエスト分散・高可用性・スケールアウトを実現する重要なインフラコンポーネントです。
AWS ELB・nginx・HAProxyなど多様な製品があり、用途・コスト・スケールに応じた選択が重要です。
ロードバランサーの仕組みを理解することは、安定した高性能なWebシステムを構築・運用するための基礎知識となるでしょう。
ぜひ本記事を参考に、ロードバランサーの理解を深めてみてください。