ソリューション

すべてのユーザーセッションを正しいバックエンドに固定する

9つの永続化メソッド、source-IPハッシュからSAMまで — 4つのcookieソース、4つのセッション形式、4つのセキュリティフラグを持つTR7の設定可能なcookieエンジン

ショッピングカート、ログイン済みダッシュボード、銀行セッション、RDPゲートウェイ — ユーザーがステートフルなフローを開始したら、すべての後続リクエストが同じバックエンドに到達する必要があります。Source-IPはユーザーがNATの背後にいると機能しません。プレーンcookieはストリップされると機能しません。TR7 ADCは9つの永続化メソッドを搭載しているため、常に適切なものが利用できます — vServiceごとに選択、妥協なし。

9
搭載されたセッション永続化メソッド
2 × 4 × 4
SAM cookieソース × セッション形式 × セキュリティフラグの組み合わせ
vServiceごと
永続化メソッド — 再起動なしでライブ変更可能

負荷分散がセッションを壊すとき

Round-robinは設計上、各リクエストを異なるバックエンドに送ります。ステートレスなサービスには理想的です。しかしユーザーがログインし、カートを埋め、リモートデスクトップを開始した瞬間、アプリケーションは特定の1つのバックエンドに状態を保持し始めます。リクエスト#2が別のバックエンドに到達すると、ユーザーは空のカート、ログアウト画面、またはフリーズしたRDPセッションを見ます。

セッション永続化(または「アフィニティ」)はユーザーをセッション期間中に選択したバックエンドに固定することでこれを解決します。落とし穴:固定する方法は1つではありません。Source-IPはIPが多様なユーザーには機能しますが、企業NATの背後では壊れます。Cookieはブラウザでは機能しますが生のTCPには機能しません。URLパラメータハッシュはステートレスURLには機能しますが、ユーザースコープのフローには機能しません。各メソッドはどこかで正しい答えです

解決策はすべてのメソッドを提供し、vServiceごとに選択することです。

vServiceごとに永続化メソッドを選択する

各vServiceはドロップダウンから永続化メソッドを選択します — 負荷分散アルゴリズムと並んで。両方のレイヤーは独立しています:バックエンド選択にFastest+を選び、アフィニティにTR7 cookieを選ぶか、source-IPとround-robinを組み合わせるか、ワークロードに合う任意の組み合わせを選べます。メソッドの変更はホットスワップ対応、再起動不要。

9つのメソッドを搭載

5つの自己永続的な負荷分散アルゴリズム(source、URI、URLパラメータ、ヘッダー、RDP cookie)に加え、4つの明示的な永続化メソッド(TR7 cookie、バックエンドcookie、動的、SAM)。すべての一般的なケースをカバーします。

SAM — 完全なcookie制御

Session Affinity Managerにより、cookieソース(TR7生成またはバックエンド生成)、セッション形式(UUID、IP-timestamp-random、IP-random、カスタム)、セキュリティフラグ(HttpOnly、Secure、SameSite=Strict/Lax)を — バックエンドコードに触れずに設定できます。

任意のADCアルゴリズムと組み合わせ可能

永続化は負荷分散アルゴリズムの上で動作します:アルゴリズムが最初のリクエストのバックエンドを選択し、永続化が同じユーザーのその後のリクエストを固定します。コールドスタートにFastest+、セッションにスティッキーcookie — 組み合わせて機能します。

ホットスワップ(再起動なし)

ライブvServiceで永続化メソッドを変更すると、新しいセッションはすぐに新しいメソッドを採用します。既存の固定されたセッションは有効期限が切れるまで中断なく継続します。

搭載された9つのセッション永続化メソッド

プロトコル、クライアント集団、アプリケーションのセッションモデルに合ったメソッドを選択します。9つすべてがvServiceごとに利用可能 — コードなし、プラグインなし。

Source-IP

同じクライアントIPは常に同じバックエンドに到達します。シンプルでコード不要、任意のプロトコルで動作します。クライアントIPが多様な場合に最適 — 共有NATや企業プロキシの背後では機能しません。

URI長ハッシュ

URL長でハッシュし、URL複雑度で負荷を分散しながら同一URLを同じバックエンドに固定します。キャッシュアフィニティシナリオに有用です。

URLパラメータハッシュ

特定のクエリパラメータ(例:?user_id、?session_token)でハッシュします。cookieを必要とせずに同一ユーザースコープのリクエストを同じバックエンドにルーティングします。

ヘッダーハッシュ

カスタムHTTPヘッダーでハッシュします。上流の呼び出し元がテナントまたは相関IDを挿入する場合、またはヘッダーベースのA/Bルーティングに有用です。

RDP cookie

プロトコルネゴシエーションに埋め込まれたRDPセッションcookieを読み取ります。RDPゲートウェイとリモートデスクトップファームに必要 — 再接続後もユーザーを同じRDPホストに固定します。

