FE EXAM

ロードバランサ(負荷分散)

複数のサーバへリクエストを振り分けて負荷を分散させる装置・仕組み。

INTERACTIVE VISUALIZATION
クライアント
ロードバランサ
サーバ
振り分け方式
ラウンドロビン(順番に振り分け)
到着したリクエストを、サーバ1→2→3→1…と順番に均等に振り分ける方式。
到着リクエスト
振り分け先
処理中の合計接続数
0
振り分け方式(シナリオ)
ステップ1 / 7
STEP 1/7リクエストが次々と到着たくさんのクライアント(=利用者の端末)から、ほぼ同時にリクエスト(=処理のお願い)が届きます。これを1台のサーバだけで受けると、その1台に負荷が集中してしまいます。
クライアント多数の利用者ロードバランサ振り分け装置サーバ1接続数:0サーバ2接続数:0サーバ3接続数:01か所で受けて複数サーバへ振り分け → 1台に負荷が集中しない
解説

📌
ロードバランサとは

クライアントロードバランササーバ1サーバ2サーバ3

ロードバランサ(負荷分散装置)とは、複数のサーバの前に立ち、届いたリクエスト(=処理のお願い)を各サーバへ振り分けて負荷を分散させる装置・仕組みのことです。「ロード(負荷)」を「バランス(均す)」する役割からこの名前がついています。

身近な例で考えると、スーパーのレジ整理の係員に似ています。1つのレジに行列が集中しないよう、「次の方はあちらの空いているレジへどうぞ」と案内する係です。お客さんはどのレジが空いているか自分で探さなくても、係員の案内に従えばスムーズに会計できます。

上のツールで▶ボタンを押すと、クライアントからのリクエストをロードバランサがまとめて受け取り、複数のサーバへ振り分けて処理させる流れを確認できます。

🔀
振り分け方式

ロードバランサが「どのサーバに渡すか」を決めるルールを振り分け方式(負荷分散アルゴリズム)と呼びます。状況に合わせて使い分けます。

代表的な方式は次のとおりです。
ラウンドロビン:サーバ1→2→3→1…と順番に1件ずつ均等に配る。シンプルで分かりやすい
最小コネクション:処理中の接続数がもっとも少ないサーバへ送る。混み具合を見て偏りを抑える
重み付けラウンドロビン:性能の高いサーバに多めに配るなど、サーバごとの比率を変える
IPハッシュ:クライアントのIPアドレスから振り分け先を計算し、同じ利用者を毎回同じサーバへ送る

上のツールでは、シナリオを切り替えてラウンドロビン最小コネクションを比べられます。ラウンドロビンは順番だけで配るのに対し、最小コネクションは各サーバの接続数を見てから配るため、処理時間に差があるときでも偏りを抑えられます。

🚀
用途と効果

ヘルスチェックで故障サーバを切り離すサーバ1✕ 故障サーバ3故障した1台を外して残りで処理を継続

ロードバランサを使うと、サーバ全体の処理能力可用性(=止まりにくさ)の両方を高められます。

主な用途と効果は次のとおりです。
大量アクセスを捌く:1台では処理しきれないリクエストを複数台で手分けする
可用性の維持:ヘルスチェック(=各サーバの死活監視)で故障した1台を自動で切り離し、残りのサーバで処理を続ける
スケールアウトとの組み合わせ:サーバの台数を増やして処理能力を上げる「スケールアウト」と相性がよく、追加したサーバにもすぐ振り分けられる

とくに可用性の面では、待機系への切替(スタンバイ方式)が「1台が倒れたら予備に代わる」のに対し、ロードバランサは「最初から複数台で動かし、倒れた1台を外すだけで残りが動き続ける」という考え方だと捉えると、両者の違いが分かりやすいです。

📌
なぜ振り分け方式で結果が変わるのか

ラウンドロビンSV1 重い処理中SV2 空き次もSV1へ→偏る最小コネクションSV1 重い処理中SV2 空き ← 選ぶ空きを見て選ぶ→均等

