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

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

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

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

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

基于规则的持久性可用于维护实体的持久性,例如分支中继器设备、分支中继器插件、缓存服务器和应用程序服务器。

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

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

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

在命令提示窗口中,键入:

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

示例:

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. 在“持久性”部分中,选择符合您要求的持久性类型。虚拟服务器最合适的持久性类型可用作选项按钮。可以从“其他”列表中选择适用于特定虚拟服务器类型的其他持久性类型。

本地化后的图片

注意

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

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

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

http 头用户代理包含我的浏览器

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

以下默认语法表达式与之前的经典表达式完全相同。

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

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

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