Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

サードパーティのロードバランサー

最終更新 Markdown で表示Agent セットアップ

このガイドでは、サードパーティのロードバランサーの前に Cloudflare を置く構成でよく起きる問題の切り分け方を説明します。


Cloudflare をリバースプロキシ(オレンジクラウド)として F5 BIG-IP ロードバランサーの前に置くと、Cloudflare が持続接続を維持する仕組みが原因で、セッションアフィニティの問題が起きることがあります。

問題

F5 BIG-IP ロードバランサーは、通常、TCP 接続の開始時にセッション Cookie を設定します(未設定の場合)。その後、同じ TCP 接続上の後続 HTTP リクエストの Cookie は無視します。Cloudflare は HTTP keep-alive により、同じ TCP 接続で複数の HTTP セッションを送るため、セッションアフィニティが壊れます。

症状の例は次のとおりです。

  • ログアウトされる、または認証フローで不具合が起きる。
  • チェックアウト時にショッピングカートが空になる。
  • セッションに依存するほかの不整合。

F5 のセッション Cookie の名前は任意ですが、次の形式になることが多いです。

  • 暗号化なし(簡単にデコードでき、オリジンサーバーの IP とポートが分かります):

    BIGipCookie=16908480.16415.0000;path=/; Httponly; Secure
  • 暗号化あり:

    BIGipCookie=TS019a202c=01625f1893a7d6e4b2c1a0f98e7d6c5b4a3f2e1d; path=/; Httponly; Secure

2. 問題を確認する

curl で確認できます。リクエストを複数回実行し、セッション Cookie が一貫して付くかを見ます。

for i in {1..100}; do curl -sI https://example.com; done 2>&1 | grep "<COOKIE_NAME>" | wc -l

Cloudflare 経由では件数が 100 を大きく下回り、オリジンへ直接接続すると 100 になる場合、この問題が起きています。

解決方法: F5 OneConnect プロファイルを設定する

推奨する対処は、F5 BIG-IP ロードバランサーで、単一ホスト(/32)マスクの F5 OneConnect プロファイルを設定することです。

OneConnect の効果

  • クライアントは TCP 接続でバックエンドサーバーに固定されません
  • HTTP リクエストは個別に負荷分散されます
  • 同じ TCP セッション内でも、異なるパーシステンス情報を持つ Cookie が尊重されます
  • Cookie は HTTP レスポンスごとに設定されます

注意点

  1. OneConnect が、お使いの TMOS(Traffic Management OS)のバージョンと互換性があるかを確認します。
  2. F5 の動作が変わるため、先にステージングまたはテスト用の Virtual IP(VIP)で試します。
  3. Cloudflare と正しく動かすには、/32 マスクが必須です。

関連リソース

役に立ちましたか?