Citrix ADC

持久性设置

如果您要在由虚拟服务器表示的服务器上保持连接状态(例如,电子商务中使用的连接),必须对该虚拟服务器配置持久性。然后,设备将使用配置的负载平衡方法进行初始服务器选择,而将来自同一个客户端的所有后续请求都转发到该服务器。

如果配置了持久性,它会在选定服务器之后取代负载平衡方法。如果配置的持久性适用于关闭的服务,设备将使用负载平衡方法来选择新服务,对于来自客户端的后续请求,新服务将具有持久性。如果选定的服务处于“服务”(中断服务)状态,它仍将继续处理未决请求,但不再接受新的请求或连接。关闭期结束后,现有连接将关闭。下表列出了可以配置的持久性类型。

持久性类型 持续型连接
源IP, SSL会话ID、规则,DESTIP SRCIPDESTIP 250 k
CookieInsert、URL被动,自定义服务器ID 内存限制。如果是CookieInsert并且超时不为0,则在达到内存限制之前,连接数目不受限制。

表 1.并发持续型连接数目限制

如果由于设备缺乏资源而无法保持配置的持久性,将使用负载平衡方法进行服务器选择。持久性将在配置的时间内保持,具体取决于持久性类型。某些持久性类型专用于某些虚拟服务器。下表显示了对应关系。

持久性类型标头 1 HTTP HTTPS TCP UDP / IP SSL_Bridge
源IP
CookieInsert
SSL会话ID (SSL会话ID)
URL被动(URL被动)
自定义服务器ID(自定义服务器ID)
规则
SRCIPDESTIP 不适用 不适用 不适用
DESTIP 不适用 不适用 不适用

表 2.适用于各种虚拟服务器类型的持久性类型

还可以为一组虚拟服务器指定持久性。对一组虚拟服务器启用持久性之后,无论该组中的哪一个虚拟服务器接收到客户端请求,客户端请求都将定向到选定的同一个服务器。在经过配置的持久性时间之后,就可以选择该组中的任何虚拟服务器来处理传入的客户端请求。

两种常用的持久性类型是基于饼干的持久性和基于URL中服务器ID的持久性。

在启用基于饼干的持久性之后,Citrix ADC设备会将一个HTTP Cookie添加到HTTP响应的set - Cookie标头字段中。饼干包含关于必须将HTTP请求发送到的服务的信息。客户端存储Cookie并在所有后续请求中包括该Cookie,并且ADC使用它为这些请求选择服务。您可以在HTTP类型或HTTPS类型的虚拟服务器上使用此类型的持久性。

Citrix ADC设备将插入饼干< NSC_XXXX > = < ServiceIP > < ServicePort >

其中:

  • < < NSC_XXXX >是从虚拟服务器名称派生的虚拟服务器ID。
  • < < ServiceIP >是服务的IP地址的十六进制值。
  • < < ServicePort >是服务的端口的十六进制值。

ADC在插入饼干时对ServiceIP和ServicePort进行加密,在收到饼干时对它们进行解密。

注意:如果不允许客户端存储HTTP Cookie,则后续请求不会含有HTTP Cookie,并且不使用持久性。

默认情况下,ADC设备发送符合网景规范的HTTP Cookie版本0。它还可发送符合RFC 2109的饼干版1本。

您可以为基于HTTP Cookie的持久性配置超时的值。请注意以下问题:

  • 如果使用HTTP Cookie版本0,Citrix ADC设备将插入饼干到期时间(HTTP Cookie的到期属性)的绝对协调世界时(格林尼治时间),按ADC设备中当格林尼治时间前时间和超时值之和计算。
  • 如果使用HTTP Cookie版1本,ADC设备将插入相对到期时间(HTTP Cookie的信息属性)。在这种情况下,客户端软件将计算实际的到期时间。

注意:当前安装的大多数客户端软件(微软Internet Explorer和Netscape浏览器)识别HTTP Cookie版本0;但是,某些HTTP代理识别HTTP Cookie版1本。

如果将超时值设置为0,则不论使用哪一个HTTP Cookie版本,ADC设备均不指定到期时间。此时到期时间取决于客户端软件,如果关闭该软件,此类饼干就会无效。这种持久性类型不占用任何系统资源。因此,它可以容纳无数个持久性客户端。

管理员可以更改HTTP cookie版本。

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

设置nsparam [-cookieversion (0 | 1)] 

