中級ではL4/L7・ヘルスチェック・WAFを見ました。上級では、振り分けの内部と、経路の工夫へ。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
L4とL7、それぞれの内部
- L4 — IP/ポートで転送。NATモードや、戻りを直接返すDSR(Direct Server Return) で高速化
- L7 — HTTPを終端して解釈。パス/ヘッダ/Cookieでルーティング、リトライ、レート制限、圧縮、mTLS
- TLS終端 vs パススルー — 入口で解くか、内部まで暗号のまま運ぶか(セキュリティと可視性のトレードオフ)
やさしく言うと(中級)
入口は、複数の役割が重なった層です。
- ロードバランサ — トラフィックを複数のサーバへ分散。L4(IP/ポートで機械的に)と L7(HTTPの中身を見て賢く)がある
- リバースプロキシ — クライアントとサーバの間に立ち、SSL終端・振り分け・キャッシュを担う
- WAF — HTTPの中身を検査し、既知の攻撃パターン(インジェクション等)を遮断する
登場人物メモ:
- ※1 ヘルスチェック — 各サーバへ定期的に「生きてる?」を確認し、死んだ台を外す
- ※2 SSL終端 — 暗号化(TLS)の解除を入口でまとめて行い、内側は平文で楽をする
振り分けと死活の実際
- 分散アルゴリズム — ラウンドロビン/最少接続/重み付け/一貫ハッシュ(同じ利用者を同じ台へ寄せつつ偏りを抑える)
- ヘルスチェック — アクティブ(定期プローブ)とパッシブ(実トラフィックの失敗を観測)
- コネクションドレイン — 台を外すとき、進行中の接続を待ってから切る
- セッション親和性 — スティッキーは必要だが偏りの元。可能なら状態を外出しして不要にする
やさしく言うと(中級)
- リクエスト到達。必要なら入口で SSL終端(TLSを解く)
- WAF がルール/シグネチャで不正リクエストを検査・遮断
- ロードバランサ が分散アルゴリズムで振り分け先を選ぶ(ラウンドロビン=順番に一台ずつ、最少接続=今つないでいる接続数が最も少ない台へ、など)
- ヘルスチェックで異常な台を除外し、生きている台にのみ渡す
アニメーション『振り分けアルゴリズムの3方式』を開く
スケールと可用性の工夫
- Anycast — 同じIPを各地に広告し、最寄りの入口へ導く(DNSに頼らない広域分散)
- 多段構成 — L4(広く速く)→ L7(賢く)の2段
- オートスケール連携 — バックエンドの増減にヘルスチェックが追随
- 前線の防御 — DDoS吸収、レート制限、WAFルール(アプリ層攻撃の遮断)
やさしく言うと(中級)
- L4 vs L7 — L4は速く単純、L7は中身を見て柔軟(パスやホストで振り分け)。中身を見て中継するL7のLBは、実質リバースプロキシの一形態(SSL終端やキャッシュも同じ位置で担える)
- スティッキーセッション — 同じ利用者を同じ台へ固定。状態を持つ設計では必要だが、偏りの原因にも
- 段階リリース — 一部だけ新版に流す(カナリア)、切り替える(ブルーグリーン)
- DDoS緩和 — 大量アクセス攻撃を入口で吸収・遮断する前線でもある
⚠️ 落とし穴
- サンダリングハード — 再起動直後などに全員が同じ台へ集中
- フラッピング — ヘルスチェックが上下し、台が出たり入ったり
- スティッキーの偏り — 特定の台に固定利用者が集中
- TLS終端の負荷 — 暗号処理が入口に集中(ハード支援・スケールで対処)
やさしく言うと(中級)
- ヘルスチェックの誤り — 生きている台を落ちていると誤判定して外す(設定が厳しすぎ)
- セッションの偏り — スティッキーで特定の台に集中
- WAFの誤検知/回避 — 正当な通信を弾く、または巧妙な攻撃をすり抜けられる
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. L4とL7ロードバランサの違いとして正しいのは?
問2. ヘルスチェックが「生きている台を落ちていると誤判定して外したり戻したり」を繰り返す現象は?
問3. サーバを分散対象から外すとき、進行中の接続を切らずに待ってから外す仕組みはどれ?
問4. ヘルスチェックの「アクティブ」と「パッシブ」の違いとして正しいのはどれ?
問5. DNSに頼らず、同じIPを各地で広告して最寄りの入口へ導く広域分散の手法はどれ?
問6. 入口でTLSを解く「TLS終端」と、暗号のまま奥へ運ぶ「パススルー」の関係として正しいのはどれ?
問7. 同じ利用者を同じ台へ寄せつつ偏りを抑える、リクエスト分散アルゴリズムを何という?
問8. 再起動直後などに、待っていた全接続が同時に同じ台へ殺到する現象を何と呼ぶ?