◀ 7.

負荷分散・プロキシ・CDN とは|リバースプロキシ・ロードバランサ

▶
この記事の要点
  • プロキシ・ロードバランサ・CDN は、クライアントとサーバーの間に入って通信を中継・分散・高速化する仕組み
  • フォワードプロキシはクライアント側の代理、リバースプロキシはサーバー側の代理で、向きが逆
  • ロードバランサは複数サーバーへリクエストを振り分け、1 台が落ちてもサービスを止めない
  • 実装の定番は nginx と HAProxy。クラウドではマネージドの LB(ALB など)を使うことが多い
  • CDN は世界各地のエッジサーバーにコンテンツをキャッシュし、利用者の近くから配信する
  • 初学者は「フォワード → リバース → ロードバランサ → CDN」の順に読むと理解しやすい

負荷分散・プロキシ・CDN とは

大規模な Web サービスでは、ブラウザがアプリケーションサーバーと直接通信することはほとんどありません。間にプロキシ・ロードバランサ・CDN が入り、負荷分散、キャッシュ、SSL/TLS の終端、攻撃の遮断といった役割を分担しています。このカテゴリでは、それぞれの仕組みと代表的なソフトウェアの設定方法を解説します。

典型的な Web サービスでは、リクエストは次のような順に流れます。

ブラウザ → (社内ならフォワードプロキシ) → インターネット
        → CDN エッジ → ロードバランサ / リバースプロキシ → アプリサーバー群

それぞれの違い

種類誰の代理か主な用途代表的な実装
フォワードプロキシクライアント社内から外部へのアクセス制御・ログ・キャッシュSquid
リバースプロキシサーバーSSL 終端、バックエンドの隠蔽、キャッシュ、WAFnginx、Apache
ロードバランササーバー群複数サーバーへの振り分け、ヘルスチェックHAProxy、nginx、クラウド LB
CDNサーバー(地理的に分散)静的ファイルのエッジ配信、DDoS 緩和Cloudflare、CloudFront

リバースプロキシとロードバランサは機能が重なっており、nginx や HAProxy は両方の役割を 1 台でこなせます。「1 台のサーバーの前に置く」ならリバースプロキシ、「複数台に振り分ける」ならロードバランサと呼ぶ、くらいの理解で十分です。

読む順番

  1. フォワードプロキシ — 「代理で通信する」というプロキシの基本概念をつかむ
  2. リバースプロキシ — 向きが逆になると何がうれしいのか(SSL 終端・隠蔽)を理解する
  3. ロードバランサ — L4 と L7 の違い、ラウンドロビンなどの分散アルゴリズム、ヘルスチェック
  4. nginx リバースプロキシ設定 — proxy_pass と upstream で実際に設定する
  5. HAProxy — frontend / backend の考え方と設定例
  6. CDN — エッジキャッシュ、TTL、キャッシュ削除(パージ)の考え方

手を動かして試したい場合は、1・2 を読んだあと 4 の nginx 設定に進むのが近道です。

目的別の選び方

  • 社員のインターネット利用を制御・記録したい → フォワードプロキシ
  • アプリの前で HTTPS を受けたい、アプリを直接公開したくない → リバースプロキシ(nginx が手軽)
  • サーバーを複数台にして負荷と障害に備えたい → ロードバランサ(自前なら HAProxy / nginx、クラウドならマネージド LB)
  • 画像や JS・CSS の配信を速くしたい、海外利用者がいる → CDN
  • サーバー更新後に変更が反映されない → CDN やリバースプロキシのキャッシュを疑う

関連

Post Share
子ページ
  1. フォワードプロキシ
  2. リバースプロキシ
  3. ロードバランサ
  4. nginxリバースプロキシ設定
  5. HAProxy
  6. CDN
同階層のページ
  1. ネットワークの範囲と種類
  2. ネットワーク機器
  3. OSI参照モデル
  4. プロトコル
  5. アドレッシング・識別子
  6. ルーティング・スイッチング
  7. 負荷分散・プロキシ・CDN
  8. ネットワークセキュリティ
  9. クラウドネットワーク