Citrix ADC

域名系统如何支持 GSLB

域名系统 (DNS) 被视为使用客户端/服务器架构的分布式数据库。名称服务器是体系结构中的服务器,解析器是操作系统上安装的库例程的客户端,用于在网络上创建和发送查询。

下图显示了 DNS 的逻辑层次结构:

逻辑 DNS 层次结构

注意:

二级根服务器负责为 .com、.net、.org、.gov 域等内的名称服务器委托维护名称服务器到地址的映射。二级域中的每个域都负责维护较低级别组织域的名称服务器到地址映射。在组织层面,可以解析 www、FTP 和其他提供主机的服务的单个主机地址。

委派

当前 DNS 拓扑的主要目的是减轻在一个机构上维护所有地址记录的负担。这允许将组织名称空间委托给该特定组织。然后,组织可以进一步将其空间委托给组织内的子域。例如,在 citrix.com 下,您可以创建名为 sales.citrix.comeducation.citrix.com、和的子域名 support.citrix.com。相应的部门可以维护自己的一组名称服务器,这些名称服务器对其子域具有权威性,然后维护自己的主机名集到地址映射。没有一个部门负责维护所有 Citrix 地址记录。每个部门都可以更改地址和修改拓扑结构,而不是在更高级别的领域或组织强加更多的工作。

层次结构拓扑的好处

层次结构拓扑的一些好处包括:

  • 可扩展性
  • 在每个级别的名称服务器中添加缓存功能,其中 DNS 请求由对特定域不具有权威但可以为查询提供答案的主机提供服务,并减少拥塞和响应时间。
  • 缓存还可以为服务器故障创造冗余和弹性。如果一台名称服务器出现故障,仍有可能从拥有相同记录的最近缓存副本的其他服务器提供记录。

解析器

解析器是 DNS 系统中的客户端组件。在主机上运行的程序需要来自域名空间的信息,则使用解析器。解析器处理:

  • 查询名称服务器。
  • 解释响应(可能是资源记录或错误)。
  • 将信息返回给请求的程序。

解析器是一组库例程,它们被编译成 telnet、FTP 和 ping 等程序中。它们不是单独的进程。解决者可以将查询放在一起,发送查询,然后等待答案。如果在一定时间内没有回答,请再次发送(可能发送到辅助名称服务器)。这些类型的解析器被称为存根解析器。一些解析者增加了缓存记录和遵守生存时间 (TTL) 的功能。在 Windows 中,此功能可通过 DNS 客户端服务获得;可通过 “services.msc” 控制台查看。

名称服务器

名称服务器通常存储有关域名空间特定部分(称为区域)的完整信息。然后据说名称服务器对该区域拥有权限。它们也可以对多个区域具有权威性。

域和区域之间的区别是微妙的。域是包括子域在内的全套实体,而区域只是域中未委派给另一个名称服务器的信息。区域的一个示例是 citrix.com,如果该区域委派给子域中的另一个名称服务器,则该区域是一个单独的区域。 sales.citrix.com 在这种情况下,主 Citrix 区域可以包括 citrix.comit.citrix.comsupport.citrix.com。由于 sales.citrix.com 是委派的,所以它不是 citrix.com 名称服务器具有权威性的区域的一部分。下图显示了两个区域。

DNS 区域

要正确委托子域名,必须将子域的权限分配给不同的域名服务器。在前面的示例中, ns1.citrix.com 不包含有关 sales.citrix.com 子域的信息。相反,它包含指向对 ns1.sales.citrix.com 子域名具有权威性的名称服务器的指针。

根名称服务器和查询解析

根名称服务器知道对二级域有权威的所有名称服务器的 IP 地址。如果名称服务器自己的数据文件中没有关于给定域的信息,那么它只需要联系根服务器即可开始遍历 DNS 树结构的适当分支即可最终到达给定域。这涉及到向多个名称服务器发出一系列请求,以帮助树遍历以找到下一个权威的名称服务器,需要联系该服务器以获得进一步的解决方案。

下图显示了一个典型的 DNS 请求,假设在遍历期间没有缓存请求名称的记录。以下示例使用 Citrix 域的模拟。

DNS 区域

递归查询和非递归查询

上面的示例演示了可能发生的两种类型的查询。

  • 递归查询:解析程序与本地配置的 Name 服务器之间的查询是递归的。这意味着 Name 服务器接收查询并且在查询得到完全回答或返回错误之前不会对解析程序做出响应。如果名称服务器收到对查询的引用,那么名称服务器将跟随引用,直到名称服务器最终收到返回的答案(IP 地址)。

  • 非递归查询:本地配置的名称服务器对后续权威域级名称服务器进行的查询是非递归(或迭代)的。如果查询的名称服务器在其数据文件或缓存中包含答案,则立即通过引用到较低级别的权威服务器或查询的答案来响应每个请求。

缓存

尽管解决过程涉及到,并且可能需要向多台主机发出较小的请求,但速度很快。提高 DNS 解析速度的因素之一是缓存。每次 Name 服务器收到递归查询时,它可能必须与其他服务器进行通信,才能最终到达针对特定请求的适当权威服务器。它存储收到的所有信息以供将来参考。当下一个客户端发出类似的请求时,例如不同的主机但位于同一个域中,它已经知道对该域有权威的名称服务器,并且可以直接在那里发送请求,而不是从根名称服务器启动。

还可能会对负面响应进行缓存,例如查询不存在的主机。在这种情况下,服务器不得查询权威名称服务器以获取请求的域以确定主机不存在。为了节省时间,名称服务器只需检查缓存并用负面记录回复即可。

