Citrix ADC

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

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

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

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

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

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

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

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

set lb parameter -usePortForHashLb (YES NO)

示例:

> set lb parameter -usePortForHashLb NO
 Done
>show lb parameter
Global LB parameters:
        Persistence Cookie HttpOnly Flag: DISABLED
        Use port for hash LB: NO
 Done

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

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

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

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

add service < name > (< ip > < serverName >) < serviceType > < port > -hashId < positive_integer >
show service <name>

示例:

> 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 为现有服务指定哈希标识符

键入集服务命令、服务名称和 -hashid 后跟 ID 值。

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

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

bind servicegroup <serviceGroupName> <memberName> <port> -hashId <positive_integer>

show servicegroup <serviceGroupName>

示例:

 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。