Citrix ADC

哈希方法

基于某些连接信息或标头信息的哈希值的负载平衡方法构成了Citrix ADC设备的大多数负载平衡方法。哈希比它们基于的信息更短,更易于使用,同时保留足够的信息,以确保没有两个不同的信息生成相同的哈希,因此彼此混淆。

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

Citrix ADC设备提供以下哈希方法:

  • 网址哈希方法
  • 域哈希方法
  • 目标IP地址哈希方法
  • 源IP地址哈希方法
  • 源IP目标IP哈希方法
  • 源IP地址源端口哈希方法
  • 呼叫id哈希方法
  • 令牌方法

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

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

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

注意

从Citrix ADC 13.0版本构建79。x开始,支持'重新洗牌辅助鲤鱼(进行)和跳表辅助环哈希(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方法使用以下三种一致的哈希算法之一:

  • 缓存阵列路由协议(鲤鱼)

    鲤鱼算法用于跨多个代理缓存服务器对HTTP请求进行负载平衡。默认情况下启用此算法。

  • Prime重新洗牌辅助CARP(PRAC)

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

  • 跳表辅助环哈希(jarh)

    Citrix ADC设备使用专有的JARH算法来提供流量的一致性和统一分配。该算法使用哈希手指。越多的手指可以更好地分配流量。但是,增加手指数也会增加内存使用量。

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

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

示例:

设置lb参数-lbHashAlgorithm JARH -lbHashFingers 10 

论点:

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

    • 网址哈希方法
    • 域哈希方法
    • 目标IP地址哈希方法
    • 源IP地址哈希方法
    • 源IP目标IP哈希方法
    • 源IP地址源端口哈希方法
    • 呼叫id哈希方法
    • 令牌方法

    可能的值:默认值,prac, jarh默认值:默认

  • lbhashFfinger-为基于哈希的lb方法指定在prac和jarh算法中使用的手指数。增加手指数可以在牺牲额外内存的情况下更好地分配流量。

    默认值:256 最小值:1 最大值:1024

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

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

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

    Lb哈希算法

网址哈希方法

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

为了生成哈希值,设备使用特定算法并考虑url的一部分。默认情况下,设备会考虑url的前80个字节。如果url小于80字节,则使用完整的url。您可以指定不同的长度。哈希长度可以是 1 字节到 4096 个字节。一般来说,如果在只有少数字符不同的情况下使用长URL,那么最好尽可能高的哈希长度,以确保更均匀的负载分配。

考虑以下情况:三个服务(Service-HTTP-1, Service-HTTP-2和Service-HTTP-3)绑定到虚拟服务器,并且在虚拟服务器上配置的负载平衡方法是URL哈希方法。虚拟服务器收到请求,url的哈希值为u1。设备选择服务-http-1。如果Service-HTTP-1为"关闭",则设备选择" Service-HTTP-2 "。

下图说明了此过程。

图 3.网址哈希如何操作

网格哈希

如果服务HTTP-1和年代服务-HTTP-2都处于关闭状态,则设备会将哈希值为U1的请求发送到SERVIC-HTTP-3。

如果Service-HTTP-1和Service-HTTP-2关闭,则生成哈希URL1的请求将发送到Service-HTTP-3。如果这些服务已启动,则生成哈希url 1的请求将按以下方式分配:

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

要配置url哈希方法,请参阅配置不包含策略的负载平衡方法。选择负载平衡方法作为URL哈希值,并将哈希长度设置为用于生成哈希值的字节数。

域哈希方法

配置为使用域哈希方法的负载平衡虚拟服务器使用HTTP请求中域名的哈希值来选择服务。域名取自HTTP请求的传入url或主机标头。如果域名同时出现在URL和主机标头中,则设备将优先选择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地址,请使用网络掩码参数。对于IPv6地址,请使用v6NetMaskLength参数。

要配置源IP哈希方法,请参阅配置不包含策略的负载平衡方法

源IP目标IP哈希方法

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

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

要配置源IP目标IP哈希方法,请参阅配置不包含策略的负载平衡方法

源IP地址源端口哈希方法

配置为使用源IP源端口哈希方法的负载平衡虚拟服务器使用源IP (IPv4或IPv6)的哈希值和源端口来选择服务。这可确保将特定连接上的所有数据包定向到同一服务。

此方法用于连接镜像和防火墙负载平衡。有关连接镜像的更多信息,请参阅连接故障转移

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

要配置源IP源端口哈希方法,请参阅配置不包含策略的负载平衡方法

呼叫id哈希方法

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

此方法适用于sip负载平衡。有关sip负载平衡的更多信息,请参阅监视sip服务

要配置呼叫id哈希方法,请参阅配置不包含策略的负载平衡方法

哈希方法