散列方法

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

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

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

  • URL 哈希方法
  • 域哈希方法
  • 目标 IP 哈希方法
  • 源 IP 哈希方法
  • 源 IP 目标 IP 哈希方法
  • 源 IP 源端口哈希方法
  • 呼叫 ID 哈希方法
  • 令牌方法

这些哈希算法可确保将服务添加到负载平衡设置中或从中删除时的干扰降至最低。他们中的大多数计算两个哈希值:

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

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

图 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 设备无法使用哈希方法选择服务,则默认使用最小连接方法来为传入请求选择服务。您应该通过在流量较低期间移除服务来调整服务器池,以便在不影响负载平衡设置的性能的情况下重新填充缓存。

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 为“关闭”,则设备选择“Service-HTTP-2”。

下图说明了此过程。

图 3. URL 哈希如何操作

网格哈希

如果 Service-HTTP-1 和 Service-HTTP-2 都处于关闭状态,则设备将具有哈希值 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,并将哈希长度设置为用于生成哈希值的字节数。

域哈希方法

配置为使用域哈希方法的负载平衡虚拟服务器使用 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 地址,请使用网络掩码参数。对于 IPv6 地址,请使用 V6NetMASK 长度参数。

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

源 IP 目标 IP 哈希方法

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

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

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

源 IP 源端口哈希方法

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

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

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

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

呼叫 ID 哈希方法

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

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

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