ステートフル アプリケーションの安定性を確保するため、ロード バランサには、関連するすべての接続を同じサーバに転送するパーシステンス機能が実装されています。アプリケーションによるさまざまな種類のニーズに対応できるように、さまざまな種類のパーシステンス機能がサポートされています。

一部のアプリケーションでは、サーバの状態(ショッピング カートなど)が維持されます。これらの状態はクライアント IP アドレスごとに、または HTTP セッション ベースで識別されます。アプリケーションは、同じクライアントや HTTP セッションからの接続を処理する際に、この状態を参照または変更する場合があります。

送信元 IP のパーシステンス プロファイルは、送信元の IP アドレスに基づいてセッションを追跡します。送信元アドレス ベースのパーシステンス が有効になっている仮想サーバへクライアントが接続を要求すると、ロード バランサは、そのクライアントに以前接続したかどうかを確認し、接続したことがあれば、そのクライアントを同じサーバに返します。以前に接続したことがない場合は、ロード バランサがプールのロード バランシング アルゴリズムに基づいてサーバ プール メンバーを選択します。送信元 IP のパーシステンス プロファイルは、レイヤー 4 およびレイヤー 7 の仮想サーバによって使用されます。

ルール パーシステンス、Cookie パーシステンス、サーバ キープアライブがすべて構成されている場合、ロード バランサはルール パーシステンス > Cookie パーシステンス > サーバ キープアライブという優先順位に従います。

Cookie パーシステンス プロファイルには 3 つのモードがあります。
  • Cookie 挿入:ロード バランサは、クライアントに対するサーバ応答にプール メンバー情報を使用して、独自の Cookie を挿入します(メンバー情報はエンコードされている場合も、されていない場合もあります)。以降の要求で、クライアントは受信した Cookie(NSX Cookie を含む)を転送し、ロード バランサはその情報を使用してプール メンバーのパーシステンスを提供します。プール メンバーに送信されたときに、NSX Cookie はクライアント要求から削除されます。
  • Cookie プリフィックス:ロード バランサは、クライアントに対するサーバ応答にプール メンバー情報を追加します(メンバー情報はエンコードされている場合も、されていない場合もあります)。以降の要求で、クライアントは受信した HTTP Cookie(NSX が追加した情報を含む)を転送し、ロード バランサはその情報を使用してプール メンバーのパーシステンスを提供します。プール メンバーに送信されたときに、NSX Cookie のプリフィックスはクライアント要求から削除されます。
  • Cookie 書き換え:ロード バランサは、クライアントに対するサーバ応答でサーバの Cookie 値をプール メンバー情報に置き換えます(メンバー情報はエンコードされている場合も、されていない場合もあります)。以降の要求で、クライアントは受信した HTTP Cookie(NSX が追加した情報を含む)を転送し、ロード バランサはその情報を使用してプール メンバーのパーシステンスを提供します。プール メンバーに送信されたときに、クライアント要求の Cookie が元のサーバ Cookie に置き換わります。
Cookie パーシステンスは L7 仮想サーバでのみ使用できます。

汎用のパーシステンス プロファイルは、HTTP 要求の HTTP ヘッダー、Cookie または URL に基づいてパーシステンスをサポートします。このため、セッション ID が URL の一部である場合、アプリケーション セッションのパーシステンスがサポートされます。このプロファイルは、仮想サーバに直接関連付けられていません。要求の転送と応答の書き換えにロード バランサ ルールを構成するときに、このプロファイルを指定します。

汎用パーシステンス プロファイルの図

