パーシステンスの HTTP Cookie モードを使用すると、セッション中にクライアントをサーバに固定することができます。HTTP Cookie パーシステンスは、HTTP アプリケーション プロファイルが接続された任意の仮想サービスに適用できます。NSX Advanced Load Balancer SE は、このパーシステンス メソッドを使用して、クライアントへのサーバの最初の応答に HTTP Cookie を挿入します。

HTTP Cookie パーシステンスを使用するために、バックエンド サーバで構成を変更する必要はありません。NSX Advanced Load Balancer によって作成された HTTP パーシステンス Cookie は、既存のサーバ Cookie や動作に影響しません。

注:

NSX Advanced Load Balancer では、Cookie に依存する アプリケーション Cookie パーシステンス モードもサポートされています。アプリケーション Cookie メソッドは、NSX Advanced Load Balancer によって作成された新しい Cookie を挿入するのではなく、既存のサーバ Cookie の情報に基づいてパーシステンスを有効にします。

HTTP Cookie パーシステンスが機能しているかどうかを検証するには、仮想サービス分析のすべてのヘッダーを有効にし、ログを表示してクライアントによって送信された Cookie を表示します。

その他のパーシステンス メソットおよびオプションの詳細については、「アプリケーション Cookie パーシステンス」を参照してください。

Cookie 形式

NSX Advanced Load Balancer によって作成された HTTP セッション パーシステンス Cookie の例を次に示します。

Set-Cookie: JKQBPMSG=026cc2fffb-b95b-41-dxgObfTEe_IrnYmysot-VOVY1_EEW55HqmENnvC; path=/

Cookie ペイロードには、バックエンド サーバの IP アドレスとポートが含まれています。

ペイロードは AES-256 で暗号化されています。クライアントが後続の HTTP 要求を行うと、クライアントの要求が同じサーバに転送されるようにするために SE が使用する Cookie が要求に含まれます。

Cookie パーシステンスの構成

NSX Advanced Load Balancer バージョン 21.1.3 以降では、フィールド is_persistent_cookie が導入されました。このフィールドを True に設定すると、HTTP Cookie でパーシステンスが有効になります。デフォルトでは、このフィールドは False に設定されています。これは、Cookie がデフォルトでセッション Cookie であることを意味します。

Cookie パーシステンス タイムアウト

パーシステンス プロファイルを使用すると、パーシステンス タイムアウトを構成できます。パーシステンス タイムアウトは、パーシステンス Cookie が有効な最大時間を設定します。

パーシステンス タイムアウトは、パーシステンス プロファイルを使用する仮想サービスとの個々のクライアント セッション用に NSX Advanced Load Balancer が作成したパーシステンス Cookie に適用されます。

通常、クライアントまたはブラウザは、Cookie に関連付けられたセッションが終了した後またはブラウザが閉じられた後に、パーシステント セッション Cookie をクリアする責任があります。パーシステンス タイムアウトを設定すると、クライアントまたはブラウザがセッション Cookie をクリアしない場合に対処できます。

パーシステンス タイムアウトが設定されている場合、プロファイルに基づいて作成されるセッション Cookie の最大有効期間はタイムアウトに設定されます。この場合、Cookie は、NSX Advanced Load Balancer が Cookie を作成した時点から、構成されたタイムアウトの最大値の間有効です。

たとえば、パーシステンス タイムアウトが 720 分に設定されている場合、プロファイルに基づいて作成された Cookie は、Cookie の作成時間から最大 12 時間有効です。パーシステンス タイムアウトが期限切れになると、Cookie は期限切れになり、無効になります。

デフォルトでは、タイムアウトはありません。送信された Cookie はセッション Cookie であり、セッションの終了後にクライアントによってクリアされます。

HttpCookiePersistenceProfiletimeout フィールドは max-age に変換されます。max-age 属性は、Cookie が期限切れになるまでの秒数を表します。max-age の値がゼロ以下(負の数)の場合、Cookie は即座に期限切れになります。

