ロードバランサーの仕組みを図解で説明 〜負荷分散の方式とヘルスチェック〜
アクセスの多いWebサイトが、1台のサーバだけで動いていると思いますか?
実際には、何台ものサーバで処理を分け合っていることがほとんどです。
その時に、利用者からの要求をどのサーバに渡すかを決めるのが「ロードバランサー」です。
ロードバランサーの仕組みと、振り分けの方式について、図を使って説明していきます。

ロードバランサーとは?
ロードバランサーは、利用者からの要求を受け取り、複数のサーバに振り分ける装置やソフトウェア です。
日本語では「負荷分散装置」と呼ばれます。
利用者からは、ロードバランサーが1つの窓口に見えます。
利用者は、裏で何台のサーバが動いているかを意識する必要がありません。
ロードバランサーを使うと、主に次の2つの良いことがあります。
- 処理を分け合える: アクセスが増えたら、サーバを足すだけで処理できる量を増やせる
- 止まりにくくなる: 1台のサーバが故障しても、残りのサーバで処理を続けられる
サーバの台数を増やして処理できる量を増やすことを「スケールアウト」と呼びます。
振り分けの方式
ロードバランサーが、要求をどのサーバに渡すかを決める方法は、いくつかあります。
代表的な4つの方式を、図で比べます。

ラウンドロビン
サーバに順番に1つずつ渡す方式 です。
一番シンプルで、よく使われます。
ただし、処理に時間がかかる要求が1台に偏っても、順番どおりに渡し続けます。
重み付けラウンドロビン
サーバの性能に合わせて、渡す割合を変える方式 です。
例えば、性能の高いサーバに2回、性能の低いサーバに1回の割合で渡します。
性能の違うサーバが混ざっている時に使います。
最小接続数
今つながっている数が一番少ないサーバに渡す方式 です。
処理に時間がかかる要求が多い時でも、空いているサーバを選べます。
送信元IPアドレス
利用者のIPアドレスをもとに、渡すサーバを決める方式 です。
同じIPアドレスからの要求は、同じサーバに渡ります。
ヘルスチェック
ロードバランサーは、サーバが正常に動いているかを定期的に確かめています。
これを「ヘルスチェック」(死活監視)と呼びます。

応答がないサーバは、振り分け先から外します。
サーバが直って応答が戻ったら、また振り分け先に戻します。
この仕組みがあるので、1台が故障しても、利用者は気付かずにサービスを使い続けられます。
セッションの維持
ネットショップのカートやログインの情報を、それぞれのサーバの中に持っている場合があります。
この時、要求のたびに別のサーバへ渡されると、カートの中身が消えたように見えてしまいます。

そこで、同じ利用者の要求を、同じサーバに渡し続ける 機能があります。
これを「セッションの維持」(パーシステンス)と呼びます。
Cookieや送信元IPアドレスを使って、利用者を見分けます。
最近は、ログインの情報などをサーバの外(データベースなど)にまとめて置き、どのサーバに渡っても困らないように作ることも多いです。
L4とL7のロードバランサー
ロードバランサーは、要求のどこを見て振り分けるかで、2種類に分けられます。
| 種類 | 見る情報 | 特徴 |
|---|---|---|
| L4 | IPアドレスとポート番号 | 処理が軽くて速い |
| L7 | URL、Cookieなど、HTTPの中身 | 「/images/ はこのサーバ」のように、URLで振り分け先を変えられる |
L4、L7は、OSI参照モデルの第4層(トランスポート層)と第7層(アプリケーション層)のことです。
ロードバランサー自体の冗長化
ロードバランサーが1台しかないと、ロードバランサーが故障した時に全体が止まってしまいます。
そのため、ロードバランサーも2台用意して、片方が故障したらもう片方に切り替えるようにすることが一般的です。
クラウドのロードバランサーのサービスは、この冗長化をクラウドの事業者が行っています。
まとめ
今回はロードバランサーの仕組みについて説明しました。
ロードバランサーは、利用者からの要求を受け取り、複数のサーバに振り分ける装置です。
振り分けの方式には、ラウンドロビン、重み付けラウンドロビン、最小接続数、送信元IPアドレスなどがあります。
ヘルスチェックで故障したサーバを外すので、1台が止まってもサービスを続けられます。
「ロードバランサーは、複数のサーバの前に立つ1つの窓口」と覚えておきましょう。
Webシステムのサーバの構成については、2層・3層クライアントサーバシステムの違いを図解で説明の記事で説明しています。
OSI参照モデルの層については、OSI参照モデルの仕組みを図解で説明の記事で説明しています。
冗長化でシステムがどのくらい止まりにくくなるかは、稼働率と冗長化の仕組みを図解で説明の記事で説明しています。
ロードバランサーと同じようにWebサーバの手前に置かれる仕組みについては、CDNとリバースプロキシの仕組みを図解で説明の記事で説明しています。


