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が何を担当するか」を決めるのがアーキテクチャ設計の入口になります。