ADC

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

警告:

不建议在负载平衡功能中使用经典表达式作为持久性规则。但是,Classic 表达式已被删除,不再适用于 Citrix ADC 设备版本 13.1 及更高版本的筛选规则。

配置基于规则的持久性后,Citrix ADC 设备会根据匹配规则的内容创建持久性会话,然后再将请求引导到配置的负载平衡方法所选服务。稍后,它将匹配规则的所有请求定向到同一服务。您可以为 HTTP、SSL、RADIUS、任何、TCP 和 SSL_TCP 类型的服务配置基于规则的持久性。

基于规则的持久性需要使用经典或默认语法表达式。您可以使用经典表达式评估请求标头,也可以使用默认语法表达式评估请求标头、请求中的 Web 表单数据、响应标头或响应正文。例如,您可以使用经典表达式根据 HTTP Host 标头的内容配置持久性。您还可以使用默认语法表达式根据响应 Cookie 或自定义标头中的应用程序会话信息配置持久性。有关创建和使用经典和默认语法表达式的详细信息,请参阅 策略和表达式

您可以配置的表达式取决于为其配置基于规则的持久性的服务类型。例如,对于 RADIUS 以外的协议,不允许某些特定于RADIUS的表达式,对于任何类型以外的服务类型,不允许使用基于 TCP 选项的表达式。对于 TCP 和 SSL_TCP 服务类型,可以使用评估 TCP/IP 协议数据、第 2 层数据、TCP 选项和 TCP 负载的表达式。

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

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

注意:在任何虚拟服务器上,您无法为响应配置基于规则的持久性。

要基于用户定义的规则配置持久性,首先按照 配置不需要规则的持久性类型中所述配置持久性,然后将持久性类型设置为 RUE。然后,您可以执行以下过程。您可以使用配置实用程序或 CLI 配置基于规则的持久性。

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

在命令提示符下,键入:

set lb vserver <vserverName> [-rule <expression>][-resRule <expression>]
<!--NeedCopy-->

示例:

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

<!--NeedCopy-->

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

  1. 导航到“流量管理”>“负载平衡”>“虚拟服务器”,然后打开虚拟服务器。
  2. 在“持久性”部分中,选择符合要求的持久性类型。最适合虚拟服务器的持久性类型作为选项按钮提供。可以从“其他”列表中选择适用于特定虚拟服务器类型 的其他 持久性类型。

注意

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

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

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

http header User-Agent contains MyBrowser
<!--NeedCopy-->

示例:请求标头的默认语法表达式

以下默认语法表达式与之前的经典表达式执行相同的操作。

HTTP.REQ.HEADER(“User-Agent”).CONTAINS (“MyBrowser”)

以下表达式检查“服务器”Cookie 的响应,然后将包含该 Cookie 的所有请求定向到为初始请求选择的同一台服务器。

HTTP.RES.HEADER(“SET-COOKIE”).VALUE(0).TYPECAST_NVLIST_T(‘=’,’;’).VALUE(“server”)

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