Hash steering(ハッシュステアリング) は、エンドポイントのウェイト と、その IP アドレスからの過去のリクエストを組み合わせて、Cloudflare がリクエストをエンドポイントへ送る方法です。同じ IP アドレスからのリクエストは同じエンドポイントに届きますが、実際のトラフィック配分はエンドポイントのウェイトと異なることがあります。
Hash Steering は、リクエストの送信元 IP アドレスを特定するために x-forwarded-for ヘッダーを使います。ただし、ロードバランサーの前に Cloudflare Worker を置くと、Hash Steering の動作に影響します。
ブラウザーからのリクエストには x-forwarded-for ヘッダーがありません。Worker がロードバランサーへリクエストをプロキシすると、ヘッダーには元のクライアント IP ではなく Worker の IP が入ります。Worker の IP(多くの場合 Cloudflare のパブリック IP)はリクエストごとに変わることがあるため、Hash Steering は同じクライアントのリクエストを別のエンドポイントへ送り、ルーティングが安定しなくなることがあります。
ロードバランサーの前に Worker を置く場合に Hash Steering を正しく動かすには、Worker で x-forwarded-for ヘッダーをクライアントの元の IP アドレスに手動で設定します。x-forwarded-for に CF-Connecting-IP を設定すると、Hash Steering は想定どおりに動き、エンドユーザー向けのトラフィックが安定します。