ADC

配置溢出

设备上的溢出配置由配置有溢出方法的主虚拟服务器、溢出阈值和备份虚拟服务器组成。也可以将备份虚拟服务器配置为溢出,从而创建备份虚拟服务器链。

溢出方法指定了溢出配置所依据的运行条件(例如,已建立的连接数量、带宽或服务器群的组合运行状况)。当新的连接到达时,设备会验证主虚拟服务器是否已启动,并将运行状况与配置的溢出阈值进行比较。如果达到阈值,溢出功能会将新连接转移到备份链中第一个可用的虚拟服务器。备份虚拟服务器管理其接收到的连接,直到主服务器的负载降至阈值以下。

如果您配置溢出持久性,则即使在主服务器上的负载降至阈值以下,备份虚拟服务器也会继续处理接收到的连接。如果您配置溢出持久性和溢出持久性超时,则在主服务器的负载降至阈值以下后,备份虚拟服务器仅在指定的时间段内处理连接。

注意:通常,如果与溢出方法相关的值超过阈值(例如,连接数),则会触发溢出。但是,使用服务器运行状况溢出方法,如果服务器群的运行状况低于阈值,则会触发溢出。

您可以通过以下方式之一配置溢出:

  • 指定预定义的溢出方法。有四种预定义的方法可用,它们满足常见的溢出要求。
  • 配置基于策略的溢出。在基于策略的溢出中,您可以使用 NetScaler 规则来指定溢出发生的条件。NetScaler 规则使您可以灵活地为各种操作条件配置溢出效应。

如果预定义的方法不满足您的要求,请使用基于策略的溢出效应。如果您为主虚拟服务器同时配置两者,则基于策略的溢出配置优先于预定义方法。

首先,创建备份链所需的主虚拟服务器和虚拟服务器。您可以通过指定一个虚拟服务器作为主服务器的备份(即创建辅助虚拟服务器),将虚拟服务器指定为辅助虚拟服务器(即创建第三虚拟服务器)的备份,依此类推,来设置备份链。然后,您可以通过指定预定义溢出方法或创建和绑定溢出策略来配置溢出。

有关将虚拟服务器分配为另一个虚拟服务器的备份的说明,请参阅 配置备份负载平衡虚拟服务器

配置预定义溢出方法

预定义的溢出方法可以满足一些更常见的溢出要求。要使用预定义的溢出方法之一,请在主虚拟服务器上配置溢出参数。要创建备份虚拟服务器链,还需要在备份虚拟服务器上配置溢出参数。

如果备份虚拟服务器达到自己的阈值,并且服务类型为 TCP,则 NetScaler 设备会向客户端发送 TCP 重置。对于 HTTP、SSL 和 RTSP 服务类型,它会将新请求转移到为主虚拟服务器配置的重定向 URL。只能为 HTTP、SSL 和 RTSP 虚拟服务器指定重定向 URL。如果未配置重定向 URL,则 NetScaler 设备会向客户端发送 TCP 重置(如果虚拟服务器为 TCP 类型)或 HTTP 503 响应(如果虚拟服务器的类型为 HTTP 或 SSL)。

注意:对于 RTSP 虚拟服务器,NetScaler 设备仅使用数据连接进行溢出。如果备份 RTSP 虚拟服务器不可用,则请求将被重定向到 RTSP URL,并将 RTSP 重定向消息发送到客户端。

使用命令行界面为虚拟服务器配置预定义的溢出方法

在命令提示符下,键入:

set lb vserver <vServerName> -soMethod <spillOverType> -soThreshold <positiveInteger> -soPersistence ENABLED -soPersistenceTimeout <positiveInteger>
<!--NeedCopy-->

示例

set lb vserver Vserver-LB-1 -soMethod Connection -soThreshold 1000 -soPersistence enabled -soPersistenceTimeout 2
<!--NeedCopy-->

