配置基于域的服务组自动缩放

基于域的服务组由通过解析绑定到服务组的服务器的域名获取 IP 地址的成员组成。域名由您在设备上配置其详细信息的名称服务器解析。基于域的服务组还可以包括基于 IP 地址的成员。

基于域的服务器的名称解析过程可能会返回多个 IP 地址。DNS 响应中的 IP 地址数由名称服务器上为域名配置的地址 (A) 记录数决定。即使名称解析过程返回多个 IP 地址,也只有一个 IP 地址绑定到服务组。要向上扩展或向下扩展服务组,您需要分别手动绑定和解除绑定基于域的其他服务器到服务组之间的绑定和绑定。

但是,您可以将基于域的服务组配置为基于域的服务器的 DNS 名称服务器返回的完整 IP 地址集自动缩放。要配置自动缩放,请在将基于域的服务器绑定到服务组时启用自动缩放选项。以下是配置自动缩放的基于域的服务组的步骤:

  • 添加用于解析域名的名称服务器。有关在设备上配置名称服务器的更多信息,请参阅添加名称服务器
  • 添加基于域的服务器。有关添加基于域的服务器的信息,请参阅添加服务器
  • 添加服务组并将基于域的服务器关联到服务组,并将自动缩放选项设置为 DNS。有关添加服务组的信息,请参阅配置服务组

当基于域的服务器绑定到服务组并且在绑定上设置了自动缩放选项时,UDP 监视器和 TCP 监视器将自动创建并绑定到基于域的服务器。两个显示器作为解析器。默认情况下,TCP 监视器处于禁用状态,设备使用 UDP 监视器将 DNS 查询发送到名称服务器以解析域名。如果 DNS 响应被截断(将 TC 标志设置为 1),则设备回退到 TCP 并使用 TCP 监视器通过 TCP 发送 DNS 查询。此后,设备继续仅使用 TCP 监视器。

来自域名服务器的 DNS 响应可能包含域名的多个 IP 地址。设置了自动缩放选项后,设备会使用默认监视器轮询每个 IP 地址,然后在服务组中仅包括那些已启动且可用的 IP 地址。IP 地址记录过期后(如果设备已回到使用 TCP 监视器),UDP 监视器(或 TCP 监视器,如果设备回到使用 TCP 监视器)会查询名称服务器以获取域解析,并在服务组中包含任何新 IP 地址。如果作为服务组一部分的 IP 地址不存在于 DNS 响应中,则设备会在正常关闭到组成员的现有连接后从服务组中删除该地址,在此过程中,设备不允许与该成员建立任何新连接。如果在过去成功解析的域名导致 NXDOMAIN 响应,则将删除与该域关联的所有服务组成员。

静态(基于 IP 地址的)成员和动态扩展基于域的成员可以在服务组中共存。您还可以使用自动缩放选项集将具有不同域名的成员绑定到服务组。但是,与服务组关联的每个域名在服务组中必须是唯一的。必须为要用于自动服务组扩展的每个基于域的服务器启用自动缩放选项。如果一个或多个域通用 IP 地址,则该 IP 地址仅添加到服务组中一次。

重要

  • 群集部署中支持 DNS 自动缩放。
  • 群集部署中不支持自动缩放服务组的路径监视。

使用命令行界面将服务组配置为自动缩放

在命令提示符下,键入以下命令以配置服务组并验证配置:

add serviceGroup <serviceGroupName> -autoScale (YES | NO)

show serviceGroup <serviceGroupName>

示例

在以下示例中,server1 是基于域的服务器。DNS 响应包含多个 IP 地址。五个地址可用,并将其添加到服务组中。

> add serviceGroup servGroup server1 80 -autoScale YES
 Done
> sh servicegroup servGroup
       servGroup - HTTP
        State: ENABLED  Monitor Threshold : 0
              . . .
              . . .
        1)   192.0.2.31:80   State: UP       Server Name: server1 (Auto scale)    Server ID: None Weight: 1

                Monitor Name: tcp-default       State: UP
                Probes: 2       Failed [Total: 0 Current: 0]
                Last response: Success - TCP syn+ack received.

        2)   192.0.2.32:80   State: UP       Server Name: server1 (Auto scale)    Server ID: None Weight: 1

                Monitor Name: tcp-default       State: UP
                Probes: 2       Failed [Total: 0 Current: 0]
                Last response: Success - TCP syn+ack received.

        3)   192.0.2.36:80   State: UP       Server Name: server1 (Auto scale)    Server ID: None Weight: 1

                Monitor Name: tcp-default       State: UP
                Probes: 2       Failed [Total: 0 Current: 0]
                Last response: Success - TCP syn+ack received.

        4)   192.0.2.55:80   State: UP       Server Name: server1 (Auto scale)    Server ID: None Weight: 1

                Monitor Name: tcp-default       State: UP
                Probes: 2       Failed [Total: 0 Current: 0]
                Last response: Success - TCP syn+ack received.

        5)   192.0.2.80:80   State: UP       Server Name: server1 (Auto scale)    Server ID: None Weight: 1

                Monitor Name: tcp-default       State: UP
                Probes: 2       Failed [Total: 0 Current: 0]
                Last response: Success - TCP syn+ack received.
 Done

