Citrix ADC

配置持久连接

持久性可确保将针对特定域名的一系列客户端请求发送到同一数据中心,而不是进行负载平衡。如果为特定域配置了持久性,则该持久性优先于配置的 GSLB 方法。持久性对于处理电子商务(如购物卡使用)的部署非常有用,其中服务器需要维护连接状态以跟踪事务。若要保持连接状态,必须在虚拟服务器上配置持久性。配置持久性后,Citrix ADC 设备会选择一个数据中心来处理客户端请求,并为所有后续 DNS 请求转发所选数据中心的 IP 地址。如果配置的持久性应用于关闭的站点,Citrix ADC 设备将使用 GSLB 方法来选择新站点,并且新站点将成为持久性以满足来自客户端的后续请求。

GSLB 虚拟服务器负责基于 DNS 的站点持久性,并控制远程 GSLB 服务的站点持久性。Citrix ADC 设备支持基于源 IP 地址或 HTTP Cookie 的持久性。

当您在延迟时间内将物理服务关闭时,物理服务将进入过渡断服务 (TROFS) 状态。只要服务处于 TROFS 状态,就支持站点持久性。也就是说,如果同一客户端在某个服务标记为 TROFS 之后的指定延迟时间内发送相同服务的请求,则相同的 GSLB 站点(数据中心)为该请求提供服务。

注意:如果连接代理被指定为站点持久性方法,并且您还想配置物理服务器的持久性,请不要配置 SOURCEIP 持久性。代理连接时,将使用设备拥有的 IP 地址,而不是客户端的实际 IP 地址。在负载平衡虚拟服务器上配置 cookie 持久性或基于规则的持久性等方法。

根据源 IP 地址配置持久性

对于源 IP 持久性,当数据中心收到 DNS 请求时,Citrix ADC 设备首先在持久性表中查找条目,如果存在本地 DNS 服务器的条目且该条目中提到的服务器已配置,则该服务器的 IP 地址将作为 DNS 响应发送。

对于来自特定客户端的第一个请求,Citrix ADC 设备会为请求选择最佳 GSLB 站点,并将其 IP 地址发送到客户端。由于为客户端的源 IP 地址配置了持久性,因此该客户端或同一 IP 子网中的另一个本地 DNS 服务器的所有后续请求都会发送为第一个请求选择的 GSLB 站点的 IP 地址。

对于基于源 IP 地址的持久性,必须在所有数据中心的 GSLB 虚拟服务器上配置相同的持久性标识符集。持久性标识符是数据中心用于标识特定 GSLB 虚拟服务器的数字。Cookie 传输持久性标识符,使 Citrix ADC 设备能够识别域,以便它能够将所有适当的请求转发到同一域。启用持久性后,持久性信息也会作为衡量指标交换的一部分进行交换。

为了使 Citrix ADC 设备支持跨站点的持久性,必须在所有参与站点的 GSLB 虚拟服务器上启用持久性。在网络标识符上使用源 IP 地址持久性时,必须配置子网掩码。对于任何域,持久性优先于任何其他配置的 GSLB 方法。

使用命令行界面配置基于源 IP 地址的持久性

在命令提示窗口中,键入:

set gslb vserver <name> -persistenceType (SOURCEIP|NONE) -persistenceId <positive_integer> [-persistMask <netmask>] –[timeout <mins>]

示例:

set gslb vserver vserver-GSLB-1 -persistenceType SOURCEIP -persistenceId 23 -persistMask 255.255.255.255 –timeout 2

使用配置实用程序配置基于源 IP 地址的持久性

  1. 导航到流量 管理 > GSLB > 虚拟 服务器,然后双击要更改其方法的 GSLB 虚拟服务器(例如,虚拟服务器 GSLB-1)。
  2. 单击持 久性 部分,然后从持 久性 下拉列表中选择 SOURCEIP 并设置以下参数:
    • 持久性 ID - persistenceID
    • 超时-超时
    • IPv4 网络掩码或 IPv6 掩码长度 — 永久掩码

Citrix ADC 设备通过使用连接代理和 HTTP 重定向在 HTTP 请求级别提供持久性。使用这些持久化方法,设备使用 HTTP cookie(称为“站点 cookie”)将客户端重新连接到同一服务器。设备会在第一个 HTTP 响应中插入站点 cookie。