使用配置实用程序为虚拟服务器配置预定义的溢出方法

  1. 导航到 流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
  2. 在“高级设置”中,单击“保护”,然后设置溢出参数。

配置基于策略的溢出

基于规则(表达式)的溢出策略使您能够为更广泛的溢出方案配置设备。例如,您可以根据虚拟服务器的响应时间或基于虚拟服务器的激增队列中的连接数来配置溢出。

要配置基于策略的溢出效应,首先创建溢出效应操作。然后,选择要在溢出策略中使用的表达式,配置该策略,并将该操作与该策略相关联。最后,将溢出策略绑定到负载平衡、内容交换或全局服务器负载平衡虚拟服务器。您可以使用优先级编号将多个溢出策略绑定到虚拟服务器。设备按优先级数的升序对溢出策略进行评估,并执行与最后一个策略相关的操作以评估为 TRUE。

虚拟服务器也可以进行备份操作。如果虚拟服务器没有一个或多个备份虚拟服务器,或者所有备份虚拟服务器都已关闭、禁用或已达到其自身的溢出限制,则执行备份操作。

当溢出策略导致 UNDEF 条件(未定义策略评估结果时引发的异常)时,将执行 UNDEF 操作。UNDEF 操作始终为“接受”。您无法指定自己选择的 UNDEF 操作。

配置溢出操作

当与溢出操作相关的溢出策略的评估结果为 TRUE 时,将执行溢出操作。目前,SPILLOVER 是唯一支持的溢出操作。

使用命令行界面配置基于策略的溢出

在命令提示符处,键入以下命令以配置溢出策略并验证配置:

add spillover action <name> -action SPILLOVER

show spillover action <name>
<!--NeedCopy-->
示例
add spillover action mySoAction -action SPILLOVER
Done
<!--NeedCopy-->
show spillover action mySoAction
1) Name: mySoAction Action: SPILLOVER
Done
<!--NeedCopy-->

为溢出策略选择表达式

在策略表达式中,您可以使用任何返回布尔值的基于虚拟服务器的表达式。例如,您可以使用以下表达式之一:

SYS.VSERVER("vserver").RESPTIME.GT(<int>)
SYS.VSERVER("vserver").STATE.EQ(“<string>”), and
SYS.VSERVER("vserver").THROUGHPUT.LT    (<int>)
<!--NeedCopy-->

除了现有功能(如 RESTime、State 和吞吐量)外,您还可以使用随此功能引入的以下基于虚拟服务器的功能:

Averagesurgecount

返回活动服务的浪涌队列中的平均请求数。如果没有活动服务,则返回 0(零)。如果与内容交换或全局服务器负载平衡虚拟服务器一起使用,则引发 UNDEF 条件。

Activeservices

返回活动服务的数量。如果与内容交换或全局服务器负载平衡虚拟服务器一起使用,则引发 UNDEF 条件。

Activetransactions

返回当前活动事务的虚拟服务器级计数器的值。

is_dynamic_limit_reached

如果虚拟服务器管理的连接数等于动态计算的阈值,则返回布尔值 TRUE。动态阈值是 UP 的绑定服务的最大客户端(最大客户端)设置的总和。

您可以使用策略表达式来实现任何预定义的溢出方法。下表将预定义的溢出方法映射到可用于实现这些方法的表达式:

表 1. 将预定义的溢出方法转换为策略表达式

预定义的溢出方法 对应的表达式
CONNECTION SYS.VSERVER(“<vserver-name>”).CONNECTIONS,与 GT(int) 算术函数一起使用。
BANDWIDTH SYS.VSERVER(“<vserver-name>”).THROUGHPUT,与 GT(int) 算术函数一起使用。
健康 SYS.VSERVER (<vserver-name>”) .HEALTH,与 LT (int) 算术函数一起使用。
DYNAMICCONNECTION SYS.VSERVER (<vserver-name>”) .IS_DYNAMIC_LIMIT_READD 注意:如果使用 IS_DYNAMIC_LIMIT_READD 函数来实现基于策略的溢出效果,则还必须为虚拟服务器配置预定义的 DYAMICCONNENCE 方法,以便溢出效果所需的统计信息才能正常运行被收集。