手順

  1. ブラウザから、NSX Manager (https://<nsx-manager-ip-address>) に管理者権限でログインします。
  2. [ネットワーク] > [ロード バランシング] > [プロファイル] > [パーシステンス] > [パーシステンス プロファイルの追加] を選択します。
  3. [送信元 IP] を選択して、送信元 IP のパーシステンス プロファイルを追加し、プロファイルの詳細を入力します。
    送信元 IP アドレス プロファイルのデフォルト設定をそのまま使用することもできます。
    オプション 説明
    名前と説明 送信元 IP のパーシステンス プロファイルの名前と説明を入力します。
    パーシステンスの共有 切り替えボタンを使用して、このプロファイルに関連付けられているすべての仮想サーバでパーシステンス テーブルを共有するかどうかを指定します。

    送信元 IP のパーシステンス プロファイルが特定の仮想サーバに関連付けられていて、そのプロファイルでパーシステンスの共有が有効になっていない場合、そのプロファイルに関連付けられている各仮想サーバではプライベートなパーシステンス テーブルが保持されます。

    パーシステンス エントリのタイムアウト パーシステンス期間を秒単位で入力します。

    ロード バランサのパーシステンス テーブルには、同じサーバにクライアント要求が転送されたことを記録したエントリが維持されます。

    新しいクライアント IP からの最初の接続は、ロード バランシング アルゴリズムに基づいてプール メンバーにロード バランシングされます。NSX は、このパーシステンス エントリを LB パーシステンス テーブルに保存します。このテーブルは、アクティブな T1-LB をホストしている Edge ノードで表示できます。表示するには、CLI コマンド get load-balancer <LB-UUID> persistence-tables を使用します。

    • このクライアントから仮想 IP アドレスへの接続がある場合、パーシステンス エントリは保持されます。
    • クライアントから仮想 IP アドレスへの接続がなくなると、「パーシステンス エントリのタイムアウト」値に従ってパーシステンス エントリのタイマーがカウントダウンを開始します。タイマーの期限切れになるまでにクライアントから仮想 IP アドレスへの新しい接続が確立されないと、そのクライアント IP アドレスのパーシステンス エントリは削除されます。エントリが削除されると、クライアントは再びロード バランシング アルゴリズムに基づいてプール メンバーにロード バランシングされます。
    テーブルがフルになるとエントリを消去

    タイムアウト値が大きい場合、トラフィックが大量に発生すると、パーシステンス テーブルがすぐにいっぱいになる可能性があります。このオプションを有効にした場合、新しいエントリを受け入れるために最も古いエントリが削除されます。

    このオプションを無効にした場合、送信元 IP アドレスのパーシステンス テーブルがいっぱいになると、新しいクライアント接続が拒否されます。

    HA パーシステンス ミラーリング 切り替えボタンを使用して、パーシステンス エントリを HA ピアに同期するかどうかを指定します。HA パーシステンス ミラーリングを有効にすると、ロード バランサのフェイルオーバーでクライアント IP のパーシステンスが維持されます。
    タグ タグを入力して検索しやすくします。

    タグを指定して、タグの範囲を設定できます。

  4. [Cookie] パーシステンス プロファイルを選択して、プロファイルの詳細を入力します。Cookie パーシステンスは、L7 仮想サーバでのみ使用できます。
    オプション 説明
    名前と説明 Cookie パーシステンス プロファイルの名前と説明を入力します。
    パーシステンスの共有 このボタンを切り替えて、同じプール メンバーに関連付けられている複数の仮想サーバの間でパーシステンスを共有します。

    Cookie パーシステンス プロファイルでは、<name>.<profile-id>.<pool-id> という形式を持つ Cookie が挿入されます。

    Cookie パーシステンス プロファイルが特定の仮想サーバに関連付けられていて、そのプロファイルでパーシステンスの共有が有効になっていない場合は、仮想サーバごとに Cookie パーシステンスがプライベートに使用され、プール メンバーによって修飾されます。ロード バランサによって、<name>.<virtual_server_id>.<pool_id> という形式を持つ Cookie が挿入されます。

    Cookie モード ドロップダウン メニューからモードを選択します。
    • [挿入] - セッションを識別する一意の Cookie を追加します。
    • [プリフィックス] - 既存の HTTP Cookie 情報に新しい情報を追加します。
    • [書き換え] - 既存の HTTP Cookie 情報を書き換えます。
    Cookie 名 Cookie 名を入力します。
    Cookie ドメイン ドメイン名を入力します。

    HTTP Cookie ドメインは、[挿入]モードの場合にのみ設定できます。

    Cookie のフォールバック Cookie で無効状態またはダウン状態のサーバが参照されている場合、クライアントの要求を却下するには、この切り替えボタンをオフにします。

    Cookie で無効状態または停止状態のサーバが参照されている場合、クライアントの要求を処理する新しいサーバを選択します。

    Cookie のパス Cookie の URL パスを入力します。

    HTTP Cookie のパスは、[挿入]モードの場合にのみ設定できます。

    Cookie の暗号化 暗号化を無効にするには、この切り替えボタンをオフにします。

    暗号化を無効にすると、Cookie サーバの IP アドレスとポート情報はプレーン テキストになります。Cookie サーバの IP アドレスとポート情報を暗号化します。

    Cookie のタイプ ドロップダウン メニューから Cookie のタイプを選択します。

    [セッション Cookie] - 保存されません。ブラウザを閉じると、失われます。

    [パーシステンス Cookie ] - ブラウザによって保存されます。ブラウザを閉じても失われません。

    HttpOnly フラグ このオプションを有効にすると、ブラウザで実行されているスクリプトが Cookie にアクセスできなくなります。

    HttpOnly フラグは、[挿入] モードでのみ使用できます。

    Secure フラグ このオプションを有効にすると、Web ブラウザは https 経由でのみ Cookie を送信します。

    Secure フラグは、[挿入] モードでのみ使用できます。

    最大アイドル時間 Cookie が期限切れになるまでのこの Cookie タイプの最大アイドル時間を秒単位で入力します。
    Cookie の最大経過時間 セッション Cookie タイプを選択した場合に、Cookie を維持する期間を秒単位で入力します。
    タグ タグを入力して検索しやすくします。

    タグを指定して、タグの範囲を設定できます。

  5. [汎用] を選択して、汎用パーシステンス プロファイルを追加し、プロファイルの詳細を入力します。
    オプション 説明
    名前と説明 送信元 IP のパーシステンス プロファイルの名前と説明を入力します。
    パーシステンスの共有 ボタンを切り替えて、仮想サーバ間でプロファイルを共有します。
    パーシステンス エントリのタイムアウト パーシステンス期間を秒単位で入力します。

    ロード バランサのパーシステンス テーブルには、同じサーバにクライアント要求が転送されたことを記録したエントリが維持されます。

    新しいクライアント IP からの最初の接続は、ロード バランシング アルゴリズムに基づいてプール メンバーにロード バランシングされます。NSX は、このパーシステンス エントリを LB パーシステンス テーブルに保存します。このテーブルは、アクティブな T1-LB をホストしている Edge ノードで表示できます。表示するには、CLI コマンド get load-balancer <LB-UUID> persistence-tables を使用します。

    • このクライアントから仮想 IP アドレスへの接続がある場合、パーシステンス エントリは保持されます。
    • クライアントから仮想 IP アドレスへの接続がなくなると、「パーシステンス エントリのタイムアウト」値に従ってパーシステンス エントリのタイマーがカウントダウンを開始します。タイマーの期限切れになるまでにクライアントから仮想 IP アドレスへの新しい接続が確立されないと、そのクライアント IP アドレスのパーシステンス エントリは削除されます。エントリが削除されると、クライアントは再びロード バランシング アルゴリズムに基づいてプール メンバーにロード バランシングされます。
    HA パーシステンス ミラーリング 切り替えボタンを使用して、パーシステンス エントリを HA ピアに同期するかどうかを指定します。
    タグ タグを入力して検索しやすくします。

    タグを指定して、タグの範囲を設定できます。