名称服务器不会无限期缓存记录,否则您永远无法更新 IP 地址。为避免同步问题,DNS 响应包含生效时间 (TTL)。此字段描述缓存可以存储记录的时间间隔,然后它必须放弃记录并向权威名称服务器核实是否有更新的记录。如果记录没有更改,使用 TTL 还允许执行 GSLB 的设备快速动态响应。

资源记录类型

各种 RFC 提供了 DNS 资源记录类型及其描述的完整列表。下表列出了常见的资源记录类型。

资源记录类型 说明 RFC
A 主机地址 RFC 1035
NS 权威的名称服务器 RFC 1035
MD 邮件目的地(过时-使用 MX) RFC 1035
MF 邮件转发器(过时-使用 MX) RFC 1035
cname 别名的规范名称 rFC 1035
SOA 标志着权威区域的开始 rFC 1035
WKS 众所周知的服务描述 RFC 1035
PTR A 域名指针 RFC 1035
hinfo 主机信息 rFC 1035
minfo 邮箱或邮件列表信息  
MX 邮件交换 rFC 1035
txT 文本字符串 rFC 1035
AAA IP6 地址 RFC 3596
SRV 服务器选择 RFC 2782]

GSLB 如何支持 DNS

GSLB 使用算法和协议来决定 DNS 查询必须发送哪个 IP 地址。GSLB 站点在地理位置上分布,每个站点都有一个 DNS 权威名称服务器,在 Citrix ADC 设备上作为服务运行。所涉及的各个站点的所有名称服务器对同一个域都具有权威性。每个 GSLB 域都是为其配置委派的子域。因此,GSLB Name 服务器具有权威性,可以使用各种负载平衡算法之一来决定返回哪个 IP 地址。

通过在父域数据库文件中添加 GSLB 域的名称服务器记录和用于委派的名称服务器的后续地址记录来创建委派。例如,如果要将 GSLB 用于 www.citrix.com,则可以使用以下绑定 SOA 文件将请求委托给域名服务器:Netscaler1 和 Netscaler2。 www.citrix.com

###########################################################################
@ IN SOA citrix.com. hostmaster.citrix.com. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; negative caching TTL
IN NS ns1
IN NS ns2
IN MX 10 mail

ns1   IN A 10.10.10.10
ns2   IN A 10.10.10.20
mail  IN A 10.20.20.50

### Old Configuration if www was not delegated to a GSLB name server
www IN A 10.20.20.50

### Updated Configuration
Netscaler1 IN A xxx.xxx.xxx.xxx
Netscaler2 IN A yyy.yyy.yyy.yyy
www IN NS Netscaler1.citrix.com.
www IN NS Netscaler2.citrix.com.
###
IN MX 20 mail2
mail2 IN A 10.50.50.20
###########################################################################

<!--NeedCopy-->

了解 BIND 并不是配置 DNS 的必要条件。所有合规的 DNS 服务器实现都有一种创建等效委派的方法。可以使用 创建区域委派?中的说明配置 Microsoft DNS 服务器以进行委派?从 = mSDN 重定向)。

Citrix ADC 设备上的 GSLB 与使用标准 DNS 服务分配流量的不同之处在于,Citrix ADC GSLB 站点使用称为指标交换协议 (MEP) 的专有协议交换数据。通过 MEP,GSLB 站点能够维护所有其他站点的信息。收到 DNS 请求后,MEP 会考虑 GSLB 指标来确定以下信息:

  • 当前连接数量最少的站点
  • 离 LDNS 服务器最近的站点,该服务器根据往返时间 (RTT) 发送请求。

有几种负载平衡算法可以使用,但 GSLB 是一种 DNS,大脑下面的大脑告诉名称服务器(托管在 Citrix ADC 设备上)必须根据参与站点的指标发送哪个地址。

GSLB 提供的其他好处是保持持久性(或站点亲和力)的能力。可以将对传入 DNS 查询的响应与源 IP 地址进行比较,以确定该地址是否在最近被定向到特定站点。如果是,则在 DNS 响应中发送相同的地址,以确保客户端会话得到维护。

另一种形式的持久性是通过使用 HTTP 重定向或 HTTP 代理在站点级别获得的。这些形式的持久性发生在 DNS 响应发生之后。因此,如果您在包含将请求引导到其他参与网站的 cookie 的站点收到 HTTP 请求,那么您可以通过重定向来响应该请求,也可以将请求代理到相应的网站。

指标交换协议

指标交换协议 (MEP) 用于跨站点共享 GSLB 计算中使用的数据。使用 MEP 连接,您可以交换三种类型的数据。这些连接不必通过 TCP 端口 3011 安全,或者可以使用 TCP 端口 3009 上的 SSL 来安全。

交换以下三种类型的数据,并且有自己的间隔和交换方法。

  • 站点指标交换: 这是一个轮询交换模型。例如,如果 site1 有 Site2 服务的配置,那么每隔一个站点 1 都会向 site2 询问 GSLB 服务的状态。Site2 会使用状态和其他加载详细信息进行响应。

  • 网络指标交换: 这是 LDNS RTT 信息交换,用于动态邻近负载平衡算法。这是一个推送交易模式。每五秒钟,每个站点将其数据推送到其他参与的站点。

  • 持久性交换: 这适用于 SOURCEIP 持久性交换。这也是一个推动交换模式。每五秒钟,每个站点将其数据推送到其他参与的站点。

默认情况下,仅根据轮询信息通过 MEP 监视站点服务。如果根据监视器间隔绑定监视器,则状态将更新,您可以通过相应地设置监视间隔来控制更新频率。

域名系统如何支持 GSLB