警报 签署了
联络支持

浏览过本文的客户也浏览了

横幅
CTX122619 {{tooltipText}}

DNS(域名系统)如何与NetScaler上的GSLB功能一起工作

适用的产品

  • Citrix ADC

信息

DNS (Domain Name System)系统被认为是一个采用Client/Server架构的分布式数据库。名称服务器是体系结构中的服务器,解析器是客户机,通常是安装在操作系统上的库例程,通过网络创建和发送查询。

DNS的逻辑层次结构如下图所示:

DNS (Domain Name Service)逻辑结构

请注意:第二级根服务器负责维护域名服务器在。com, .net, .org, .gov(等等)域中委托的名称服务器>地址映射。随后,第二级域中的每个域都负责维护较低级别组织域的名称服务器>地址映射。一旦到达组织级别,就开始为www、ftp和其他提供服务的主机进行单个主机地址解析。

代表团

当前DNS拓扑结构的主要目的是减轻在一个机构上维护所有地址记录的负担。这允许将组织名称空间委托给特定的组织。然后,组织可以进一步将其空间委托给组织内的子域。例如,citrix.com可以创建名为sales.citrix.com、education.citrix.com和support.citrix.com的子域名。然后,相应的部门可以维护他们自己的一组对他们的子域具有权威的Name server,然后维护他们自己的一组主机名到地址映射。没有哪个部门负责维护所有的Citrix地址记录,每个部门都可以无缝地更改地址和修改拓扑,而不会在更高级别的域/组织中增加额外的工作。

分层拓扑的好处

这种拓扑结构带来的其他好处包括可伸缩性、在每个级别的名称服务器中添加缓存功能的能力,其中DNS请求可以由对特定域不具有权威的主机提供服务,但可以为查询提供答案并减少拥塞和响应时间。缓存还会创建冗余和对服务器故障的弹性。如果一个名称服务器出现故障,仍然有可能从其他具有相同记录的最近缓存副本的服务器提供记录。

解析器

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

  • 查询名称服务器。

  • 解释响应(可能是资源记录或错误)。

  • 将信息返回给请求它的程序。

解析器通常是一组库例程,它们被编译成telnet、ftp和ping等程序。它们通常不是独立的过程。它们的聪明之处在于,只会整理一个查询,发送它,等待答案,如果在足够的时间内没有得到回答,就会再次发送它(可能是发送到辅助名称服务器)。这些类型的解析器称为存根解析器。一些解析器增加了缓存记录的功能,并尊重生存时间(TTL)。在Windows中,此功能可通过DNS客户端服务获得;可通过“服务”查看。msc”控制台。

域名服务器

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

域和区域之间的区别是微妙的。域是包括其子域在内的完整实体集,而区域只是域中未委托给另一个名称服务器的信息。区域的一个例子是citrix.com,而如果将一个单独的区域委托给子域内的另一个名称服务器,则该区域将是sales.citrix.com。在这种情况下,主Citrix区域可以包括citrix.com、it.citrix.com和support.citrix.com,因为sales.citrix.com是委托的,所以它不是citrix.com名称服务器有权访问的区域的一部分。下图显示了这两个区域。

用户添加图片

要正确地委托子域,必须将子域的权限分配给不同的名称服务器。上面示例中的ns1.citrix.com不包含关于子域sales.citrix.com的信息,而是包含指向子域(ns1.sales.citrix.com)授权的名称服务器的指针。

根名称服务器和查询解析

根名称服务器知道二级域的所有授权名称服务器的IP地址。如果名称服务器在自己的数据文件中没有关于给定域的信息,那么它只需要联系根服务器,开始遍历DNS树结构的适当分支,最终到达给定域。这可能涉及到对多个名称服务器的一系列请求,以帮助遍历树,以找到需要联系的下一个权威名称服务器以进行进一步解决。下图显示了一个典型的DNS请求,假设在遍历期间没有请求名称的缓存记录。下面的例子使用了一个模拟的Citrix域:

用户添加图片

递归和非递归查询

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

  • 解析器和本地配置的名称服务器之间的查询是递归的。这意味着名称服务器接收查询,直到查询完全回答或返回错误,才对解析器作出响应。如果名称服务器接收到对查询的引用,则名称服务器将遵循该引用,直到名称服务器最终接收到返回的答案(IP地址)。

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

缓存

尽管解析过程相当复杂,而且可能需要向多个主机发送小请求,但通常非常快。提高DNS解析速度的因素之一是缓存。每当名称服务器接收到递归查询时,它可能必须与其他服务器通信,以最终获得针对特定请求的适当授权服务器。它还可以存储沿途接收到的所有信息,以备将来参考。随后,当下一个客户端发出类似的请求时,例如在同一域中的不同主机,它已经知道该域的权威名称服务器,并且可以直接在那里发送请求,而不是从根名称服务器开始。

对于否定的响应,例如对不存在的主机的查询,也可以进行缓存。在这种情况下,服务器不能向权威的名称服务器查询请求的域,以发现主机不存在,为了节省时间,名称服务器只检查缓存并返回否定记录。