配置溢出策略

溢出策略使用布尔表达式作为规则来指定发生溢出必须满足的条件。

使用命令行界面配置溢出策略

在命令提示符处,键入以下命令以配置溢出策略并验证配置:

add spillover policy <name> -rule <expression> -action <string> [-comment <string>]

show spillover policy <name>
<!--NeedCopy-->
示例
> add spillover policy mySoPolicy -rule SYS.VSERVER("v1").RESPTIME.GT(50) -action mySoAction -comment "Triggers spillover when the vserver's response time is greater than 50 ms."
Done

> show spillover policy mySoPolicy

1)  Name: mySoPolicy Rule: "SYS.VSERVER("v1").RESPTIME.GT(50)" Action: mySoAction Hits: 0 ActivePolicy: 0
Comment: "Triggers spillover when the vserver's response time is greater than 50 ms."
Done
>
<!--NeedCopy-->

将溢出策略绑定到虚拟服务器

您可以将溢出策略绑定到负载平衡、内容交换或全局服务器负载平衡(虚拟服务器)。您可以将多个策略绑定到虚拟服务器,使用 Goto 表达式控制评估流程。

使用命令行界面将溢出策略绑定到虚拟服务器

在命令提示符下,键入以下命令将溢出策略绑定到负载平衡、内容交换或全局服务器负载平衡虚拟服务器并验证配置:

bind (lb | cs | gslb) vserver <name> -policyName <string> -priority <positive_integer> [-gotoPriorityExpression <expression>]

show (lb | cs | gslb) vserver <name>
<!--NeedCopy-->
示例
> bind lb vserver vserver1 -policyName mySoPolicy -priority 5
Done
> show lb vserver vserver1
vserver1 (2.2.2.12:80) - HTTP Type: ADDRESS
. . .

1)  Spillover Policy Name: mySoPolicy Priority: 5
GotoPriority Expression: END
Flowtype: REQUEST
Done
>
<!--NeedCopy-->

为溢出事件配置备份操作

备份操作指定在达到溢出阈值但一个或多个备份虚拟服务器未配置、已关闭、禁用或已达到其自身阈值时要执行的操作。

注意:对于直接在虚拟服务器上配置的预定义溢出方法(作为溢出方法参数的值),备份操作不可配置。默认情况下,设备向客户端发送 TCP 重置(如果虚拟服务器为 TCP 类型)或 HTTP 503 响应(如果虚拟服务器的类型为 HTTP 或 SSL)。

备份操作是在虚拟服务器上配置的。您可以将虚拟服务器配置为接受请求(在达到策略指定的阈值之后)、将客户端重定向到 URL,或者甚至在建立 TCP 或 SSL 连接之前就直接删除请求,直到请求数量降至阈值以下。因此,即使在分配任何数据结构之前,连接也会被重置,因此使用的内存资源会减少。

使用 CLI 配置溢出备份操作

在命令提示符下,键入以下命令以配置备份操作并验证配置:

set lb vserver <name> -soBackupAction <soBackupAction>

show lb vserver <name>
<!--NeedCopy-->

示例:

set lb vserver vs1 -soBackupAction REDIRECT -redirectURL `http://www.mysite.com/maintenance`
Done
> show lb vserver vs1
vs1 (10.102.29.76:80) - HTTP Type: ADDRESS
State: UP
. . .
Redirect URL: `http://www.mysite.com/maintenance`
. . .
Done
<!--NeedCopy-->

使用 GUI 配置溢出的备份操作

  1. 导航到 流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
  2. 在“高级设置”中,单击“保护”,然后指定溢出备份操作。
配置溢出