NSX Advanced Load Balancer には、クライアントを同じサーバに長期間保持するための、いくつかの標準的なメソッドが含まれています。

一部のアプリケーションでは、パーシステンス動作に対するカスタマイズを増やしたり、さまざまなアプリケーション タイプをサポートしたりすることが有益な場合があります。

パーシステンスは、ユーザーを一意に識別し、一定期間宛先サーバに固定または保持する機能に基づいています。

カスタム パーシステンスを作成するための主要な DataScript 関数は table コマンドで、構成可能な期間において NSX Advanced Load Balancer の SE にデータをローカルに保存できるようにします。保存されたデータは、高可用性とスケーリングのために他の関連する SE にレプリケートされます。

DataScript

機能

説明

avi.vs.table_insert( [table_name,] key, value [, lifetime] )

カスタム データを時間ベースのテーブルに保存します

avi.vs.table_lookup( [table_name,] key [, lifetime_exten] )

テーブル内のデータを参照します

avi.vs.table_remove( [table_name,] key )

テーブルからデータを削除します

avi.vs.table_refresh( [table_name,] key [, lifetime_exten] )

テーブル エントリの有効期限を更新します

JSessionID の例

次の例は、サーバから送信された、一意の JSessionID を持つ HTTP Cookie に基づいて維持されます。以降のクライアント要求には、この Cookie が含まれ、同じサーバへの要求を保持するために使用されます。

HTTP Response event:パーシステンスを 20 分間追加するか、エントリがすでに存在する場合はタイマーを更新します

if avi.http.get_cookie("JSESSIONID") then
  avi.vs.table_insert(avi.http.get_cookie("JSESSIONID"), avi.pool.server_ip(), 1200)
end

HTTP Request event:仮想サービスに適用する前にプールの名前を変更します

if avi.http.get_cookie("JSESSIONID") then
  avi.pool.select("poolname", avi.vs.table_lookup(avi.http.get_cookie("JSESSIONID")))
end