このセクションでは、NSX Advanced Load Balancer で使用可能なレイヤー 4 DataScript 関数について説明します。
文字列 |
説明 |
---|---|
ソケット バッファからペイロードを読み取ります。 |
|
ペイロードを DataScript に適用する前に、num_bytes を収集します。 |
|
渡されたメッセージを接続ログに記録します |
|
現在の TCP/UDP 接続を閉じます |
|
クライアントの送信元ポートを返します。 |
|
クライアントの IP アドレスを返します。 |
|
オプションの指定されたプールまたは仮想サービスに適用されているプールに要求をロード バランシングします。 |
|
avi.pool.get_server_info() |
|
avi.pool.get_server_ip() |
|
avi.poolgroup.select |
現在の要求のプール グループを選択します。 |
前述の API は、IP グループおよび文字列グループではサポートされていません。ただし、DataScript はプール グループでサポートされます。
avi.l4.read
機能 |
avi.l4.read() |
説明 |
関数 avi.vs.read の名前が avi.l4.read に変更されました。ソケット バッファからペイロードを読み取り、バイトのストリームを返します。 この API は、ペイロードを読み取ってそこで操作するためには必須です。 読み取り可能なバイト数は、65,000 を超えることはできません。この API は、avi.l4.collect と組み合わせて使用できます。ソケットに十分なバイトが存在しない場合、API はエラーを表示します。 |
イベント |
|
パラメータ |
バイト数 |
戻り値 |
L4 (TCP/UDP) の後のペイロードをバイトのストリームとして返します |
例 |
payload = avi.l4.read() - Reads all bytes from socket buffer payload = avi.l4.read(10) - Reads 10 bytes from socket buffer payload = avi.l4.read(0) - Reads all bytes from socket buffer |
avi.l4.collect (num_bytes)
機能 |
avi.l4.collect(num_bytes) |
説明 |
ペイロードを DatasSript に適用する前に、num_bytes を収集します。 TCP/UDP アイドル タイムアウトの前に num_bytes が収集されない場合、接続はアイドル タイマーによって終了されます。 この API/DataScript は、num_bytes が利用可能になるまで生成を継続します。 |
イベント |
|
パラメータ |
バイト数 |
戻り値 |
現在バッファされているバイト数 |
例 |
Buffered = avi.l4.collect(1000) Payload = avi.l4.read(200) |
avi.vs.log
機能 |
avi.vs.log() |
説明 |
接続ログに渡されたメッセージをログに記録します。これは、接続ログ API に ds_log として表示されます。 ログに記録できる文字列の最大長は 256 です。 この API は複数回呼び出すことができるため、結果としてメッセージが連結されます。 メッセージは、メモリが不足している間のみ連結されません。 デフォルトでは、すべてのログが重要でないログですが、最後の引数として事前設定値「avi.SIG_ENABLE」を渡すことでアップグレードできます。 |
イベント |
|
パラメータ |
任意の数のパラメータを受け入れます。ログには、文字列、数値、ブール値、および nil 値の任意の組み合わせが含まれる場合があります。 |
戻り値 |
戻り値はありません |
例 1 |
avi.vs.log("hello ", num, " you!") 出力:hello 2 you! これは重要でないログとして生成されます。 |
例 2 |
avi.vs.log("hello ", num, " you!", avi.SIG_ENABLE) 出力:"hello 2 you!" これは重要なログとして生成されます。 |
avi.vs.client_port
機能 |
avi.vs.client_port() |
説明 |
クライアントの送信元ポートを返します。 |
イベント |
|
パラメータ |
なし |
戻り値 |
クライアントの送信元ポートを含む文字列 |
例 |
if avi.vs.client_port() == “60000" then avi.vs.close_conn() end |
avi.vs.client_ip
機能 |
avi.vs.client_ip() |
説明 |
クライアントの IP アドレスを返します。 |
イベント |
|
パラメータ |
なし |
戻り値 |
クライアントの送信元 IP アドレスを含む文字列。 |
例 |
if avi.vs.client_ip() == "10.1.1.1" then avi.vs.close_conn() end |
avi.vs.table_insert
機能 |
avi.vs.table_insert( [table_name,] key, value [, lifetime] ) |
説明 |
テーブル API は、カスタム データの保存と取得に使用されます。avi.vs.table_insert API は、キーのキー値ストアに値を格納します。このキー値ストアは、すべての仮想サービスに対して一意であり、仮想サービスをホストしているすべての SE でミラーリングされます。 |
イベント |
|
パラメータ |
オプションの table_name が指定されていない場合、キー値ペアは仮想サービスのデフォルト テーブルに格納されます。指定すると、カスタム名が付いた新しいテーブルが使用されます。 複数のテーブルが含まれる仮想サービスは、テーブルごとに異なる値を持つ同じキー名を持つことができます。キーは、値を検索するために使用されます。値は、保存するカスタム データです。オプションの有効期間フラグは正の整数にする必要があります。これは、このレコードが存在する時間を秒単位で示します。 時間切れになると、キーと値はサイレントに破棄されます。有効期間フラグを指定しない場合、デフォルト値の 300 秒が使用されます。サポートされる最小有効期間は 300 秒です。 |
戻り値 |
挿入が成功した場合はブール値 true を返し、挿入が失敗した場合は false を返します。 |
例 |
if radius_username == “myuser” then avi.vs.table_insert(radius_username, “10.2.3.4:1812”, 3600) end |
すでに存在するキーを挿入すると、キーの有効期間がリセットされます。キーに関連付けられている値は同じままになり、上書きされません。
avi.vs.table_remove
機能 |
avi.vs.table_remove( [table_name,] key) |
説明 |
テーブル API は、カスタム データの保存と取得に使用されます。 avi.vs.table_remove API は、指定したキーのデータ ストアから指定されたキー/値ペアを削除します。 |
イベント |
|
パラメータ |
オプションの table_name が指定されていない場合、キー値ペアは仮想サービスのデフォルト テーブルに格納されます。指定すると、カスタム テーブルが検索されます。キーは、削除するテーブル エントリを検索するために使用されます。 |
戻り値 |
値は返されません。 |
例 |
if radius_username == “myuser” then avi.vs.table_remove(radius_username) end |
avi.vs.table_lookup
機能 |
avi.vs.table_lookup( [table_name,] key [, lifetime_exten] ) |
説明 |
テーブル API は、カスタム データの保存と取得に使用されます。 avi.vs.table_lookup API はキーを検索し、対応する値を返します。このキー値ストアは、すべての仮想サービスに対して一意であり、仮想サービスをホストしているすべてのサービス エンジン間でミラーリングされます。 |
イベント |
|
パラメータ |
オプションの table_name が指定されていない場合、仮想サービスのデフォルト テーブルでキーが検索されます。 指定すると、カスタム テーブルが検索されます。キーは、値を検索するために使用されます。オプションの 指定しない場合、デフォルト値の 300 秒が使用されます。つまり、デフォルトでは、キーの値を検索すると、キーの有効期間がさらに 300 秒延長されます。 有効期限に影響を与えずにキーを検索するには、 |
戻り値 |
検索された文字列の値を返します。文字列が無効な場合、返される値は nil です。 |
例 |
radius_username = “myuser” if avi.vs.table_lookup(radius_username) then avi.vs.log(“Radius username ”..radius_username) end |
avi.vs.table_refresh
機能 |
avi.vs.table_refresh( [table_name,] key [, lifetime_exten] ) |
説明 |
キー/値ストア内のキーのエントリの有効期間を更新します。 |
イベント |
|
パラメータ |
オプションのテーブル名を使用して別のテーブル名を指定しない限り、デフォルトの仮想サービス テーブルでキーを検索します。キーは、目的のテーブル エントリを検索するために使用されます。オプションの lifetime_exten(正の整数)は、キー/値ストア内のエントリの有効期間を延長するための秒単位の値です。指定しない場合、エントリの有効期間を延長するためにデフォルト値の 300 秒が使用されます。これで、有効期間は lifetime_exten に設定されます。 |
戻り値 |
更新が成功した場合はブール値 true を返し、更新が失敗した場合は false を返します。 |
例 |
if avi.vs.client_ip() == "10.1.1.1" then avi.vs.table_refresh(“my_table”,”my_key”, 3600) end |
avi.pool.get_server_status
機能 |
avi.pool.get_server_status(pool, server, port) |
説明 |
指定されたポートで待機しているサーバの状態を特定します |
イベント |
|
パラメータ |
3 つのパラメータ フィールドはすべて必須です。
|
戻り値 |
戻り値 0 は、サーバがダウンしていることを示します。戻り値 1 は、サーバが稼動中であることを示します。 |
例 |
if avi.pool.get_server_status("tcp-test-pool", "10.52.44.50", "80") == 0 then avi.vs.log(“Server is DOWN”) end |
avi.pool.select
機能 |
avi.pool.select( pool, server, port ) |
説明 |
現在の要求のプールまたはプール内の特定のサーバとポートを選択します。 |
イベント |
|
パラメータ |
|
注意事項 |
プール名、サーバ名または IP アドレス、およびサーバ ポートは、明示的に呼び出されるか、Lua 式に基づいて動的に決定されます。プール名、サーバ、またはサーバ ポートが存在しないか、仮想サービスによって参照できない場合は、エラーが生成されます。 |
戻り値 |
値は返されません |
例 |
要求を明示的な宛先に転送します。 avi.pool.select("radius",server, 1812) end |
avi.pool.get_server_info
機能 |
avi.pool.get_server_info() |
説明 |
この要求または応答のサーバの IP アドレスとポートを返します |
イベント |
|
パラメータ |
なし |
戻り値 |
サーバの IP アドレス(文字列)とそのポート番号 |
例 |
ip, port = avi.pool.get_server_info() |
avi.pool.get_server_ip
機能 |
avi.pool.get_server_ip() |
説明 |
この要求または応答のサーバの IP アドレスを返します |
イベント |
|
パラメータ |
なし |
戻り値 |
サーバの IP アドレス(文字列) |
例 |
ip = avi.pool.get_server_ip() |
avi.poolgroup.select
機能 |
avi.poolgroup.select( poolgroup) |
説明 |
現在の要求のプール グループを選択します。プールを選択するための切り替えアクションで HTTP 要求ポリシーも構成されている場合、選択は有効になりません。HTTP 要求ポリシーの切り替えアクションは、DataScript のプール グループの選択よりも優先して実行されます。 |
イベント |
|
パラメータ |
なし |
戻り値 |
サーバの IP アドレス(文字列) |
例 |
ip = avi.pool.get_server_ip() |