Citrix ADC

配置 GSLB 服务组

通过服务组,您可以像单个服务一样轻松地管理一组服务。例如,如果为某个服务组启用或禁用某个选项(如压缩、运行状况监视或正常关闭),则该选项将为该服务组的所有成员启用或禁用。

创建服务组后,您可以将其绑定到虚拟服务器,并可以向该组添加服务。您还可以将监视器绑定到服务组。

重要说明

如果负载平衡虚拟服务器位于 GSLB 节点本身或位于子节点(在父子部署中),并且没有监视器绑定到 GSLB 服务,请确保以下内容:

GLSB 服务组 IP 地址、端口号和协议匹配服务所代表的虚拟服务器。否则,服务状态标记为“关闭”。

Citrix ADC 支持以下类型的 GSLB 服务组。

  • 基于 IP 地址的服务组
  • 基于域名的服务组
  • 基于域名的自动缩放服务组

基于 GSLB 域名的自动缩放服务组

Citrix ADC 混合和多云全局服务器负载平衡 (GSLB) 解决方案使客户能够在混合云、多云和本地的多个数据中心之间分配应用流量。Citrix ADC GSLB 解决方案支持各种负载均衡解决方案,如 Citrix ADC 负载平衡器、适用于 Amazon Web Services (AWS) 的弹性负载均衡 (ELB) 和其他第三方负载平衡器。此外,GSLB 解决方案将执行全局负载平衡,即使独立管理 GSLB 和负载平衡层也是如此。

在云部署中,在出于管理目的访问负载平衡解决方案时,将为用户提供域名作为参考。建议外部实体不要使用这些域名解析到的 IP 地址。此外,负载平衡层会根据负载向上或向下扩展,并且不能保证 IP 地址是静态的。因此,建议使用域名来引用负载平衡端点,而不是 IP 地址。这需要使用域名而不是 IP 地址引用 GSLB 服务,并且它必须使用为负载平衡图层域名返回的所有 IP 地址,并且在 GSLB 中具有相同的表示。

要在引用负载平衡端点时使用域名而不是 IP 地址,您可以将基于域名的服务组用于 GSLB。

监视基于 GSLB 域名的服务组

Citrix ADC 设备具有两个内置监视器,用于监视基于 TCP 的应用程序:TCP 默认和 Ping 默认。TCP 默认监视器绑定到所有 TCP 服务,并且 Ping 默认监视器绑定到所有非 TCP 服务。默认情况下,内置监视器绑定到 GSLB 服务组。但是,建议将特定于应用程序的监视器绑定到 GSLB 服务组。

将触发监视器选项设置为 MEPDON 的建议

“触发监视器”选项可用于指示 GSLB 站点是否必须始终使用监视器,或者在衡量指标交换协议 (MEP) 为“关闭”时使用监视器。

默认情况下,“触发监视器”选项设置为“始终”。

当“触发监视器”选项设置为“始终”时,每个 GSLB 节点都会独立触发监视器。如果每个 GSLB 节点独立触发监视器,则每个 GSLB 节点可能会在不同的 GSLB 服务集上运行。这可能会导致在这些 GSLB 节点上登录的 DNS 请求的 DNS 响应出现差异。此外,如果每个 GSLB 节点都独立监视,那么到达负载平衡器实体的监视探测数量会增加。持久性条目在 GSLB 节点之间也变得不兼容。

因此,建议将 GSLB 站点实体上的触发监视器选项设置为 MEPDown。当“触发监视器”选项设置为 MEPDN 时,负载平衡域解析和监视所有权在于本地 GSLB 节点。当“触发监视器”选项设置为 MEPDown 时,负载平衡域解析和后续监视由 GSLB 服务组的本地 GSLB 节点完成。然后使用指标交换协议 (MEP) 将结果传播到参与 GSLB 的所有其他节点。

此外,无论何时更新与负载平衡域关联的 IP 地址集,都会通过 MEP 进行通知。

GSLB 服务组的限制

  • 对于负载平衡域,DNS 响应中返回的 IP 地址通常是公有 IP 地址。解析负载平衡域时,无法动态应用私有 IP 地址。因此,基于 GSLB 域名的自动缩放服务组 IP 端口绑定的公有 IP 端口和私有 IP 端口是相同的。无法为基于域名的自动缩放服务组显式设置这些 参数。
  • GSLB 服务组不支持站点持久性、DNS 视图和群集。

使用 CLI 配置和管理 GSLB 服务组

操作 CLI 命令
添加 GSLB 服务组 add gslb serviceGroup <serviceGroupName>@ <serviceType> [-autoScale ( DISABLED | DNS )] -siteName <string>
  示例:add gslb serviceGroup Service-Group-1 http -siteName Site1 -autoScale DNS