振り分け方式によって、負荷の偏り方が変わります。なぜ同じ「順番に配る」だけでは不十分なのかを理解しておくと、方式の違いが実感できます。

たとえば3台のサーバに「1→2→3→1…」と順番に配るラウンドロビンでは、サーバ1に重い処理が残っていても次の番になるとまた割り当てられます。リクエストごとの処理時間がバラバラだと、特定のサーバに処理が溜まって偏りが生じます。

一方、最小コネクション方式は、配る前に「今どのサーバが一番空いているか(処理中の件数が少ないか)」を確認してから選びます。処理時間にばらつきがある場合に偏りを抑えやすいのが特徴です。
・ラウンドロビン:シンプル・高速。処理時間がほぼ均一なときに向く
・最小コネクション:偏り防止。処理時間にばらつきがあるときに向く

上のツールのシナリオを切り替えて、両方式の振り分け先の違いを比べてみましょう。

📌
ロードバランサとリバースプロキシの関係

利用者リバースプロキシロードバランササーバAサーバB実際は1つの機器が両方の役割を担うことが多い

ロードバランサリバースプロキシは、役割が重なる部分があります。混乱しやすいので整理しておきましょう。

項目ロードバランサリバースプロキシ
主な役割複数サーバへの振り分け(負荷分散)外部要求を受けて内部サーバへ転送
負荷分散あり(主機能)あり(副機能として持つことが多い)
SSL終端製品によりありあり(よく使われる機能)
キャッシュなしあり

実際の現場では、1つの製品やソフトウェアが両方の役割を兼ねることが多いです。「ロードバランサ」は「負荷を分散する」という機能に注目した呼び名であり、「リバースプロキシ」はサーバ側で外部要求を受ける配置に注目した呼び名です。どちらの言葉も「間に立ってサーバを守り、振り分ける装置」を指していると覚えると整理しやすいです。

📌
ヘルスチェックの仕組み

ロードバランサSV1 正常応答ありSV2 故障応答なしSV3 正常応答なし→除外SV1・SV3で継続

ヘルスチェックとは、ロードバランサが定期的に各サーバへ「生きていますか?」という問い合わせを送り、応答がないサーバを自動的に振り分け対象から外す仕組みです。

なぜこの仕組みが必要なのか。ロードバランサは複数のサーバへ振り分けを行いますが、サーバが突然故障した場合、故障したサーバへもリクエストを送り続けてしまうと利用者は「エラー」画面に当たってしまいます。ヘルスチェックで故障を検知すれば、正常に動いているサーバだけへ振り分けを続けられるため、利用者は故障に気づかないまま使い続けられます。
チェック方法:一定の間隔(数秒〜数十秒ごと)で各サーバへ軽い問い合わせを送る
故障検知:決められた回数応答がなければ「故障」と判断し、振り分け先から除外する
回復検知:その後また応答が戻れば自動で振り分け先に再追加する

身近な例で考えると、コールセンターのスーパーバイザーが担当者の電話を常に監視し、繋がらない担当者へは新しい電話を回さないのに似ています。担当者が電話に出られる状態に戻ったら、また割り当てを再開します。この自動切り離しと回復のおかげで、サーバが1台壊れてもサービス全体が止まりにくくなります。

練習問題

🎯
基本情報技術者 練習問題

Q1.ロードバランサの主な役割として最も適切なものはどれか。
A.複数のサーバへリクエストを振り分けて負荷を分散する
B.故障時に待機系へ切り替える
C.データを暗号化して送受信する
D.データベースの整合性を保つ
Q2.リクエストをサーバ1→2→3→1…と機械的に順番で割り当てる振り分け方式はどれか。
A.最小コネクション
B.IPハッシュ
C.ラウンドロビン
D.重み付けラウンドロビン
Q3.処理中の接続数が最も少ないサーバへ優先して振り分ける方式はどれか。
A.ラウンドロビン
B.最小コネクション
C.ブロードキャスト
D.ポーリング

関連コンテンツ