Citrix ADC

散列方法

基于某些连接信息或报头信息的散列的负载平衡方法构成了大多数Citrix ADC设备的负载平衡方法。哈希值比它们所基于的信息更短,更容易使用,同时保留了足够的信息,以确保不会有两个不同的信息片段生成相同的哈希值,从而相互混淆。

您可以在这样的环境中使用散列负载平衡方法,其中缓存提供来自Internet或指定原始服务器的广泛内容。缓存请求减少了请求和响应延迟,并确保了更好的资源(CPU)利用率,使缓存在大量使用的网站和应用服务器上流行起来。由于这些站点也受益于负载平衡,因此散列负载平衡方法非常有用。

Citrix ADC设备提供以下散列方法:

  • URL散列法
  • 域哈希法
  • 目的IP哈希方法
  • 源IP散列法
  • 源IP目的IP哈希方式
  • Source IP源端口哈希方法
  • 呼叫ID散列法
  • 令牌方法

大多数哈希算法计算两个哈希值:

  • 服务的IP地址和端口的散列。
  • 传入URL、域名、源IP地址、目的IP地址或源和目的IP地址的散列,具体取决于配置的散列方法。

然后,Citrix ADC设备通过使用这两个散列值生成一个新的散列值。最后,它将请求转发给具有最高散列值的服务。当设备为每个请求计算散列值并选择处理请求的服务时,它会填充缓存。具有相同哈希值的后续请求被发送到相同的服务。下面的流程图说明了这个过程。

请注意

从Citrix ADC 13.0版本79开始。支持Prime re - shuffed Assisted CARP (PRAC)和Jump table Assisted Ring Hash (JARH)一致哈希算法。当服务被添加到或从负载平衡设置中删除时,或者在负载平衡设置中的服务震荡事件期间,一致的哈希算法确保最小的中断。有关详细信息,请参见一致性哈希算法

图1所示。哈希方法如何分发请求

哈希方法是如何分配请求的

哈希方法可以应用于IPv4和IPv6地址。

考虑这样一个场景:将三个服务(Service-HTTP-1、Service-HTTP-2和Service-HTTP-3)绑定到虚拟服务器,配置任意散列方法,散列值为Hash1。当配置的服务UP时,将请求发送到Service-HTTP-1。如果Service-HTTP-1关闭,Citrix ADC设备将计算服务数量的最后一个日志的哈希值。然后设备选择哈希值最高的服务,比如service - http -2。下图说明了这个过程。

图2。哈希方法的实体模型

哈希模型

请注意

如果Citrix ADC设备无法通过使用散列方法选择服务,则默认使用最小连接方法为传入请求选择服务。通过在低流量期间删除服务来调整服务器池,使缓存能够重新填充,而不会影响负载平衡设置的性能。

一致性哈希算法

一致性哈希算法用于实现无状态持久性。基于哈希的LB方法使用以下三种一致哈希算法之一:

  • 缓存阵列路由协议(CARP)

    CARP算法用于跨多个代理缓存服务器的负载均衡HTTP请求。缺省情况下,启用该算法。

  • Prime re - shuffleassisted CARP (PRAC)

    Citrix ADC设备使用专有的PRAC算法来提供统一的流量分配。

  • 跳表辅助环哈希(JARH)

    Citrix ADC设备使用专有的JARH算法来提供流量的一致性和均匀分布。这个算法使用散列指。手指数量越多,流量分布越好。然而,增加手指的数量也会增加内存的使用。

通过命令行选择一致性哈希算法

