ADC

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

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

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

计算服务哈希值的算法的工作原理如下:

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

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

使用 CLI 更改 use-port-number 全局设置

在命令提示符下,键入:

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
<!--NeedCopy-->

使用 GUI 更改 use-port-number 全局设置

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

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

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

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

示例:

> 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
<!--NeedCopy-->

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

键入 set service 命令、服务名称和 -hashID ,然后输入 ID 值。

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

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

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

show servicegroup <serviceGroupName>
<!--NeedCopy-->

示例:

 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

<!--NeedCopy-->

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

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

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

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