Citrix ADC

配置溢出

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

溢出方法指定您希望基于溢出配置的操作条件(例如,已建立的连接数、带宽或服务器场的综合运行状况)。当新连接到达时,设备将验证主虚拟服务器是否启动,并将操作条件与配置的溢出阈值进行比较。如果达到阈值,溢出特性将新连接转移到备份链中的第一个可用虚拟服务器。备份虚拟服务器管理它接收到的连接,直到主服务器上的负载低于阈值。

如果配置溢出持久性,备份虚拟服务器将继续处理它接收到的连接,即使在主服务器上的负载低于阈值之后也是如此。如果您配置了溢出持久性和溢出持久性超时,则在主服务器负载低于阈值后,备份虚拟服务器仅在指定的时间内处理连接。

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

您可以通过以下两种方式配置溢出:

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

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

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

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

配置预定义的溢出方法

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

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

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

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

在命令提示符下,输入:

set lb vserver  -soMethod  -soThreshold  - spersistence ENABLED -soPersistenceTimeout  

例子

set lb vserver vserver - lb -1 -soMethod Connection -soThreshold 1000 -soPersistence enabled -soPersistenceTimeout 2 

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

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

配置基于策略的溢出

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

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

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

当溢出策略导致UNDEF条件(策略评估结果未定义时抛出的异常)时,将执行UNDEF操作。UNDEF的动作总是ACCEPT。您不能指定您选择的UNDEF操作。

配置溢出动作

当与其关联的溢出策略计算为TRUE时,将执行溢出操作。目前,SPILLOVER是唯一受支持的溢出操作。

通过命令行配置基于策略的溢出

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

add spillover action  -action spillover show spillover action  
例子
添加溢出动作mySoAction -action spillover Done 
名称:mySoAction动作:溢出操作完成

为溢出策略选择表达式

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

SYS.VSERVER("vserver"). resptime . gt () SYS.VSERVER("vserver"). state . eq ("  "),和SYS.VSERVER("vserver").吞吐量。LT () 

除了现有的函数,如RESPTIME、STATE和THROUGHPUT,您还可以使用以下基于该特性引入的虚拟服务器的函数:

Averagesurgecount

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

Activeservices

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

Activetransactions

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

is_dynamic_limit_reached

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

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

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

预定义溢出方法 相应的表达式
连接 SYS。VSERVER(“< vserver-name >”)。CONNECTIONS, used with the GT(int) arithmetic function.
带宽 SYS。VSERVER(“< vserver-name >”)。吞吐量,与GT(int)算术函数一起使用。
健康 SYS。VSERVER(“< vserver-name >”)。HEALTH,与LT(int)算术函数一起使用。
DYNAMICCONNECTION SYS。VSERVER(“< vserver-name >”)。IS_DYNAMIC_LIMIT_REACHED请注意:如果您通过使用IS_DYNAMIC_LIMIT_REACHED函数实现基于策略的溢出,您还必须为虚拟服务器配置预定义的DYNAMICCONNECTION方法,以便收集溢出工作所需的统计信息。

配置溢出策略

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

通过命令行配置溢出策略

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

添加溢出策略 -rule  -action  [-comment ] show spillover policy  
例子
> add spillover policy mySoPolicy -rule SYS.VSERVER("v1").RESPTIME.GT(50) -action mySoAction -comment "当vserver的响应时间大于50ms时触发溢出溢出"名称:mySoPolicy规则:"SYS.VSERVER("v1").RESPTIME.GT(50)"Action: mySoAction Hits: 0 ActivePolicy: 0 Comment: "当vserver的响应时间大于50毫秒时触发溢出。"完成> 

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

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

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

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

bind (lb | cs | gslb) vserver  -policyName  -priority  [-gotoPriorityExpression ] show (lb | cs | gslb) vserver  
例子
> bind lb vserver vserver1 - policyname mySoPolicy -priority 5 Done > show lb vserver vserver1 vserver1 (2.2.2.12:80) - HTTP Type: ADDRESS…1)溢出策略名称:mySoPolicy优先级:5 GotoPriority表达式:END Flowtype: REQUEST Done > 

配置溢出事件的备份动作

备份动作指定当溢出阈值达到,但一个或多个备份虚拟服务没有配置或关闭、禁用或达到它们自己的阈值时执行的操作。

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

在虚拟服务器上配置备份动作。您可以将虚拟服务器配置为接受请求(在达到策略指定的阈值之后)、将客户端重定向到一个URL,或者干脆在建立TCP或SSL连接之前放弃请求,直到请求数量低于阈值。因此,即使在分配任何数据结构之前,也会重新设置连接,因此会占用更少的内存资源。

使用实例通过CLI配置溢出备份动作

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

set lb vserver  -soBackupAction  show lb vserver  

例子:

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…重定向URL: ' http://www.mysite.com/maintenance '…做< !——NeedCopy >

通过图形化界面配置溢出备份动作

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