将 GSLB 服务组绑定到虚拟服务器 bind gslb serviceGroup <serviceGroupName> ((<IP>@ <port>) | <serverName>@ | ((-monitorName <string>@
  示例:bind gslb serviceGroup Service-Group-1 203.0.113.2; bind gslb serviceGroup Service-Group-1 S1 80; bind gslb serviceGroup Service-Group-1 -monitorName Mon1
将 GSLB 服务组解除绑定到虚拟服务器的步骤 unbind gslb serviceGroup <serviceGroupName> ((<IP>@ <port>) | <serverName>@ | -monitorName <string>@)
  示例:unbind gslb serviceGroup Service-Group-1 -monitorName Mon1
为 GSLB 服务组设置参数 set gslb serviceGroup <serviceGroupName>@ [(<serverName>@ <port> [-weight <positive_integer>] [-hashId <positive_integer>] [-publicIP <ip_addr|ipv6_addr|*>] [-publicPort <port>]) | -maxClient <positive_integer> | -cip ( ENABLED | DISABLED ) | <cipHeader> | -cltTimeout <secs> | -svrTimeout <secs> | -maxBandwidth <positive_integer> | -monThreshold <positive_integer> | -downStateFlush ( ENABLED | DISABLED )] [-monitorName <string> -weight <positive_integer>] [-healthMonitor ( YES | NO )] [-comment <string>] [-appflowLog ( ENABLED | DISABLED )]
从 GSLB 服务组取消设置参数 unset gslb serviceGroup <serviceGroupName>@ [<serverName>@ <port> [-weight] [-hashId] [-publicIP] [-publicPort]] [-maxClient] [-cip] [-cltTimeout] [-svrTimeout] [-maxBandwidth] [-monThreshold] [-appflowLog] [-monitorName] [-weight] [-healthMonitor] [-cipHeader] [-downStateFlush] [-comment]
启用 GSLB 服务组 enable gslb serviceGroup <serviceGroupName>@ [<serverName>@ <port>]
  示例:enable gslb serviceGroup SG1 S1 80
禁用 GSLB 服务组的步骤 disable gslb serviceGroup <serviceGroupName>@ [<serverName>@ <port>] [-delay <secs>] [-graceFul ( YES /| NO )]
  示例:disable gslb serviceGroup SRG2 S1 80
  注意:必须禁用的服务组必须是 DBS 服务组,而不是自动缩放服务组。
删除 GSLB 服务组 rm gslb serviceGroup <serviceGroupName>
  示例:rm gslb serviceGroup Service-Group-1
查看 GSLB 服务组的统计信息 stat gslb serviceGroup [<serviceGroupName>]
  示例:stat gslb serviceGroup Service-Group-1
查看 GSLB 服务组的属性 show gslb serviceGroup [<serviceGroupName> -includeMembers]
  示例: show gslb serviceGroup SG1; show gslb serviceGroup -includeMembers

对现有 GSLB CLI 命令的更改

下表列出了在引入 GSLB 服务组后对现有 GSLB 命令所做的一些更改。

CLI 命令 更改
bind gslb vserver 服务组名称将添加到绑定命令中。
  示例:bind gslb vserver <name> ((-serviceName <string> [-weight <positive_integer>] ) | <serviceGroupName>@ | | (-domainName <string> [-TTL <secs>] [-backupIP<ip_addr|ipv6_addr|*>] [-cookieDomain <string>] [-cookieTimeout <mins>][-sitedomainTTL <secs>]) | (-policyName <string>@ [-priority<positive_integer>] [-gotoPriorityExpression <expression>] [-type REQUEST | RESPONSE )]))
unbind gslb vserver 服务组将添加到取消绑定命令中。
示例: unbind gslb vserver <name> (-serviceName <string> <serviceGroupName> @ /(-domainName <string> [-backupIP] [-cookieDomain]) | -policyName <string>@)
show gslb site 执行此命令时,也会显示 GSLB 服务组。
show gslb vs 执行此命令时,将显示 GSLB 服务组。
stat gslb vs 执行此命令时,也会显示 GSLB 服务组统计信息。
show lb monitor bindings 执行此命令时,也会显示 GSLB 服务组绑定。

使用 GUI 配置 GSLB 服务组

  1. 导航到 流量管理 > GSLB > 服务组
  2. 创建服务组并将自动扩展模式设置为 DNS。

为 GSLB 服务组配置站点持久性

您可以为基于 IP 地址和基于域名的服务组配置站点持久性。基于域名的自动缩放服务组不支持站点持久性。

  • 对于连接代理持久性,您不必设置站点前缀。

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

set gslb service group <serviceGroupName> [-sitePersistence <sitePersistence>]
  • 对于 HTTP 重定向持久性,必须首先为服务组成员设置站点前缀,然后为服务组设置 HTTPreDirect 持久性参数。

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

set gslb servicegroup <serviceGroupName>  <serviceGroup member name|Ip> <port>  [-sitePrefix <string>]

set gslb servicegroup <serviceGroupName> [-sitePersistence <sitePersistence>]

示例:

  • 连接代理持久性

    set gslbservicegroup sg1 -sitePersistence connectionProxy

  • HTTPRedirect persistence

    set gslb servicegroup sg2 test1 80 -sitePrefix vserver-GSLB-1

    set gslb servicegroup sg2 -sitePersistence hTTPRedirect

  1. 导航到 流量管理 > GSLB > 服务组 ,然后选择要为站点持久性配置的服务组(例如,服务组 GSLB-1)。
  2. 单击站点持久性部分,并设置符合您要求的持久性。

提示

有关 GSLB 服务组的部署方案和示例配置,请参阅以下主题:

配置 GSLB 服务组