使用配置实用程序将服务组配置为自动缩放

  1. 导航到 流量管理 > 负载平衡 > 服务组
  2. 创建服务组,并将自动缩放模式设置为 DNS。

覆盖 TTL 值

注意:Citrix ADC 12.1 版本 51.xx 及更高版本支持此选项。

Citrix ADC 设备配置为在应用程序启动期间定期查询 DNS 服务器中与应用程序关联的 SRV 记录中的任何更新。默认情况下,此查询的周期取决于 SRV 记录中发布的 TTL。在微服务或云世界应用程序中,部署更动态。因此,代理必须更快地吸收对应用程序部署的任何更改。因此,建议用户将基于域的服务 TTL 参数显式设置为低于 SRV 记录 TTL 且最适合您的部署的值。您可以通过两种方法覆盖 TTL 值:

  • 将成员绑定到服务组时
  • 使用 set lb 参数命令全局设置 TTL 值。

如果在绑定服务组成员时同时配置 TTL 值,则绑定服务组成员时指定的 TTL 值优先。 如果绑定服务组成员时或在全局级别未指定 TTL 值,则 DBS 监视器间隔从 DNS 响应中的 TTL 值派生。

使用 CLI 覆盖 TTL 值

  • 要在绑定时覆盖 TTL 值,请在命令提示符处键入:

     bind serviceGroup <serviceGroupName> (<serverName> [-dbsTTL <secs>])
    

    示例:

     bind servicegroup svc_grp_1 web_serv -dbsTTL 10
    
  • 要全局覆盖 TTL 值,请在命令提示符处键入:

     set lb parameter [-dbsTTL <secs>]
    

    示例:

     set lb parameter -dbsTTL 15
    

使用 GUI 覆盖 TTL 值

要在绑定时覆盖 TTL 值,请执行以下操作:

  1. 导航到 流量管理 > 负载平衡 > 服务组

  2. 在“服务组”页面中,选择已创建的服务组,然后单击“编辑”。

  3. 负载平衡服务组 页面中,单击 服务组成员

  4. 在“服务组成员绑定”页面中,选择已创建的服务器,然后单击“编辑”。

  5. 基于域的服务 TTL中,输入 TTL 值。

要在全局级别覆盖 TTL 值,请执行以下操作:

  1. 导航到 流量管理 > 负载平衡 > 更改负载平衡参数

  2. 基于域的服务 TTL中,输入 TTL 值。

注意: 如果基于域的服务器 TTL 值设置为 0,则使用数据包中的 TTL 值。

为服务组和域名绑定指定不同的名称服务器

注意: Citrix ADC 12.1 版本 51.xx 及更高版本支持此选项。

您可以为特定组中的不同域名配置不同的名称服务器。在将 DBS 服务器绑定到服务组时,设置 Nameerver 参数是可选的。如果在将成员绑定到服务组时未指定名称服务器,则考虑全局配置的名称服务器。

使用 CLI 将服务器绑定到服务组时指定名称服务器

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

bind serviceGroup <serviceGroupName> (<serverName> [-nameServer <ip_addr>] [-dbsTTL <secs>])

示例

bind servicegroup svc_grp_1 web_serv  -ns.nameserver.com 10.102.27.155 -dbsTTL 10

使用 GUI 将服务器绑定到服务组时指定名称服务器

  1. 导航到 流量管理 > 负载平衡 > 服务组

  2. 在“服务组”页面中,选择已创建的服务组,然后单击“编辑”。

  3. 负载平衡服务组 页面中,单击 服务组成员

  4. 在“服务组成员绑定”页面中,选择已创建的服务器,然后单击“编辑”。

  5. 名称服务器中,指定绑定域的查询需要发送到的名称服务器名称。