セッションアフィニティを有効にすると、ロードバランサーは特定のエンドユーザーからのリクエストを、すべて同じエンドポイントへ送ります。この継続性により、ショッピングカートの中身など、複数サーバーにリクエストが分散すると失われる可能性のあるユーザーセッション情報を保てます。
セッションアフィニティはネットワークリクエストの削減にもつながり、従量課金のお客様はコストを抑えられます。
セッションアフィニティは、同じクライアントからのリクエストを自動で同じエンドポイントに送ります。
- クライアントが最初のリクエストを送ると、Cloudflare はクライアントに
__cflbcookie を設定します(関連するエンドポイントを追跡するため)。 - 同じクライアントからの後続リクエストは、cookie の有効期間中、かつエンドポイントが健全なあいだ、そのエンドポイントへ転送されます。
- cookie の期限が切れた場合、またはエンドポイントが不健全になった場合、Cloudflare は新しいフェイルオーバーエンドポイントを追跡する新しい cookie を設定します。
flowchart LR
accTitle: セッションアフィニティの処理
accDescr: セッションアフィニティは、同じクライアントからのリクエストを同じサーバーに送ります。
A[クライアント] --リクエスト--> B{<code>__cflb</code> cookie 設定済み?}
B -->|はい| C[以前のエンドポイントへルーティング]
C --> O2
B ---->|いいえ| E[通常のルーティングに従う]
E --> O2
E --<code>__cflb</code> cookie を設定--> A
subgraph P1 [Pool 1]
O1[Endpoint 1]
O2[Endpoint 2]
end
Cookie ベースのセッションは、カスタムのセッション Time to live(TTL)を設定しない限り、デフォルトで 23 時間です。
Always Use HTTPS が有効な場合、セッション cookie はセキュアです。加えて、クロスサイトスクリプティング攻撃を防ぐため、cookie では HttpOnly が常に有効です。