TR7 cookie

TR7 ADCがアフィニティcookieを自身で生成・管理します — バックエンドコード不要。オペレーターはcookie名最大アイドルタイムアウトを設定します。ADCは各リクエストでcookieを読み取り、バックエンドはcookieを無視します。レガシーアプリへの追加に最も簡単な永続化方法です。

バックエンドcookie

アプリケーション自身のセッションcookieをアフィニティに使用します — オペレーターはcookie名(PHPSESSID、JSESSIONID、app-id、任意のカスタム名)を指定し、TR7 ADCが既存の値を読み取ります。新規cookieは追加されません。アプリケーションがすでにセッションを追跡しており、2番目のcookieを重ねたくない場合に適切です。

動的永続化

メモリに保持されるハッシュキー永続化テーブル。各エントリはキー(リクエストヘッダー、cookie、source IP、URLパラメータの任意の組み合わせ)をバックエンドにマッピングします。オペレーターはテーブルサイズ(10Kから1億エントリ、デフォルト300万)とエントリ有効期限を設定します。永続化ルールが単一固定のcookieやヘッダーより柔軟性を必要とする場合に使用します。

SAM — Session Affinity Manager

高度なcookieベースの永続化エンジン。cookieを生成する主体、セッションID形式、セキュリティフラグをすべてUIから選択できます — バックエンドの変更なし。詳細は下記をご参照ください。

SAM — Session Affinity Manager

SAMはTR7の最も柔軟な永続化メソッドです。プレーンcookieがセッションを固定するのに対し、SAMはcookieのすべてのプロパティをドロップダウンから制御できます — バックエンドの変更なし、ルールコードの記述なし。

01

2つのcookieソース

アフィニティcookieを生成する主体を選択します:TR7生成(デフォルト — バックエンドの関与なし)またはバックエンド生成(アプリケーションの既存セッションcookieを使用)。アクティブなセッションを壊さずに切り替えられます。

02

4つのセッションID形式 — オープンなカスタムモードを含む

セッション識別子形式の選択肢:UUID(ランダム128ビット)、IP-timestamp-random(追跡可能、時間順)、IP-random(テナント内で匿名)、またはカスタム。カスタムモードはトラフィック変数サーフェスを全開放します — 任意のリクエストヘッダー、cookie、URLコンポーネント、TLSセッション情報、source IP(生またはマスク済み)、JWTクレーム、クエリパラメータ、リクエストボディフィールドをオペレーター定義の変換関数(マスキング、ハッシュ化、部分文字列抽出、大文字小文字正規化、連結)と組み合わせられます。同じ変数と変換エンジンが動的永続化ハッシュキーも動作させます。

03

4つのセキュリティフラグの組み合わせ

Cookieセキュリティフラグ:HttpOnly(JavaScriptアクセス禁止 — XSS保護)、Secure(HTTPSのみ)、SameSite=Strict(クロスサイト送信なし — CSRF保護)、SameSite=Lax(互換性重視のバリアント)。必要に応じて組み合わせてください。

04

オペレーター設定可能、コード不要

上記のすべてはSAMパネルのvServiceごとのドロップダウンです。カスタムルールコードなし、バックエンド統合なし、cookie処理のための別途WAAProールなし。SAMは設定であり、スクリプトではありません。

カスタム形式とハッシュの柔軟性

CookieとIPを超えて — 任意のトラフィック変数を組み合わせる

SAMカスタム形式と動的永続化ハッシュキーはTR7 ADCが認識するすべてのトラフィック変数を受け付けます — 組み合わせ、変換し、アプリケーションに必要な正確な永続化ルールを構築します

SAMカスタム形式 — 実際の組み合わせ例

TLSセッションID + マスクされた/24 source IP — モバイルユーザーがキャリアサブネット内でIPが変化しても(基地局ハンドオフ)TLS再利用により同じバックエンドに固定し続ける
JWTクレーム(デコード後)+ テナントヘッダー — マルチテナントSaaSで各テナントの認証済みユーザーがトークン自体からデコードして専用のバックエンドクラスターにルーティングされる
User-Agentフラグメント + Accept-Language — デスクトップ英語のコホートとモバイルトルコ語のコホートをアプリの変更なしに異なるバックエンドプールに分離する
TLS SNIサーバー名 + URLパスプレフィックス — SNIがどのアプリかを決め、パスプレフィックスがどのインスタンスかを決めるマルチアプリSNIホスティング — 単一ADC、多数のテナント
Geo-IP国 + 最初のURLセグメント — サイトのどのセクションがリクエストされているかを構造的に把握した地理的コンテンツルーティング

動的永続化 — マルチ変数ハッシュキー

