Citrix ADC

自定义哈希算法以实现跨虚拟服务器的持久性

Citrix ADC设备使用基于哈希的算法在虚拟服务器之间保持持久性。默认情况下,基于哈希的负载平衡方法使用服务的 知识产权地址和端口号的哈希值。如果服务在同一服务器上的不同端口上可用,则算法会生成不同的哈希值。因此,不同的负载平衡虚拟服务器可能会将同一应用程序的请求发送到不同的服务,从而破坏伪持久性。

作为使用端口号生成哈希值的替代方法,您可以为每个服务指定唯一的哈希标识符。对于服务,必须在所有虚拟服务器上指定相同的哈希标识符值。如果物理服务器提供多种类型的应用程序,则每种应用程序类型应具有唯一的哈希标识符。

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

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

您还可以在使用CLI将服务绑定到服务组时指定哈希标识符。在配置实用程序中,您可以打开服务组并在“成员”选项卡上添加哈希标识符。

使用CLI更改用户端口号全局设置

在命令提示符下,键入:

set lb parameter -usePortForHashLb (YES . 没有)

示例:

> set lb parameter -usePortForHashLb NO Done >show lb parameter全局lb参数:Persistence Cookie HttpOnly Flag: DISABLED Use port for hash lb: NO Done 

使用 桂更改使用端口号全局设置

  1. 导航到流量管理 > 负载平衡 > 配置负载平衡参数。
  2. 选择或清除对基于哈希的磅方法使用端口。

使用CLI创建新服务并为服务指定哈希标识符

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

添加服务< name > (< IP > . conf < serverName >) < serviceType > < port > -hashId < positive_integer >
Show service  

示例:

>添加服务flbkng 10.101.10.1 http 80哈希德12345 >显示完成服务flbkng flbkng (10.101.10.1:80) - http状态:最后的状态变化是在2010年11月4日10:14:52星期四以来最后的状态变化:0天,00:00:15.990服务器名称:10.101.10.1服务器ID: 0监控阈值:0下状态刷新:启用散列ID: 12345 1)监控名称:tcp-default State: DOWN Weight: 1 Done 

使用 CLI为现有服务指定哈希标识符

键入集服务命令、服务名称和哈希德后跟ID值。

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

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

bind servicegroup    -hashId  show servicegroup  

示例:

绑定servicegroup http_svc_group 10.102.27.153 80哈希德2222222 >显示servicegroup SRV SRV - HTTP状态:启用监控阈值:0…1)1.1.1.1:80状态:服务器名称:1.1.1.1服务器ID: 123重量:1散列ID: 32211监控名称:tcp-default状态:下来……2)2.2.2.2:80状态:服务器名称:2.2.2.2服务器ID: 123重量:1散列ID:12345 Monitor Name: tcp-default State: DOWN…Done 

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

  1. 导航到交通管理(流量管理)>负载平衡(负载平衡)>服务(服务)。
  2. 创建新服务,或打开现有服务并指定哈希ID。

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

  1. 导航到流量管理 > 负载平衡 > 服务组。
  2. 打开一个成员并键入一个唯一的哈希ID。