注:
  • フラグ is_persistent_cookie が無効になっている場合、タイムアウト動作は変更されません(Cookie はゼロ以外のタイムアウト値に従って期限切れになります)。

  • フラグが有効で、タイムアウトの値がゼロの場合、max-age がゼロに設定されているため、Cookie は即時に期限切れになります。

Cookie パーシステンス タイムアウトを構成するには、Set-Cookie: <cookie-name>=<cookie-value> Max-Age=<number> を使用します。

例:

Set-Cookie: JKQBPMSG=026cc2fffb-b95b-41-dxgObfTEe_IrnYmysot-VOVY1_EEW55HqmENnvC; path=/ ; Max-Age=3600

パーシステンス ミラーリング

クライアントは Cookie を保持し、サイトへのアクセス時に提示するため、NSX Advanced Load Balancer はパーシステンス情報を保存したり、パーシステンス マッピングを他の SE にミラーリングしたりする必要がありません。これにより、最小限の労力でスケールを拡大できます。

パーシステンス期間

HTTP Cookie パーシステンスは、クライアントが NSX Advanced Load Balancer との HTTP セッションを維持するまで有効であるセッションベースの Cookie を利用します。クライアントがブラウザを閉じると、Cookie が削除され、パーシステンスが終了します。

NSX Advanced Load Balancer ユーザー インターフェイスの構成オプション

ユーザー インターフェイスを使用して Cookie パーシステンスを有効にするには、[テンプレート] > [プロファイル] > [パーシステンス] の順に移動します。

次の表で、パーシステンス プロファイル エディタでパーシステンス プロファイルを構成するために必要なフィールドについて説明します。

フィールド名

説明

[名前]

パーシステンス プロファイルの一意の名前。

[パーシステント サーバ停止時に新規サーバを選択]

健全性モニターなどによってサーバが「停止」とマークされた場合または接続制限に達した場合に実行されるアクション。維持されている既存のユーザーを引き続きサーバに送信するか、それとも新しいサーバにロード バランシングするかを示します。

[即時]NSX Advanced Load Balancer は即時に新しいサーバを選択し、「停止」とマークされたサーバを置き換え、パーシステンス エントリを新しいサーバに切り替えます。

[なし]:置き換えサーバは選択されません。パーシステント エントリには、パーシステンス タイプに基づいて正常に期限切れになることが要求されます。

[説明]

プロファイルのカスタム説明(オプション)。

[タイプ]

HTTP Cookie。タイプを変更すると、プロファイルが別のパーシステンス メソッドに変更されます。

[HTTP Cookie 名]

このフィールドは空白で表示されます。このオプションのフィールドに入力すると、ユーザーが選択したカスタム名で Cookie が挿入されます。入力しない場合、NSX Advanced Load Balancer はランダムな 8 文字の英字名を自動生成します。

[パーシステント Cookie です]

パーシステンスを有効にする場合に選択します。このオプションが有効になっていない場合、Cookie はセッション Cookie です。

[パーシステンス タイムアウト]

セッション Cookie の最大有効期間。許容範囲は 1 ~ 14,400 分です。値がないか、ゼロの場合は、タイムアウトなしを示しています

[常に送信]

デフォルトでは、セッションの開始時にパーシステンス Cookie がクライアントに 1 回送信されます。その後、クライアントは Cookie を使用して各要求に応答します。ただし、Java や JavaScript を組み込んだ Web アプリケーションなどの一部の Web アプリケーションでは、以前の応答で Cookie を受信しなかった場合、要求に Cookie が含まれていない可能性があります。[常に送信] を有効にすると、NSX Advanced Load Balancer では応答ごとに Cookie が含まれます。

注:

NSX Advanced Load Balancer では、設定された Cookie に HTTP-Only フラグを設定できます。この属性を設定すると、ブラウザでサポートされている場合、サードパーティのスクリプトからこの Cookie にアクセスできません。この機能は、HTTP または終了した HTTPS 仮想サービスで有効になります。

HTTP-Only フラグを使用して Cookie を設定すると、この特別な Cookie にはサーバからのみアクセスする必要があることがブラウザに通知されます。クライアント側のスクリプトから Cookie にアクセスしようとする試みは固く禁じられています。