Citrix ADC

持久性的设置

如果希望维护由该虚拟服务器表示的服务器上的连接状态(例如,电子商务中使用的连接),则必须在虚拟服务器上配置持久性。然后,设备将配置的负载均衡方法用于服务器的初始选择,但将来自同一客户机的所有后续请求转发到同一服务器。

如果配置了持久性,那么一旦选择了服务器,它将覆盖负载平衡方法。如果配置的持久性应用于关闭的服务,则设备使用负载平衡方法选择新服务,新服务将成为来自客户机的后续请求的持久性服务。如果所选服务处于Out Of service状态,它将继续服务未完成的请求,但不接受新的请求或连接。在关闭时间过后,现有的连接将被关闭。下表列出了可以配置的持久性类型。

持久性类型 持久连接
源IP, SSL会话ID,规则,DESTIP, SRCIPDESTIP 250 k
cookie插入,URL被动,自定义服务器ID 内存限制。对于CookieInsert,如果time out不是0,则允许任何数量的连接,直到受内存限制。

表1。同时持久连接的数量限制

如果由于设备上缺乏资源而无法维护配置的持久性,则使用负载平衡方法进行服务器选择。根据持久化类型的不同,持久化将在配置好的时间段内进行维护。有些持久性类型是特定于某些虚拟服务器的。下表显示了这种关系。

持久性类型头1 HTTP HTTPS TCP UDP / IP SSL_Bridge
源IP 是的 是的 是的 是的 是的
CookieInsert 是的 是的 没有 没有 没有
SSL会话ID 没有 是的 没有 没有 是的
URL被动 是的 是的 没有 没有 没有
自定义服务器ID 是的 是的 没有 没有 没有
规则 是的 是的 没有 没有 没有
SRCIPDESTIP N/A N/A 是的 是的 N/A
DESTIP N/A N/A 是的 是的 N/A

表2。每种类型的虚拟服务器可用的持久化类型

还可以为一组虚拟服务器指定持久性。当在组上启用持久性时,客户机请求将被定向到选定的相同服务器,而不管组中的哪个虚拟服务器接收客户机请求。当配置的持久性时间过去时,可以为传入的客户机请求选择组中的任何虚拟服务器。

两种常用的持久性类型是基于cookie的持久性和基于url中的服务器id的持久性。

配置基于cookie的持久性

当启用基于cookie的持久性时,Citrix ADC设备将HTTP cookie添加到HTTP响应的Set-Cookie报头字段中。该cookie包含HTTP请求必须发送到的服务的信息。客户端存储cookie并将其包含在所有后续请求中,ADC使用它为这些请求选择服务。可以在HTTP或HTTPS类型的虚拟服务器上使用这种持久性。

Citrix ADC设备插入cookie =

地点:

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

ADC在插入cookie时加密ServiceIP和ServicePort,在接收cookie时解密它们。

注意:如果不允许客户端存储HTTP cookie,则后续的请求将没有HTTP cookie,并且不支持持久性。

默认情况下,ADC设备发送HTTP cookie版本0,符合Netscape规范。它也可以发送版本1,符合RFC 2109。

您可以配置基于HTTP cookie的持久性超时值。注意以下几点:

  • 如果使用HTTP cookie版本0,Citrix ADC设备将插入cookie过期的绝对协调通用时间(GMT) (HTTP cookie的expires属性),该时间计算为ADC设备上的当前GMT时间和超时值之和。
  • 如果使用HTTP cookie版本1,ADC设备会插入一个相对过期时间(HTTP cookie的Max-Age属性)。在这种情况下,客户端软件计算实际过期时间。

注意:目前安装的大多数客户端软件(Microsoft Internet Explorer和Netscape浏览器)都理解HTTP cookie版本0;然而,一些HTTP代理理解HTTP cookie版本1。

如果将超时值设置为0,则ADC设备不会指定过期时间,而不管使用的HTTP cookie版本是什么。过期时间取决于客户端软件,如果该软件被关闭,这些cookie就无效了。这种持久性类型不消耗任何系统资源。因此,它可以容纳无限数量的持久客户机。

管理员可以修改HTTP cookie的版本。

在命令提示符处,键入;

设置ns参数[-cookieversion (0 | 1)] 

例子:

设置ns param -cookieversion 1 
  1. 进入“系统>设置”界面。
  2. 在详细信息窗格中,单击“更改HTTP参数”。
  3. 2 .在“配置HTTP参数”对话框的“Cookie”下,选择“版本0”或“版本1”。

注意:有关参数的信息,请参见配置基于cookie的持久性

使用CLI配置基于cookie的持久化

在命令提示符下,键入以下命令来配置基于cookie的持久性并验证配置:

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 vserver- lb -1 (10.102.29.60:80) - HTTP类型:ADDRESS…持久性:COOKIEINSERT(版本0)持久性超时:2分钟…做< !——NeedCopy >

使用GUI配置基于cookie的持久性

  1. 进入“流量管理>负载均衡>虚拟服务器”。
  2. 在详细信息窗格中,选择要为其配置持久性的虚拟服务器(例如,vserver-LB-1),然后单击Open。
  3. 在“配置虚拟服务器(负载均衡)”对话框的“方法和持久性”选项卡的“持久性”列表中,选择“COOKIEINSERT”。
  4. 在“超时(分钟)”文本框中,输入超时值(例如,2)。
  5. 单击OK。
  6. 通过选择虚拟服务器并查看窗格底部的Details部分,验证为其配置持久性的虚拟服务器已正确配置。

根据url中的服务器id配置持久性

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

URL被动持久需要配置有效负载表达式或策略基础结构表达式,以指定服务器ID在客户端请求中的位置。有关表达式的更多信息,请参见策略配置与参考

注意:如果无法从客户端请求中提取服务器ID,则服务器选择将基于负载均衡方法。

例子:有效载荷表达式

表达式URLQUERY包含sid=,配置系统在匹配令牌sid=后,从客户端请求的URL查询中提取服务器ID。因此,一个带有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 vserver- lb -1 (10.102.29.60:80) - HTTP Type: ADDRESS…持久性:URLPASSIVE持久性超时时间:2分钟…做< !——NeedCopy >

使用GUI配置基于url中的服务器id的持久化

  1. 进入“流量管理>负载均衡>虚拟服务器”。
  2. 在详细信息窗格中,选择要为其配置持久性的虚拟服务器(例如,vserver-LB-1),然后单击Open。
  3. 在“配置虚拟服务器(负载均衡)”对话框的“方法和持久性”页签的“持久性”列表中,选择“URLPASSIVE”。
  4. 在“超时(分钟)”文本框中,输入超时值(例如,2)。
  5. 在“规则”文本框中输入有效的表达式。或者,单击“规则”文本框旁边的“配置”,并使用“创建表达式”对话框创建表达式。
  6. 单击OK。
  7. 通过选择虚拟服务器并查看窗格底部的Details部分,验证为其配置持久性的虚拟服务器已正确配置。
持久性的设置