ADC

配置溢出

设备上的溢出配置包括使用溢出方法配置的主虚拟服务器、溢出阈值和备份虚拟服务器。备份虚拟服务器也可以配置为溢出,从而创建一个备份虚拟服务器链。

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

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

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

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

  • 指定预定义溢出方法。有四种预定义的方法可用,它们满足共同的溢出要求。
  • 配置基于策略的溢出。在基于策略的溢出中,您可以使用 Citrix ADC 规则指定发生溢出的条件。Citrix ADC 规则为您提供了针对各种工作条件配置溢出效果的灵活性。

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

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

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

配置预定义溢出方法

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

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

注意:对于 RTSP 虚拟服务器,Citrix ADC 设备仅使用数据连接进行溢出。如果备份 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。

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

如果溢出策略导致民主基金的条件 (在策略评价结果未定义时引起例外),则执行民主基金的操作。民主基金的操作始终是接受的。您不能指定您选择的一个民主基金操作。

配置溢出操作

当与其关联的溢出策略评估为 TRUE 时,将执行溢出操作。目前,外溢效应是唯一得到支持的外溢效应操作。

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

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

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。动态阈值是已绑定服务的最大客户端(最大客户端)设置的总和。

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

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

预定义溢出方法 相应表达式
连接 SYS.VSERVER(“<vserver-name>”).CONNECTIONS,与 GT(int) 算术函数一起使用。
带宽 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-->

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

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

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

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

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

配置溢出事件的备份操作

备份操作指定在达到溢出阈值但一个或多个备份虚拟服务未配置或已关闭、禁用或已达到自己的阈值时该怎么办。

注意:对于直接在虚拟服务器上配置的预定义溢出方法(作为 Spillover 方法参数的值),备份操作不可配置。默认情况下,设备会向客户端发送 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. 在“高级设置”中,单击“保护”,然后指定溢出备份操作。
配置溢出