【ろーどばらんさー】

ロードバランサー とは?

最終更新:
💡 届いた通信を、設定に従って振り分ける

通信や要求を、設定に従って複数の処理先へ振り分ける装置・ソフトウェア・サービス。L4・L7、ヘルスチェックと限界を解説します。

📌 このページのポイント
ロードバランサー:処理先を選ぶ利用者からの要求ロードバランサー設定と状態で転送先を選択この要求はBへサーバーA正常サーバーB正常・選択サーバーC正常一つの要求を、全部へコピーする意味ではない
この要求が正常なBへ転送される例です。他の要求は別の転送先になる場合があります。要求の重さや方式で負荷が変わり、ヘルスチェックの検出時間や全転送先が異常な場合の動作も確認します。
ひよこ ひよこ
ロードバランサーは、何を振り分けるの?
ペンギン先生 ペンギン先生
届いた通信や要求を、複数の処理先へ振り分けるよ。図は要求ごとに一つのサーバーを選ぶ例。すべてのサーバーに同じ要求をコピーして実行させる意味ではないんだ。
ひよこ ひよこ
負荷は、必ず同じになる?
ペンギン先生 ペンギン先生
選び方と要求の重さによるよ。順番に送っても、一件ごとの処理時間が違えば負荷は同じにならない。使える方式と処理先の能力、アプリの性質を確認するんだ。
ひよこ ひよこ
L4とL7は、何が違う?
ペンギン先生 ペンギン先生
L4は主にトランスポート層の接続やフローを扱い、L7はHTTP等の内容を使う振り分けができるよ。AWSの例ではNLBがL4、ALBがL7。ALBはURLパス等の条件で転送先を選べるんだ。
ひよこ ひよこ
異常なサーバーには、送らない?
ペンギン先生 ペンギン先生
ヘルスチェックで状態を判定し、転送対象を調整する仕組みがあるよ。ただし検出までの時間や、全転送先が異常になった場合の挙動は製品で違う。「障害を即時・完全に防ぐ」とは言えないんだ。
ひよこ ひよこ
サーバーを増やせば、必ず速くなる?
ペンギン先生 ペンギン先生
共有するデータベースやアプリの処理等が制約になれば、台数だけでは改善しないよ。ロードバランサーの状態と、後ろのアプリや共有先も確認する。振り分けとアプリの処理能力は分けて考えよう。
もっと詳しく知りたい人へ

ヘルスチェックは、必ず/healthの200を見る?

設定によります。たとえばAWS ALBでは、パス・間隔・成功とみなすコード・連続成功や失敗の回数を設定します。確認する処理が成功しても、アプリの全機能が正常だと保証するわけではありません。

全サーバーが異常なら、必ず通信を止める?

製品の挙動を確認します。AWS ALBでは、対象の全転送先が異常な場合、状態にかかわらずそれらへ振り分けるfail-openの動作があります。正常な転送先がある例と、全転送先が異常な状況を分けて扱います。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ロードバランサー」って出てきたら「届いた通信を、複数の処理先へ振り分ける仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Load Balancer」 = 負荷を分散する仕組み
💬 装置だけでなくソフトウェアやクラウドのサービスとしても提供されます。振り分けの方法や状態判定は、製品と設定で変わります。

参考資料

← 用語集にもどる