Citrix ADC

为跨虚拟服务器的持久性定制哈希算法

Citrix ADC设备使用基于散列的算法来跨虚拟服务器维护持久性。缺省情况下,哈希负载分担方式使用服务的IP地址和端口号的哈希值。如果一个服务在同一服务器上的不同端口上可用,算法生成不同的哈希值。因此,不同的负载平衡虚拟服务器可能会将同一个应用程序的请求发送到不同的服务,从而破坏了伪持久性。

除了使用端口号生成哈希值外,还可以为每个服务指定唯一的哈希标识符。对于一个服务,必须在所有虚拟服务器上指定相同的哈希标识符值。如果一个物理服务器服务于多种类型的应用程序,那么每种应用程序类型都应该有唯一的散列标识符。

服务哈希值的计算算法如下:

  • 默认情况下,全局设置指定哈希计算中使用的端口号。
  • 如果为服务配置哈希标识符,则使用该标识符,而不使用端口号,无论全局设置如何。
  • 如果您不配置哈希标识,但更改了全局设置的默认值,使其不指定端口号的使用,则哈希值仅基于服务的IP地址。
  • 如果不配置哈希标识,或者将全局设置的默认值改为使用端口号,则哈希值基于服务的IP地址和端口号。

在CLI中绑定服务到服务组时,也可以指定哈希标识符。在配置实用工具中,可以打开服务组并在Members选项卡上添加散列标识符。

使用实例通过CLI修改use-port-number全局设置

在命令提示符下,输入:

设置lb参数-usePortForHashLb (YES . 没有)

例子:

> set lb parameter -usePortForHashLb NO Done >show lb parameter lb全局参数:Persistence Cookie HttpOnly Flag: DISABLED使用hash端口lb: NO Done 

使用实例通过GUI方式修改use-port-number全局设置

  1. “流量管理”>负载均衡>配置负载均衡参数。
  2. 选中或取消选中“基于哈希的LB方法使用端口”。

使用实例通过CLI创建新的服务,并指定服务的哈希标识

在命令提示符下,输入以下命令来设置哈希ID并验证设置:

添加服务<名称> (< IP > . 0) < serverName >) < serviceType > < port > -hashId < positive_integer >
显示服务 

例子:

> add service flbkng 10.101.10.1 http 80 - hashid 12345 Done >show service flbkng flbkng (10.101.10.1:80) - http State: DOWN Last State change was at Thu Nov 4 10:14:52 2010 Time since Last State change: 0 days, 00:00:15.990 Server Name: 10.101.10.1 Server ID:0 Monitor Threshold:0 DOWN State flush: ENABLED Hash ID: 12345 1) Monitor Name: tcp-default State: DOWN Weight: 1 Done 

使用实例通过CLI为现有服务指定哈希标识

键入set service命令、服务名称和哈希德后面跟着ID值。

在添加服务组成员时指定哈希标识符

要为要添加到组中的每个成员指定哈希标识符并验证设置,请在命令提示符处键入以下命令(请确保为每个成员指定唯一的哈希标识符):

bind servicegroup    -hashId  show servicegroup  

例子:

bind servicegroup http_svc_group 10.102.27.153 80 - hashid 2222222 >show servicegroup SRV SRV - HTTP State: ENABLED Monitor Threshold: 0…1)1.1.1.1:80 State: DOWN Server Name: 1.1.1.1 Server ID: 123 Weight: 1 Hash ID: 32211 Monitor Name: tcp-default State: DOWN…2)2.2.2.2:80 State: DOWN Server Name: 2.2.2.2 Server ID: 123 Weight: 1 Hash ID: 12345 Monitor Name: tcp-default State: DOWN Done 

使用GUI为服务指定哈希标识符

  1. “流量管理>负载均衡>服务”。
  2. 创建新服务,或打开现有服务并指定散列ID。

使用GUI为已配置的服务组成员指定哈希标识符

  1. “流量管理>负载均衡>服务组”。
  2. 打开一个成员并键入唯一的散列ID。