466 文字
2 分
ロードバランサーは何を分けるのか

ロードバランサーは、複数のサーバーに対してリクエストを振り分け、特定のサーバーに負荷が集中するのを防ぐ装置(あるいはマネージドサービス)です。スケールアウト構成の入口に必ず登場します。

L4 と L7#

どのレイヤーまで見るかで、ロードバランサーは大きく2種類に分かれます。

  • L4(トランスポート層):TCP/UDP のヘッダーだけを見て分配する。速くて軽い。中身を見ないので暗号化されたままでも分配できる。
  • L7(アプリケーション層):HTTPヘッダーや URL のパスを見て分配できる。/api だけ別クラスタに送る、ホスト名で振り分ける、ユーザーエージェントで分ける、といった柔軟な制御ができる。

「LBが TLS を解くか、解かずに通すか」で構成設計が大きく変わります。

振り分けアルゴリズム#

  • ラウンドロビン:順番に1台ずつ。実装が簡単。
  • 加重ラウンドロビン:性能差のあるサーバーに重みを付ける。
  • 最少接続数:今一番繋がっていないサーバーに送る。コネクションが長いプロトコル向き。
  • IPハッシュ:クライアントIPからハッシュを取り、同じ人を同じサーバーに送る(簡易セッション維持)。
  • コンシステントハッシュ:キャッシュキーなどで使うと、サーバーが増減してもヒット率を保ちやすい。

副次的に担う役割#

ロードバランサーは「分けるだけ」の装置ではなく、運用上のさまざまな機能を兼ねます。

  • ヘルスチェック:応答しないサーバーを自動で外す。
  • SSL/TLS 終端:LB で復号して、内部は HTTP で通す構成。
  • スティッキーセッション:同じユーザーを同じサーバーに張り付ける。
  • カナリアリリース/ブルーグリーン:一部のトラフィックだけ新バージョンに流す。
  • WAF / レートリミット連携:手前で攻撃を弾く。

代表例#

  • ハードウェア/L4寄り:F5、AWS NLB
  • ソフトウェア/L7寄り:nginx、HAProxy、Envoy、AWS ALB、GCP HTTPS Load Balancing

「LBの裏に何台並ぶか」だけでなく、「LBが何を担当するか」を決めるのがアーキテクチャ設計の入口になります。