设置lb参数[- lbhashalgalgorithm [DEFAULT|JARH|PRAC] [-lbHashFingers ] 

例子:

设置lb参数- lbhashhashgalgorithm jh -lbHashFingers 10 

参数:

  • lbHashAlgorithm-指定用于以下基于哈希的负载均衡方法的哈希算法:

    • URL散列法
    • 域哈希法
    • 目的IP哈希方法
    • 源IP散列法
    • 源IP目的IP哈希方式
    • Source IP源端口哈希方法
    • 呼叫ID散列法
    • 令牌方法

    取值范围:DEFAULT、PRAC、jh。默认值:DEFAULT

  • lbHashFingers-指定手指的数量将用于PRAC和基于哈希的LB方法的JARH算法。增加手指的数量可以更好地分配流量,但会消耗额外的内存。

    缺省值:256最小值:1最大值:1024

使用GUI选择一致性哈希算法

  1. 导航到“流量管理>负载均衡>修改负载均衡参数”
  2. 配置负载均衡参数窗格,根据您的需求为以下字段输入适当的值:

    • 炸土豆条
    • LB哈希算法字段时,从下拉菜单中选择一致性哈希算法。

    LB散列算法

URL哈希方法

当您将Citrix ADC设备配置为使用URL哈希方法对服务进行负载平衡时,为了选择一个服务,设备会生成传入请求中呈现的HTTP URL的哈希值。如果哈希值选择的服务为DOWN,则该算法具有从活动服务列表中选择另一个服务的方法。设备缓存URL的散列值,当它接收到使用相同URL的后续请求时,它将它们转发到相同的服务。如果设备不能解析传入的请求,它将使用轮询方法来实现负载平衡,而不是URL哈希方法。

为了生成哈希值,设备使用特定的算法并考虑URL的一部分。默认情况下,设备会考虑URL的前80个字节。如果URL长度小于80字节,则使用完整的URL。您可以指定不同的长度。哈希长度为1 ~ 4096字节。通常,如果使用长url,其中只有几个字符不同,则最好将散列长度设置得尽可能高,以确保更均匀的负载分布。

考虑一个场景,其中三个服务Service-HTTP-1、Service-HTTP-2和Service-HTTP-3绑定到一个虚拟服务器,并且在虚拟服务器上配置的负载均衡方法是URL哈希方法。虚拟服务器收到请求,URL的哈希值为U1。设备选择Service-HTTP-1。如果Service-HTTP-1 DOWN,设备选择Service-HTTP-2。

下图说明了这个过程。

图3。URL哈希是如何操作的

URL-Hashing

如果Service-HTTP-1和Service-HTTP-2都DOWN,设备将带有散列值U1的请求发送到Service-HTTP-3。

如果Service-HTTP-1和Service-HTTP-2宕机,生成哈希URL1的请求将被发送到Service-HTTP-3。如果这些服务都UP,生成散列URL1的请求按照如下方式分布:

  • 如果Service-HTTP-2已启动,则将请求发送到Service-HTTP-2。
  • 如果Service-HTTP-1已启动,则将请求发送到Service-HTTP-1。
  • 如果Service-HTTP-1和Service-HTTP-2同时启动,则将请求发送到Service-HTTP-1。

配置URL哈希方法,请参见配置不包含策略的负载均衡方式.选择负载均衡方式为“URL Hash”,Hash长度为生成该Hash值所使用的字节数。

域哈希方法

配置为域哈希方式的负载均衡虚拟服务器使用HTTP请求中域名的哈希值来选择服务。域名取自HTTP请求的传入URL或主机头。如果域名同时出现在URL和Host标头中,则设备将优先考虑URL。

如果您配置了域名散列,并且传入的HTTP请求不包含域名,则Citrix ADC设备默认为该请求的轮询方法。

哈希值计算使用名称长度或哈希长度值,取较小者。默认情况下,Citrix ADC设备从域名的前80个字节计算哈希值。要在计算哈希值时指定域名中的不同字节数,可以将hashLength参数(配置实用程序中的哈希长度)设置为1到4096(字节)之间的值。

要配置域哈希方法,请参见配置不包含策略的负载均衡方式

目的IP哈希方法

配置为目的IP哈希方式的负载均衡虚拟服务器,使用目的IP的哈希值选择服务器。您可以屏蔽目的IP地址,以指定在哈希值计算中使用它的哪一部分,以便来自不同网络但目的地为同一子网的请求都被定向到同一服务器。该方式支持基于IPv4和ipv6的目的服务器。

这种负载平衡方法适合与缓存重定向特性一起使用。

配置IPv4目的服务器的目的IP哈希方法时,通过配置netMask参数。为IPv6目的服务器配置此方法,使用v6NetMaskLen参数。在配置实用程序中,当您选择时,将出现用于设置这些参数的文本框目的IP哈希方法

配置目的IP哈希方法,请参见配置不包含策略的负载均衡方式

源IP哈希方法

配置源IP哈希方式的负载均衡虚拟服务器,使用客户端IPv4或IPv6地址的哈希值选择服务。为了将属于特定网络的源IP地址的所有请求定向到特定的目的服务器,必须对源IP地址进行掩码。对于IPv4地址,使用netMask参数。对于IPv6地址,使用v6NetMaskLength参数。

配置源IP哈希方式请参见配置不包含策略的负载均衡方式

源IP目的IP哈希方法

配置为源IP目的IP哈希方式的负载均衡虚拟服务器,使用源IP地址和目的IP地址(IPv4或IPv6)的哈希值来选择服务。哈希是对称的。无论源ip和目的ip的顺序如何,哈希值都是相同的。这确保了从特定客户端流向相同目的地的所有数据包都被定向到相同的服务器。

要将属于特定网络的所有请求定向到特定的目标服务器,必须掩码源IP地址。对于IPv4地址,使用netMask参数。对于IPv6地址,使用v6NetMaskLength参数。

配置源IP目的IP哈希方式请参见配置不包含策略的负载均衡方式

源IP源端口哈希方法

配置为源IP源端口哈希方式的负载均衡虚拟服务器使用源IP (IPv4或IPv6)和源端口的哈希值选择服务。这确保了特定连接上的所有数据包都被定向到相同的服务。

该方法用于连接镜像和防火墙负载均衡。有关连接镜像的详细信息,请参见连接故障转移

要将属于特定网络的所有请求定向到特定的目标服务器,必须掩码源IP地址。对于IPv4地址,使用netMask参数。对于IPv6地址,使用v6NetMaskLength参数。

配置源IP源端口哈希方式请参见配置不包含策略的负载均衡方式

呼叫ID哈希方法

配置为呼叫标识哈希方法的负载均衡虚拟服务器使用SIP头中的呼叫标识哈希值来选择服务。因此,特定SIP会话的数据包总是定向到相同的代理服务器。

该方法适用于SIP负载均衡。有关SIP负载均衡的详细信息,请参见监控SIP业务

配置主叫ID哈希方法请参见配置不包含策略的负载均衡方式

散列方法