示例:

设置nsparam -cookieversion 1 
  1. 导航到系统(系统)>设置(设置)。
  2. 在详细信息窗格中,单击改变HTTP参数(更改HTTP参数)。
  3. 在配置HTTP参数(配置HTTP参数)对话框中的饼干下,选择版本0(版本0)或版本1(版本1)。

注意:有关参数的信息,请参阅基于饼干配置持久性

在命令提示窗口中,键入以下命令以配置基于饼干的持久性并验证配置:

set lb vserver  -persistenceType COOKIEINSERT show lb vserver  

示例:

set lb vserver vserver- lb -1 - persistencetype COOKIEINSERT Done show lb vserver vserver- lb -1 vserver- lb -1 (10.102.29.60:80) - HTTP Type: ADDRESS…持久性:COOKIEINSERT (version 0)持久性超时:2分钟…做< !——NeedCopy >
  1. 导航到交通管理(流量管理)>负载平衡(负载平衡)>虚拟服务器(虚拟服务器)。
  2. 在详细信息窗格中,选择要为其配置持久性的虚拟服务器(例如vserver-LB-1),然后单击打开(打开)。
  3. 在配置虚拟服务器(负载平衡)(配置虚拟服务器(负载平衡))对话框中,从方法和持久性(方法和持久性)选项卡上的持久性(持久性)列表中选择COOKIEINSERT。
  4. 在休息时间(分钟)(超时(分钟))文本框中,键入超时值(例如2)。
  5. 单击OK(确定)。
  6. 选择虚拟服务器并查看窗格底部的细节(详细信息)部分,确认其持久性配置正确。

配置基于URL中服务器ID的持久性

Citrix ADC设备可以根据URL中的服务器ID维护持久性。在称为URL被动持久性的技术中,ADC从服务器响应中提取服务器ID,并将其嵌入客户端请求的网址查询中。服务器ID是指定为十六进制数的IP地址和端口组合。ADC从后续的客户端请求中提取服务器ID,然后用它来选择服务器。

URL被动持久性要求配置负载表达式或策略基础结构表达式,指定服务器ID在客户端请求中的位置。有关表达式的详细信息,请参阅策略配置和参考

注意:如果无法从客户端请求中提取服务器ID,系统将根据负载平衡方法来选择服务器。

示例:负载表达式

表达式URLQUERY中包含sid =,将系统配置为从客户端请求的网址查询中提取服务器ID(匹配标记sid =之后的部分)。因此,URL为//m.giftsix.com/index.asp? \ sid; = c0a864100050的请求将定向到IP地址为10.102.29.10,端口为80的服务器。

超时值不影响此类型的持久性,只要能够从客户端请求中提取服务器ID,就可以保持这种持久性。此持久性类型不占用任何系统资源,因此可以容纳无数个持久性客户端。

注意:有关参数的信息,请参阅负载平衡

使用CLI基于URL中的服务器ID配置持久性

在命令提示窗口中,键入以下命令以配置基于URL中服务器ID的持久性并验证配置:

set lb vserver  -persistenceType URLPASSIVE  

示例:

set lb vserver vserver- lb -1 - persistencetype URLPASSIVE Done show lb vserver vserver- lb -1 vserver- lb -1 (10.102.29.60:80) - HTTP Type: ADDRESS…Persistence: URLPASSIVE Persistence Timeout: 2分钟…做< !——NeedCopy >

使用GUI基于URL中的服务器ID配置持久性

  1. 导航到交通管理(流量管理)>负载平衡(负载平衡)>虚拟服务器(虚拟服务器)。
  2. 在详细信息窗格中,选择要为其配置持久性的虚拟服务器(例如vserver-LB-1),然后单击打开(打开)。
  3. 在配置虚拟服务器(负载平衡)(配置虚拟服务器(负载平衡))对话框中,从方法和持久性(方法和持久性)选项卡上的持久性(持久性)列表中选择URLPASSIVE。
  4. 在休息时间(分钟)(超时(分钟))文本框中,键入超时值(例如2)。
  5. 在规则(规则)文本框中,输入有效的表达式。或者,也可以单击规则(规则)文本框旁边的配置(配置),使用创建表达式(创建表达式)对话框来创建表达式。
  6. 单击OK(确定)。
  7. 选择虚拟服务器并查看窗格底部的细节(详细信息)部分,确认其持久性配置正确。
持久性设置