站点 cookie 包含有关客户端具有持久连接的所选 GSLB 服务的信息。Cookie 过期取决于 Citrix ADC 设备上配置的 Cookie 超时。如果虚拟服务器名称在所有站点上都不相同,则必须使用持久性标识符。插入的饼干符合 RFC 2109 的要求。

当 Citrix ADC 设备通过发送所选 GSLB 站点的 IP 地址响应客户端 DNS 请求时,客户端会向该 GSLB 站点发送 HTTP 请求。该 GSLB 站点中的物理服务器将站点 cookie 添加到 HTTP 头,并且连接持久性有效。

如果客户端缓存中的 DNS 条目过期,然后客户端发送另一个 DNS 查询并定向到不同的 GSLB 站点,则新的 GSLB 站点使用客户端请求标头中存在的站点 cookie 来实现持久性。如果新站点的 GSLB 配置使用连接代理持久性,则新站点将创建与插入站点 cookie 的 GSLB 站点的连接,将客户端请求代理到原始站点,接收来自原始 GSLB 站点的响应,将响应中继回客户端,并关闭连接。如果 GSLB 配置使用 HTTP 重定向持久性,则新站点将请求重定向到最初插入 cookie 的站点。

注意:只能为本地服务配置连接代理持久性。但是,必须在为 GSLB 虚拟服务器配置的本地和远程 GSLB 服务上启用连接代理持久性。

满足以下条件时,将发生连接代理:

  • 请求从参与 GSLB 的域发送。域是从 URL/主机标头获取的。
  • 请求从本地 GSLB 服务发送,其公有 IP 地址与绑定到 GSLB 虚拟服务器的活动服务的公有 IP 地址匹配。
  • 本地 GSLB 服务已启用连接代理。
  • 该请求包含一个包含活动远程 GSLB 服务的 IP 地址的有效 cookie。

如果不满足其中一个条件,则不会发生连接代理,但是如果本地 GSLB 服务启用了连接代理,则会添加站点 Cookie:

  • 没有提供网站 cookie; 或
  • 网站 Cookie 指的是不是活动的 GSLB 远程服务的 IP 地址; 或
  • Cookie 是指接收请求的虚拟服务器的 IP 地址。

以下是使用连接代理站点 Cookie 的限制:

  • 网站 Cookie 不适用于非 HTTP (S) 协议。
  • 如果 HTTP 请求被发送到备份虚拟服务器,则虚拟服务器不会添加 cookie。
  • 如果需要 SSL 客户端身份验证,站点 Cookie 将不起作用。
  • 在本地站点,远程站点上 GSLB 服务的统计信息与远程站点上为该服务记录的统计信息不同。在本地站点,远程 GSLB 服务的统计信息略高于远程站点为同一服务记录的统计信息。

重定向持久性只能使用:

  • 用于 HTTP 或 HTTPS 协议。
  • 如果域名存在于请求中(URL 或 HOST 标头中),且域是 GSLB 域。
  • 当在备份 VIP 或处于关闭状态的 GSLB 本地服务上收到请求时。

注意

在 GSLB 父子配置中,即使未在子站点上配置 GSLB 服务,连接代理也按预期工作。但是,如果您有其他配置(如客户端身份验证、客户端 IP 地址插入或其他特定于 SSL 的要求),则必须在站点上添加显式 GSLB 服务并对其进行相应配置。

有关父子拓扑的更多信息,请参阅使用 MEP 协议的父子拓扑部署

在命令提示窗口中,键入:

set gslb service <serviceName> -sitePersistence (ConnectionProxy [-sitePrefix <prefix>] | HTTPredirect -sitePrefix <prefix>)

示例:

set gslb service service-GSLB-1 -sitePersistence ConnectionProxy
set gslb service service-GSLB-1 -sitePersistence HTTPRedirect -sitePrefix vserver-GSLB-1
  1. 导航到 流量 管理 > GSLB > 服务 ,然后选择要为站点持久性配置的服务(例如,Services GSLB-1)。
  2. 单击网站持久性部分,并根据 Cookie 设置持久性。

配置持久连接