Citrix ADC

根据用户定义的规则配置持久性

警告:

负载平衡特性中持久性规则的经典表达式的使用已被删除,并且在Citrix ADC设备发行版13.1之后的过滤规则中不再可用。Citrix建议不要通过Citrix ADC命令行界面、Citrix ADC GUI或Nitro自动化使用这些策略表达式。有关更多信息,请参见表1和表2经典策略弃用FAQ页面。

当配置了基于规则的持久性时,Citrix ADC设备将根据匹配规则的内容创建持久性会话,然后再将请求定向到配置的负载均衡方法所选择的服务。之后,它将匹配该规则的所有请求定向到相同的服务。您可以为HTTP、SSL、RADIUS、ANY、TCP和SSL_TCP类型的服务配置基于规则的持久性。

基于规则的持久性需要经典或高级策略表达式。可以使用经典表达式计算请求标头,也可以使用高级策略表达式计算请求标头、请求中的Web表单数据、响应标头或响应体。例如,可以使用经典表达式根据HTTP Host报头的内容配置持久性。还可以使用高级策略表达式根据响应cookie或自定义报头中的应用程序会话信息配置持久性。有关创建和使用经典和高级策略表达式的详细信息,请参见策略和表达式

可以配置的表达式取决于要为其配置基于规则的持久性的服务类型。例如,某些特定于RADIUS的表达式不允许用于RADIUS以外的协议,基于TCP-option的表达式不允许用于ANY类型以外的服务类型。对于TCP和SSL_TCP服务类型,可以使用计算TCP/IP协议数据、第二层数据、TCP选项和TCP有效负载的表达式。

注意:有关涉及配置基于基于通过TCP传输的财务信息交换(“FIX”)协议数据的基于规则的持久性的用例,请参见基于TCP字节流中名称值对配置基于规则的持久化

基于规则的持久性可用于维护实体(如Citrix SD-WAN设备、Citrix SD-WAN插件、缓存服务器和应用程序服务器)的持久性。

请注意:在ANY虚拟服务器上,不能为响应配置基于规则的持久性。

若要基于用户定义的规则配置持久性,请首先按照中所述配置持久性配置不需要规则的持久性类型,并将持久化类型设置为RULE。然后可以执行以下步骤。您可以使用配置实用工具或CLI来配置基于规则的持久性。

通过CLI,根据用户自定义的规则配置持久化

在命令提示符下,输入:

set lb vserver  [-rule ][-resRule ] 

例子:

Set lb vserver vsvr_name -rule http.req.header("cookie").value(0).typecast_nvlist_t('=',';').value("server") Set lb vserver vsvr_name -resrule http.res.header(" Set -cookie").value(0).typecast_nvlist_t('=',';').value("server") 

使用GUI根据用户定义的规则配置持久性

  1. 导航到交通管理>负载平衡>虚拟服务器,打开虚拟服务器。
  2. 在Persistence部分中,选择满足您需求的持久性类型。最适合虚拟服务器的持久化类型可以通过选项按钮获得。可以从“其他”列表中选择适用于特定虚拟服务器类型的其他持久性类型。

配置持久化规则

请注意

在NetScaler发行版12.0 build 56.20之前,所有持久性类型都可以在一个持久性下拉列表中使用,没有任何选项按钮。

示例:请求有效负载的经典表达式

下面的经典表达式基于包含字符串“MyBrowser”的User-Agent HTTP头的存在创建持久会话,并将包含此头和字符串的任何后续客户端请求定向到为初始请求选择的同一服务器。

用户代理包含MyBrowser 

示例:Request Header的高级策略表达式

下面的高级策略表达式与前面的经典表达式执行相同的操作。

HTTP.REQ.HEADER(“用户代理”)。包含(“MyBrowser”)

下面的表达式检查“服务器”cookie的响应,然后将包含该cookie的任何请求定向到为初始请求选择的同一服务器。

HTTP.RES.HEADER (set - cookie) value (0) .TYPECAST_NVLIST_T (‘=’,’;’). 值(“服务器”)

根据用户定义的规则配置持久性