「ロードバランサーって何をするもの?」「負荷分散って聞いたことあるけど、よくわからない…」
Webサービスやアプリが「アクセス集中で落ちました」というニュースを見たことはありませんか?大量のアクセスを処理するために欠かせないのがロードバランサーです。
この記事では、ロードバランサーとは何か、なぜ必要なのか、どんな仕組みで動いているのかを、初心者向けにわかりやすく解説します。
ロードバランサーとは?
「負荷を分散する装置」のこと
ロードバランサー(Load Balancer)は、その名の通り「Load(負荷)をBalance(分散)する」装置・機能のことです。日本語では「負荷分散装置」とも呼ばれます。
複数のサーバーに対して、アクセス(リクエスト)を振り分けることで、1台のサーバーに負荷が集中するのを防ぎます。
レジに例えてみよう
スーパーのレジで考えてみましょう。
ロードバランサーがない場合:
- レジが1台しかない
- お客さんが増えると行列ができる
- 1人の処理に時間がかかると、全員が待たされる
- レジが故障したら、買い物ができない
ロードバランサーがある場合:
- レジが複数台ある
- 案内係(ロードバランサー)が空いているレジに誘導
- お客さんが分散されるので、待ち時間が短い
- 1台が故障しても、他のレジで対応できる
Webサービスも同じです。ロードバランサーがアクセスを複数のサーバーに振り分けることで、快適なサービスを提供できます。
なぜロードバランサーが必要なのか?
ロードバランサーを使う主な理由は3つあります。
1. 可用性の向上(止まらないサービス)
サーバーが1台だけの場合、そのサーバーが故障するとサービスが止まってしまいます。
ロードバランサーを使って複数台のサーバーを用意しておけば、1台が故障しても他のサーバーで処理を継続できます。これを「冗長化」と言います。
2. スケーラビリティの確保(成長に対応)
サービスが成長してアクセスが増えたとき、1台のサーバーでは処理しきれなくなります。
ロードバランサーを使えば、サーバーを追加するだけでアクセス増加に対応できます。これを「スケールアウト」と言います。
3. パフォーマンスの向上(快適な応答)
複数のサーバーで処理を分担することで、1台あたりの負荷が軽減され、応答時間が短くなります。ユーザーは快適にサービスを利用できます。
| メリット | 説明 |
|---|---|
| 可用性の向上 | 障害時も サービス継続 |
| スケーラビリティ | サーバー追加で拡張可能 |
| パフォーマンス向上 | 負荷分散で応答高速化 |
ロードバランサーの仕組み
ロードバランサーがどのように動いているか、もう少し詳しく見ていきましょう。
基本的な動作の流れ
- ユーザーがWebサイトにアクセス
- リクエストはまずロードバランサーに届く
- ロードバランサーが、振り分け先のサーバーを決定
- 選ばれたサーバーがリクエストを処理
- サーバーの応答がユーザーに返される
ユーザーからは、ロードバランサーの存在は見えません。普通にWebサイトにアクセスしているように感じます。
負荷分散のアルゴリズム
ロードバランサーが「どのサーバーに振り分けるか」を決める方法(アルゴリズム)には、いくつかの種類があります。
| アルゴリズム | 説明 | 特徴 |
|---|---|---|
| ラウンドロビン | 順番に振り分ける | シンプル、最も一般的 |
| 最小接続数 | 接続数が少ないサーバーへ | 負荷の偏りを防ぐ |
| IPハッシュ | 送信元IPで振り分け先を決定 | 同じユーザーは同じサーバーへ |
| 重み付け | サーバーの性能に応じて配分 | 高性能サーバーに多く振り分け |
最もシンプルなのは「ラウンドロビン」で、サーバーA→B→C→A→B→C…と順番にリクエストを振り分けます。
ヘルスチェック機能
ロードバランサーは、定期的にサーバーの状態を確認しています。これを「ヘルスチェック」と言います。
- サーバーが正常に動いているか定期的にチェック
- 異常を検知したサーバーには振り分けを停止
- 復旧したら自動的に振り分けを再開
この機能のおかげで、サーバーが故障しても自動的に正常なサーバーだけに振り分けてくれます。
ロードバランサーの種類
ロードバランサーにはいくつかの種類があります。
1. ハードウェアロードバランサー
専用の機器(アプライアンス)として提供されるタイプ。高性能で信頼性が高い反面、高価です。
代表的な製品:F5 BIG-IP、Citrix ADC、A10 Networksなど
2. ソフトウェアロードバランサー
サーバー上で動作するソフトウェアとして提供されるタイプ。柔軟性が高く、コストを抑えられます。
代表的なソフトウェア:Nginx、HAProxy、Apache(mod_proxy_balancer)など
3. クラウドロードバランサー
クラウドサービスとして提供されるタイプ。構築・運用が簡単で、スケーリングも自動。
| クラウド | サービス名 |
|---|---|
| AWS | ELB(ALB, NLB, CLB) |
| Azure | Azure Load Balancer |
| GCP | Cloud Load Balancing |
現在は、クラウドのロードバランサーを使うことが多くなっています。
L4とL7の違い
ロードバランサーの説明で「L4」「L7」という言葉を見かけることがあります。これはOSI参照モデルのレイヤー(層)を指しています。
L4ロードバランサー(レイヤー4)
トランスポート層で動作し、IPアドレスとポート番号を見て振り分けを行います。
- 処理が高速
- シンプルな振り分けに適している
- 通信の中身は見ない
L7ロードバランサー(レイヤー7)
アプリケーション層で動作し、HTTPヘッダーやURLの内容を見て振り分けを行います。
- 細かい振り分けルールが設定可能
- URLごとに異なるサーバーへ振り分け可能
- SSL終端(HTTPS通信の処理)も可能
| 項目 | L4 | L7 |
|---|---|---|
| 動作レイヤー | トランスポート層 | アプリケーション層 |
| 振り分け基準 | IP、ポート | URL、ヘッダー、Cookie等 |
| 処理速度 | 高速 | やや遅い |
| 柔軟性 | 低い | 高い |
Webアプリケーションでは、URLによって振り分け先を変えたいことが多いので、L7ロードバランサー(ALBなど)がよく使われます。
AWSのロードバランサー(ELB)
クラウドで最もよく使われるAWSのロードバランサーを簡単に紹介します。
AWSのロードバランサーはELB(Elastic Load Balancing)という名称で、3種類あります。
| 種類 | 特徴 | 用途 |
|---|---|---|
| ALB | L7(HTTP/HTTPS)対応 | Webアプリケーション |
| NLB | L4対応、超高性能 | 高トラフィック、TCP/UDP |
| CLB | 旧世代(L4/L7両対応) | レガシー環境 |
新規で構築する場合は、ALB(Application Load Balancer)を選ぶことが多いです。
インフラエンジニアとロードバランサー
ロードバランサーは、インフラエンジニアにとって必須知識の1つです。
現場でよくある作業
- ロードバランサーの構築・設定
- サーバーの追加・削除(スケールアウト/イン)
- ヘルスチェックの設定・監視
- SSL証明書の設定・更新
- 障害時の切り離し・復旧対応
身につけておきたい知識
- ロードバランサーの基本概念(この記事の内容)
- クラウド(AWS等)のロードバランサーサービス
- Nginx等のソフトウェアでの負荷分散設定
- DNS、SSL/TLSの基礎知識
まとめ
この記事のポイントを整理します。
| 項目 | 内容 |
|---|---|
| ロードバランサーとは | アクセスを複数サーバーに分散する装置 |
| なぜ必要か | 可用性向上、スケーラビリティ、性能向上 |
| 振り分け方法 | ラウンドロビン、最小接続数など |
| 種類 | ハードウェア、ソフトウェア、クラウド |
| L4とL7 | L4はIP/ポート、L7はURL/ヘッダーで振り分け |
ロードバランサーは、現代のWebサービスを支える重要な基盤技術です。一見難しそうに見えますが、基本的な考え方はシンプル。「アクセスを分散して、サーバーの負荷を減らす」ということです。
まずは概念を理解して、余裕があればAWS等で実際に触ってみると、より理解が深まりますよ!