プライベートロードバランサーにセッションアフィニティとハッシュステアリングが登場!
やっほー、しぃちゃんだよ!社内アプリを守るプライベートなロードバランサーに、待望の「同じサーバーに固定する」機能が来たよ。
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog によると、プライベートロードバランサーが、各ユーザーを同じエンドポイントに留めておけるようになったよ。
セッション状態を 1 台のサーバーに持つアプリケーションで役に立つ機能なの。
なぜ重要なの?
ログイン状態などをサーバー側のメモリに持っているアプリは、リクエストのたびに別のサーバーへ振り分けられると、セッションが切れたように見えちゃうよね。
それを防ぐために、同じユーザーを同じ場所へ送り続ける仕組みが必要だったの。
これで何が変わるの?
選べる方法は 2 つあるよ。
- Hash endpoint steering: ダッシュボードでプールの Endpoint steering を Hash にする。プール内で各ユーザーがいずれかのエンドポイントに対応づけられる
- Session affinity: API でロードバランサーの
session_affinityをip_cookieにする。エンドポイントが健全で、プールに変更がない間は、各ユーザーが同じエンドポイントにとどまる
深く潜ってみよう
ユーザーの識別のしかたは、トラフィックの種類で違うよ。
- Cloudflare One Client からのトラフィック: デバイスでユーザーを識別するので、IP アドレスが変わっても同じエンドポイントにとどまる
- Cloudflare WAN サイトなどそれ以外のトラフィック: 送信元 IP アドレスを使う
対応する接続先はこちらだよ。
- Cloudflare Tunnel 経由のエンドポイント
- Cloudflare Mesh 経由のエンドポイント
- Cloudflare WAN 経由のエンドポイント
ここで言うエンドポイントは「IP アドレス + 仮想ネットワーク」の組み合わせだよ。また、アフィニティが固定するのはエンドポイントで、トラフィックを運ぶ cloudflared や Mesh のレプリカではないので気をつけてね。詳しくは Session affinity と Load balance private network traffic のドキュメントを見てね。
まとめ
- プライベートロードバランサーでユーザーを同じエンドポイントに固定できる
- ダッシュボードのハッシュステアリングか、API の
session_affinityのip_cookieが選べる - Cloudflare One Client はデバイスで識別するので IP が変わっても固定される
- 固定されるのはエンドポイントで、cloudflared や Mesh のレプリカではない
ステートフルな社内アプリを Cloudflare One 経由で公開しているインフラ担当のみんなに刺さる更新だよ!