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_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