Citrix ADC

散列方法

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

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

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

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

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

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

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

请注意

从Citrix ADC 13.0版本开始构建79。支持PRAC (Prime Re-Shuffled Assisted CARP)和JARH (Jump table Assisted Ring Hash)一致性哈希算法。一致的散列算法确保在负载均衡设置中添加服务或从负载均衡设置中删除服务时,或在负载均衡设置中的服务抖动事件期间,将中断最小化。详情请参见一致的哈希算法

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

哈希方法如何分配请求

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

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

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

哈希模型

请注意

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

一致的哈希算法

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

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

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

  • 主重洗牌辅助CARP (PRAC)

    Citrix ADC设备使用专有的PRAC算法来提供均匀的流量分布。

  • 跳跃表辅助环哈希(JARH)

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

命令行方式选择一致性哈希算法

set lb parameter [-lbHashAlgorithm [DEFAULT|JARH|PRAC] [-lbHashFingers ] 

例子:

设置lb参数-lbHashAlgorithm JARH -lbHashFingers 10 

参数:

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

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

    取值:DEFAULT、PRAC、JARH。默认值:DEFAULT

  • lbHashFingers-指定在基于哈希的LB方法的PRAC和JARH算法中使用的手指数量。增加手指的数量可以以额外的内存为代价更好地分配流量。

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

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

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

    • LB散列手指
    • LB哈希算法字段时,从下拉菜单中选择一致的哈希算法。

    LB哈希算法

URL哈希方法

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

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

假设有这样一个场景,服务- http -1、服务- http -2和服务- http -3三个服务绑定到一个虚拟服务器上,虚拟服务器上配置的负载均衡方法是URL散列方法。虚拟服务器接收一个请求,URL的哈希值为U1。Appliance选择Service-HTTP-1。如果“Service-HTTP-1”为DOWN,则设备选择“Service-HTTP-2”。

下面的图表说明了这个过程。

图3。URL哈希如何运行

URL-Hashing

如果服务- http -1和服务- http -2都DOWN,设备将哈希值U1的请求发送给服务- http -3。

如果Service-HTTP-1和Service-HTTP-2关闭,生成URL1散列的请求将被发送到Service-HTTP-3。如果这些服务是UP的,生成散列URL1的请求将以以下方式分布:

  • 如果Service-HTTP-2处于up状态,则向Service-HTTP-2发送请求。
  • 如果Service-HTTP-1处于up状态,则向Service-HTTP-1发送请求。
  • 如果Service-HTTP-1和Service-HTTP-2同时启动,则向Service-HTTP-1发送请求。

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

域哈希法

配置为使用域哈希方法的负载均衡虚拟服务器使用HTTP请求中域名的哈希值来选择服务。域名取自传入URL或HTTP请求的Host报头。如果域名同时出现在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源端口哈希方法,请参见配置不包含策略的负载均衡方式

Call ID哈希方法

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

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

若要配置呼叫标识哈希方法,请参见配置不包含策略的负载均衡方式

散列方法