このトピックでは、NSX Advanced Load Balancer で使用可能な DataScript プール関数の仕様について説明します。
機能 |
説明 |
---|---|
サーバの稼動/停止状態を返します |
|
稼動状態のサーバとサーバの合計数を返します |
|
特定のプールを選択します |
|
選択したサーバの IP アドレスを返します |
|
サーバの IP アドレスとポートを返します |
|
特定のプール グループを選択します |
|
コンシステント ハッシュ ロード バランシング アルゴリズムがハッシュする文字列値を設定して、選択したプール内のサーバを選択します
注:
NSX Advanced Load Balancer バージョン 22.1.3 以降では、コンシステント ハッシュがプール グループのロード バランシング アルゴリズムとしてサポートされます。 |
avi.pool.get_server_status
関数 |
avi.pool.get_server_status(pool, server, port) |
説明 |
指定されたポートで待機しているサーバの状態を確認します。 |
イベント |
|
パラメータ |
3 つのパラメータ フィールドはすべて必須です。
|
戻り値 |
戻り値 0 は、サーバが |
例 |
サーバがダウンしている場合は、次のようにトラフィックを別の場所にリダイレクトします: if avi.pool.get_server_status("web-pool", "10.1.1.1", "80") == 0 then avi.http.redirect("backupsite.com" .. avi.http.get_uri()) end |
avi.pool.get_servers
関数 |
|
説明 |
状態が「稼動中」のサーバの数と、指定したプール内で構成されたサーバの合計数を確認します。 |
イベント |
|
パラメータ |
|
戻り値 |
稼動中のサーバの数と、プール内のサーバの合計数を返します。 |
例 |
要求を明示的な宛先に転送します。 servers_up, servers_total = avi.pool.get_servers("web-pool") if servers_up == 0 then avi.http.response(503) end |
avi.pool.select
関数 |
|
説明 |
現在の要求のプールまたはプール内の特定のサーバを選択します。プールまたはプール内の特定のサーバを選択するための切り替えアクションを使用して HTTP 要求ポリシーも構成されている場合、この選択は有効になりません。HTTP 要求ポリシーの切り替えアクションは、DataScript のプール選択よりも優先されます。 |
イベント |
|
パラメータ |
サーバ パラメータ(文字列)には、サーバの IPv4 アドレスを引用符で囲んで指定します。オプションのポート パラメータ(整数)は、サーバの特定のサービス ポートに接続を転送します。ポートは、0 ~ 65536 の数字、または有効なポート番号に評価される式である必要があります。 |
注意事項 |
プール名、サーバ名または IP アドレス、およびサーバ ポートは、明示的に呼び出されるか、Lua 式に基づいて動的に決定されます。プール名、サーバ、またはサーバ ポートが存在しないか、仮想サービスによって参照できない場合は、エラーが生成されます。
|
戻り値 |
値は返されません |
関連 |
avi.poolgroup.select()- 現在の要求のプール グループを選択します。 |
例 1 |
要求を明示的な宛先に転送します。 if avi.http.get_path() == "/sales/" then avi.pool.select("sales-pool") elseif avi.http.get_path () == "/engineering/" then avi.pool.select("engineering-pool", "apache1") elseif avi.http.get_path () == "/marketing/" then avi.pool.select("marketing", "10.10.31.201") end |
例 2 |
動的に生成された宛先に要求を転送します。
avi.pool.select(avi.http.get_path_tokens(1, 1)) |
例 3 |
指定したサーバに要求を転送します。 var = "abcd" avi.pool.select("poolx", var) |
プール選択機能は IPv6 ではサポートされていません。
avi.pool.server_ip
関数 |
|
説明 |
この要求または応答のサーバの IPv6 アドレスを返します。コンテンツ スイッチングまたは多重化では、1 つのクライアント接続に複数の要求があり、それぞれ異なるサーバに配布される場合があります。 |
イベント |
|
パラメータ |
なし |
戻り値 |
サーバの IP アドレスの文字列を返します |
例 |
|
この API は、イベント SSL_PRECONNECT
、SSL_CLIENTHELLO
、および SSL_HANDSHAKE_DONE
ではサポートされていません。
avi.pool.get_server_info
機能 |
|
説明 |
この要求または応答のサーバの IPv6 アドレスとポートを返します。
注:
コンテンツ スイッチングまたは多重化では、1 つのクライアント接続に複数の要求があり、それぞれが異なるサーバに分散されます。 |
イベント |
|
パラメータ |
なし |
戻り値 |
サーバの IP アドレス(文字列)とそのポート番号 |
注意事項 |
プール名、サーバ名または IP アドレス、およびサーバ ポートは、
|
関連 |
|
例 |
ip, port = avi.pool.get_server_info() |
avi.poolgroup.select
機能 |
|
説明 |
現在の要求のプール グループを選択します。プールを選択するための切り替えアクションで HTTP 要求ポリシーも構成されている場合、選択は有効になりません。HTTP 要求ポリシーの切り替えアクションは、DataScript のプール グループの選択よりも優先して実行されます。 |
イベント |
|
パラメータ |
|
戻り値 |
プール グループ名は、明示的に呼び出すか、
|
注意事項 |
値は返されません |
関連 |
avi.pool.select() - 現在の要求のプールを選択します。 |
例 |
要求を明示的な宛先に転送します。 if avi.http.get_path() == "/test/" then avi.poolgroup.select("test-poolgroupl") else avi.poolgroup.select("defaut-poolgroup") end |
avi.pool.chash
機能 |
|
説明 |
コンシステント ハッシュ ロード バランシング アルゴリズムがハッシュする文字列値を設定して、選択したプール内のサーバを選択します |
イベント |
|
パラメータ |
文字列値を指定する必要があり、任意の方法で作成できます。 |
戻り値 |
戻り値はありません |
例 |
要求に hash = avi.http.get_header("custom-hash") if hash then avi.pool.select("pool-of-servers") avi.pool.chash(hash) end |