ロードバランサーとは?アクセスを複数サーバーに分散する仕組みを初心者向けに解説
Webサイトのアクセスが増えてくると、1台のサーバーだけですべてのアクセスを処理するのが難しくなる場合があります。
アクセスが集中すると、サーバーのCPUやメモリなどに負荷がかかり、ページの表示が遅くなったり、サービスが利用しにくくなったりすることがあります。
そこで利用される仕組みの一つがロードバランサーです。
ロードバランサーは、利用者からのアクセスを受け取り、複数のサーバーへ振り分ける役割を持っています。
ロードバランサーとは?
ロードバランサー(Load Balancer)は、WebサイトやWebサービスへのアクセスを複数のサーバーへ分散する仕組みです。
「Load」は負荷、「Balancer」は均衡を取るものという意味があります。
簡単に言えば、サーバーに集中する負荷を分散するための仕組みです。
たとえば、1台のサーバーだけで処理する場合は、
利用者
↓
サーバーA
という構成になります。
ロードバランサーを利用すると、
利用者
↓
ロードバランサー
├ → サーバーA
├ → サーバーB
└ → サーバーC
のように、複数のサーバーへアクセスを振り分けられます。
なぜロードバランサーが必要なの?
一番大きな理由は、アクセスや処理の負荷を分散するためです。
Webサイトにアクセスが集中すると、1台のサーバーだけでは処理しきれなくなる可能性があります。
複数のサーバーに処理を分散すれば、1台あたりの負担を抑えやすくなります。
たとえば、100人の利用者が同時にアクセスした場合、1台ですべて処理するのではなく、複数のサーバーに分けて処理するイメージです。
実際の分散方法は設定によって異なりますが、サーバー全体の負荷を抑えるために利用されます。
ロードバランサーがない場合との違い
ロードバランサーを使わないシンプルな構成では、利用者からのアクセスが1台のサーバーに集中します。
ロードバランサーなし
利用者
↓
サーバーA
この構成はシンプルですが、アクセスが増えるとサーバーAへの負荷も増えていきます。
一方、ロードバランサーを使うと、
ロードバランサーあり
┌→ サーバーA
利用者 → ロードバランサー → サーバーB
└→ サーバーC
のように複数のサーバーへ処理を分散できます。
ロードバランサーはどうやって振り分ける?
ロードバランサーは、決められたルールに従ってアクセスを振り分けます。
代表的な方法の一つがラウンドロビンです。
ラウンドロビン
複数のサーバーへ順番にアクセスを振り分ける方法です。
たとえば、
1回目 → サーバーA
2回目 → サーバーB
3回目 → サーバーC
4回目 → サーバーA
というように順番に割り当てます。
比較的シンプルな方法ですが、各サーバーの処理能力や現在の負荷まで考慮しているわけではありません。
重み付け
サーバーごとに処理能力が異なる場合は、サーバーごとに「重み」を設定する方法もあります。
処理能力の高いサーバーには多く、低いサーバーには少なくアクセスを割り当てるといった使い方ができます。
最小接続数
現在接続されている数が少ないサーバーへ新しいアクセスを振り分ける方法もあります。
単純に順番で分けるのではなく、その時点での接続状況を考慮できるのが特徴です。
実際にどの方式を利用するかは、サービスの構成やロードバランサーの種類によって異なります。
ヘルスチェックとは?
ロードバランサーを理解するときに重要なのがヘルスチェックです。
ロードバランサーは、接続先のサーバーが正常に動作しているか確認することがあります。
これがヘルスチェックです。
たとえば、3台のサーバーのうち1台が停止している場合、そのサーバーへアクセスを振り分け続けると、利用者はエラーを受け取ることになります。
そこでロードバランサーが各サーバーの状態を確認し、異常が検知されたサーバーを一時的に振り分け先から外すことがあります。
イメージすると、
正常
ロードバランサー
├ → サーバーA ○
├ → サーバーB ○
└ → サーバーC ○
サーバーBに障害が発生
ロードバランサー
├ → サーバーA ○
├ → サーバーB ×
└ → サーバーC ○
このように、正常なサーバーへ処理を振り分けることで、サービスへの影響を抑えやすくなります。
ロードバランサーは障害対策にも使われる
ロードバランサーの目的は負荷分散だけではありません。
複数のサーバーを用意しておけば、1台に障害が発生した場合でも、ほかのサーバーで処理を続けられる構成にできます。
そのため、ロードバランサーはサービスの可用性を高めるための仕組みとしても利用されます。
ただし、ロードバランサーを導入しただけで障害がなくなるわけではありません。
データベースやネットワーク、アプリケーションなど別の部分で障害が発生する可能性もあります。
ロードバランサーとリバースプロキシの違い
前の記事で紹介したリバースプロキシとロードバランサーは、実際のシステムでは似た構成で使われることがあります。
リバースプロキシは、利用者からのアクセスを受け取り、内部のWebサーバーやアプリケーションサーバーへ中継する仕組みです。
ロードバランサーは、その中でも特に複数のサーバーへアクセスを分散する役割が重要になります。
そのため、
リバースプロキシ=アクセスを中継する仕組み
ロードバランサー=アクセスを複数のサーバーへ分散する仕組み
と覚えると理解しやすいでしょう。
なお、Nginxのようにリバースプロキシとして利用でき、負荷分散の機能も持つソフトウェアがあります。
ロードバランサーにはどんな種類がある?
ロードバランサーには、処理する通信のレイヤーによっていくつかの種類があります。
初心者がまず知っておきたいのが、L4ロードバランサーとL7ロードバランサーです。
L4ロードバランサー
L4はOSI参照モデルのトランスポート層にあたります。
TCPやUDPなど、通信の情報をもとにアクセスを振り分けます。
Webページの内容やURLのパスなど、アプリケーションの中身を詳しく見るのではなく、通信レベルで処理するのが特徴です。
L7ロードバランサー
L7はアプリケーション層にあたります。
HTTPのURLやホスト名、ヘッダーなど、より上位の情報を利用してアクセスを振り分けられます。
たとえば、
/api/ → APIサーバー/images/ → 画像配信サーバー
のように、リクエストの内容に応じて転送先を変える構成も可能です。
初心者の段階では、
L4=通信レベルで分散
L7=HTTPなどの内容を見て分散
と覚えておけば十分です。
ロードバランサーを使うとサーバーを増やしやすい?
ロードバランサーを利用すると、複数のサーバーを並べて処理する構成を作りやすくなります。
アクセスが増えてきた場合、新しいサーバーを追加して処理能力を増やす方法もあります。
このようにサーバーを横に増やしていく考え方をスケールアウトと呼びます。
一方、1台のサーバーそのものを高性能なCPUやメモリを持つものへ変更して処理能力を高める方法はスケールアップです。
| 方法 | 意味 |
|---|---|
| スケールアップ | 1台のサーバーを高性能にする |
| スケールアウト | サーバーの台数を増やす |
ロードバランサーは、特にスケールアウトした構成で重要な役割を果たします。
小規模なWebサイトにも必要?
すべてのWebサイトにロードバランサーが必要なわけではありません。
アクセスが少なく、1台のサーバーで十分に処理できる場合は、ロードバランサーを導入すると構成が複雑になることもあります。
一方で、
- 大量のアクセスが予想される
- 複数のWebサーバーを運用している
- サーバー障害時の影響を抑えたい
- サービスを止めにくい構成にしたい
- 将来的にサーバーを増やしたい
といった場合には、ロードバランサーが役立ちます。
必要性は、アクセス数だけでなく、サービスの重要度や構成、求められる可用性などを考えて判断します。
初心者が覚えておきたいポイント
ロードバランサーについては、まず次のポイントを押さえておけば十分です。
ロードバランサー
→ 複数のサーバーへアクセスを分散する仕組み
負荷分散
→ 1台に集中する処理を複数のサーバーへ分けること
ヘルスチェック
→ サーバーが正常に動作しているか確認する仕組み
スケールアウト
→ サーバーの台数を増やして処理能力を高める方法
そして、ロードバランサーは「アクセスを分けるだけの機械」ではありません。
障害が発生したサーバーを振り分け先から外したり、複数のサーバーを一つのサービスとして扱いやすくしたりする役割もあります。
まとめ
ロードバランサーは、WebサイトやWebサービスへのアクセスを複数のサーバーへ分散する仕組みです。
アクセスが1台のサーバーに集中すると、処理能力を超えてページの表示が遅くなったり、サービスが利用しにくくなったりする可能性があります。
ロードバランサーを利用すると、
利用者
↓
ロードバランサー
↓
複数のサーバー
という構成にして、処理を分散できます。
また、ヘルスチェックによって異常のあるサーバーを振り分け先から外すなど、サービスの可用性を高めるためにも利用されます。
すべてのWebサイトに必要なわけではありませんが、アクセスの増加や複数サーバーでの運用を考える場合には重要な仕組みです。
まずは、**「ロードバランサー=複数のサーバーへアクセスを分散する仕組み」**と覚えておけば、クラウドや大規模なWebサービスの構成も理解しやすくなります。
ロードバランサーとは簡単にいうと何ですか?
利用者からのアクセスを受け取り、複数のサーバーへ振り分ける仕組みです。1台のサーバーに負荷が集中するのを防ぐために利用されます。
ロードバランサーがあるとサーバーが1台停止しても大丈夫ですか?
複数のサーバーで処理する構成になっていれば、障害が発生したサーバーを振り分け先から外し、ほかのサーバーで処理を続けられる場合があります。ただし、システム全体の構成によって動作は異なります。
ロードバランサーとリバースプロキシは同じですか?
同じではありません。リバースプロキシはアクセスを内部サーバーへ中継する仕組みで、ロードバランサーは複数のサーバーへアクセスを分散することが主な役割です。両方の機能を持つ製品やソフトウェアもあります。
L4とL7ロードバランサーの違いは何ですか?
L4はTCPやUDPなどの通信レベルの情報を利用して分散します。L7はHTTPのURLやホスト名など、より上位の情報を利用して振り分けることができます。
小さなWebサイトにもロードバランサーは必要ですか?
必ずしも必要ではありません。1台のサーバーで十分に処理できる場合は、シンプルな構成のほうが管理しやすいこともあります。アクセス量やサービスの重要度、必要な可用性などを考えて判断します。
