本主题将详细介绍 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) |
描述 |
确定侦听指定端口的服务器的状态。 |
事件 |
|
参数 |
所有三个参数字段均为必填字段。
|
返回 |
返回值 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 的池选择。 |
事件 |
|
参数 |
server 参数(字符串)是服务器的 IPv4 地址,用引号括起。可选的 port 参数(整数)会将连接转发到服务器的特定服务端口。port 必须是介于 0 与 65536 之间的数字或求值结果为有效端口号的表达式。 |
注意事项 |
可以明确调用也可以根据 Lua 表达式动态确定池名称、服务器名称或 IP 以及服务器端口。如果池名称、服务器或服务器端口不存在或无法由虚拟服务引用,则会生成错误。
|
返回 |
不返回任何值 |
相关 |
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 地址。请记住,通过内容切换或多路复用,单个客户端连接可能具有多个请求,每个请求分配到不同的服务器。 |
事件 |
|
参数 |
无 |
返回 |
返回服务器 IP 地址的字符串 |
示例 |
|
事件 SSL_PRECONNECT
、SSL_CLIENTHELLO
和 SSL_HANDSHAKE_DONE
不支持此 API。
avi.pool.get_server_info
函数 |
|
描述 |
返回此请求或响应的服务器的 IPv6 地址和端口。
注:
通过内容切换或多路复用,单个客户端连接可能具有多个请求,每个请求将分发到不同的服务器。 |
事件 |
|
参数 |
无 |
返回 |
服务器的 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 |