名称服务器不会无限缓存记录,否则您永远无法更新IP地址。为了避免同步问题,DNS响应包含生存时间(TTL)。此字段描述缓存在丢弃记录并向权威名称服务器检查任何更新记录之前可以包含记录的时间量。记录可能没有改变,但是TTL的使用允许这一点,也允许执行全局服务器负载平衡(GSLB)的设备快速动态响应。

资源记录类型

有许多类型的DNS资源记录,类型和描述的全面列表可以在DNS资源记录(RR)类型和DNS参数或定义当前DNS标准的各种rfc中找到。常见的资源记录类型如下表所示。

一个 主机地址 (RFC 1035)
NS 权威名称服务器 (RFC 1035)
医学博士 邮件目的地(过时-使用MX) (RFC 1035)
曼氏金融 邮件转发器(过时-使用MX) (RFC 1035)
CNAME 别名的规范名称 (RFC 1035)
SOA 标志着一个权威区域的开始 (RFC 1035)
周内 一个众所周知的服务描述 (RFC 1035)
PTR 域名指针 (RFC 1035)
HINFO 主机信息 (RFC 1035)
MINFO 邮箱或邮件列表信息 (RFC 1035)
MX 邮件交流 (RFC 1035)
三种 文本字符串 (RFC 1035)
AAAA级 IP6地址 (RFC 3596)
深水救生艇 服务器选择 (RFC 2782)

NetScaler软件版本9.1目前支持以下资源记录类型:
A ns, cname, mx, aaaa, ptr, soa, srv。

GSLB如何融入其中?

GSLB的特殊之处在于决定必须为DNS查询发送哪个IP地址所涉及的算法和协议。GSLB站点通常在地理上分布,每个站点上都有一个DNS权威名称服务器,该服务器作为NetScaler设备上的服务运行。涉及的各个站点上的所有名称服务器都是同一域的权威服务器。每个GSLB域都是为其配置委托的子域,以便GSLB名称服务器具有权威性,并且可以使用各种负载平衡算法中的一种来决定在任何给定时间分发哪个IP地址。

通过在父域数据库文件中为GSLB域添加一个Name Server记录,并为用于委派的Name Servers添加一个后续地址记录,可以创建委托。例如,如果你想使用GSLBm.giftsix.com,则可以使用以下绑定SOA文件将请求委托给m.giftsix.com到名称服务器Netscaler1和Netscaler2。

################################################################################################ @ 在SOA citrix.com。hostmaster.citrix.com。(1;串行3h;刷新1h;重试1w;过期1h);负缓存TTL在nsns1在nsns2在MX 10邮件ns1在10.10.10.10 ns2在10.10.10.20邮件在10.20.20.50 ###旧配置如果www没有委托给一个GSLB名称服务器www在10.20.20.50 ###更新配置Netscaler1在一个xxx.xxx.xxx.xxx Netscaler2在一个yyy.yyy.yyy.yyy www在NS Netscaler1.citrix.com。www.netscaler2.citrix.com。# # #在MX 20 mail2 mail2 10.50.50.20  #################################################################################################

了解BIND并不是配置DNS的必要条件,所有兼容的DNS服务器实现都有创建等效委托的方法。Microsoft DNS服务器可以使用的说明配置为委托创建区域委托

NetScaler设备上的GSLB与使用标准DNS服务分配流量的不同之处在于,NetScaler GSLB站点使用称为度量交换协议(MEP)的专有协议交换数据。通过MEP, GSLB站点能够维护关于所有其他站点的信息。因此,当接收到DNS请求时,它能够查看GSLB度量来确定信息,例如当前连接数量最少的站点,或者根据往返时间确定哪个站点离发送请求的LDNS服务器最近。还可以使用其他几种负载平衡算法,但GSLB是一种DNS,它的底层大脑告诉Name Server(托管在NetScaler设备上)必须根据参与站点的指标发送哪个地址。

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

另一种形式的持久性可以通过使用HTTP重定向或HTTP代理在站点级获得。这些形式的持久性发生在DNS响应发生之后。因此,如果您在一个站点上收到一个HTTP请求,其中包含将请求定向到不同参与站点的cookie,那么您可以用重定向或将请求代理到适当的站点来响应。

度量交换协议

度量交换协议(MEP)用于跨站点共享GSLB计算中使用的数据。使用MEP连接,您可以交换三种类型的数据。这些连接不需要通过TCP端口3011安全,也可以通过TCP端口3009使用SSL安全。以下三种类型的数据交换,并有各自的间隔和交换方法。

  • 现场公制交换:这是一个轮询交换模型。例如,如果site1有site2服务的配置,那么每隔一秒site1就会向site2询问GSLB服务的状态。Site2响应状态和其他加载细节。

  • 网络度量交换机: LDNS RTT信息交换,用于动态接近负载均衡算法。这是一个推交换模型。每隔5秒,每个站点就会将其数据推送到其他参与站点。

  • 持续交换:用于SOURCEIP持久化交换。这也是一个推交换模型。每隔5秒,每个站点就会将其数据推送到其他参与站点。

默认情况下,站点服务仅在MEP上基于轮询信息进行监控,但是如果您根据监视器间隔绑定监视器,则会更新状态,并且可以通过设置相应的监控间隔来控制更新的频率。


额外的资源