IP /24 + URLパスプレフィックス — URL構造に紐付いた地理的キャッシュアフィニティ(CDNなしのCDNフレンドリー)
ヘッダー値 + 小文字クエリパラメータ — ?user=Aliceと?user=aliceが同じバックエンドに到達する大文字小文字を区別しないマルチリージョンルーティング
HTTPメソッド + content-type — 1つのvServiceからHTTP/2 POSTをAPIチューンドバックエンドへ、HTTP/1.1 GETを静的アセットバックエンドへルーティング
Cookie部分文字列 + IPクラス — アプリが非標準のcookie形状を使用している場合の部分的なレガシーcookieパターンマッチング
リクエストボディフィールドハッシュ + 認証ヘッダー — セッション識別子がヘッダーやcookieではなくボディ内にあるSOAPやレガシーAPIのため

任意の変数への変換関数

IPアドレスマスキング — /8、/16、/24、または任意のプレフィックス長マスキングによるコホートレベルのサブネットルーティング
正規表現による部分文字列抽出 — ヘッダー、cookie、URLから特定のフラグメントを抽出(例:より長いJWTからテナントIDプレフィックスのみを抽出)
大文字小文字正規化 — 混在するクライアントでの大文字小文字を区別しないルーティングのために、ハッシュ化前に小文字または大文字に変換
暗号ハッシュ(MD5、SHA) — 機密性の高いソース変数から不透明な固定長のセッションIDを生成 — 基礎データはプラットフォームから出ない
オペレーター定義の区切り文字による文字列連結 — カスタム区切り文字で任意の数の変数を組み合わせて一意の複合キーを作成

永続化が最も重要な場面

Eコマースのカートとチェックアウト

ユーザーが複数のページロードをまたいで商品を追加します。バックエンドcookieまたはTR7 cookieがカートの状態を1つのバックエンドに保持します — チェックアウト時に空のカートになることはありません。

認証済みダッシュボード

ユーザーの権限キャッシュが1つのバックエンドに存在するログイン済みセッション。TR7生成cookie + HttpOnly + SecureによるSAMはバックエンドコードの変更なしで機能します。

RDPゲートウェイとリモートデスクトップファーム

RDPセッションは同じホストに再接続する必要があります。RDP cookie永続化はプロトコルネイティブのセッションIDを読み取ります — 追加設定なし、cookie注入なし。

セッション管理を持たないレガシーアプリ

セッション自体を追跡しないアプリケーション。Source-IPまたはURLパラメータ永続化がレガシーアプリへのコード変更なしにユーザーを固定します。

よくある質問

負荷分散アルゴリズムと永続化のどちらかを選ばなければなりませんか?
いいえ — 両方のレイヤーは独立して動作します。負荷分散アルゴリズムはセッションの最初のリクエストのバックエンドを選択し、永続化はその後のすべてのリクエストをセッションが終了するまでそのバックエンドに固定します。任意のアルゴリズム(round-robin、Fastest+など)を任意の永続化メソッドと組み合わせて使用できます。
TR7 cookieとSAMの違いは何ですか?
TR7 cookieはシンプルなデフォルトです — TR7 ADCが不透明なアフィニティcookieを生成し、適切なデフォルトを設定し、セッションを固定します。SAMは同じ概念ですが、すべてのcookieプロパティ(ソース、セッションID形式、セキュリティフラグ)をオペレーターが制御できます。一般的なケースにはTR7 cookieを使用し、バックエンドの変更なしに細かい制御が必要な場合はSAMを使用します。
固定されたバックエンドが障害を起こすとどうなりますか?
TR7 ADCのヘルス監視が障害を検出し、バックエンドをvServiceから削除します。そのバックエンドに固定されていた既存のセッションは正常なバックエンドに再ルーティングされます — ユーザーは再認証またはカートのリフレッシュが必要かもしれませんが、プラットフォームはトラフィックをブラックホールにしません。
企業NATの背後でsource-IP永続化を使用できますか?
Source-IPはクライアントIPが多様な場合 — すべてのユーザーが異なる可視IPを持つ場合に機能します。共有NAT(企業オフィス、携帯キャリア、CGNAT)の背後では、すべてのユーザーが同じIPで見えるため、source-IPはすべてを同じバックエンドに固定します。NATが多いトラフィックには、cookieベースの永続化(TR7 cookie、SAM、またはバックエンドcookie)、またはユーザーごとのヘッダーやURLパラメータのハッシュを推奨します。
セッション永続化はWebSocketとHTTP/2接続に影響しますか?
長命な接続(WebSocket、HTTP/2ストリーム)は最初に接続したバックエンドにとどまります — 接続の生存期間中は自然にスティッキーです。永続化が重要になるのは、同じユーザーが新しい接続を開き、以前と同じバックエンドに到達する必要がある場合です。

ワークロードに永続化メソッドを合わせる

RDPゲートウェイからレガシーアプリ、SAM制御cookieまで、9つの永続化メソッドがすべての一般的なケースをカバーする方法をご覧ください。