域名系统如何支持GSLB
DNS (domain name system)是一种分布式数据库,采用Client/Server架构。名称服务器是体系结构中的服务器,解析器是客户机,是安装在操作系统上的库例程,通过网络创建和发送查询。
DNS的逻辑层次结构如下图所示:
注意:
第二级根服务器负责维护。com、.net、.org、.gov域内的名称服务器委托的名称服务器到地址的映射。第二级域中的每个域都负责维护较低级别组织域的名称服务器到地址映射。在组织级别,为www、FTP和其他提供主机的服务解析各个主机地址。
代表团
当前DNS拓扑结构的主要目的是减轻在一个机构上维护所有地址记录的负担。这允许将组织名称空间委托给特定的组织。然后,组织可以进一步将其空间委托给组织内的子域。例如,在citrix.com下,您可以创建名为sales.citrix.com
,education.citrix.com
,support.citrix.com
.相应的部门可以维护他们自己的一组对他们的子域具有授权的名称服务器,然后维护他们自己的一组主机名到地址映射。没有一个部门负责维护所有的Citrix地址记录。每个部门都可以更改地址和修改拓扑,而不会在更高级别的域或组织中增加更多的工作。
层次结构拓扑的好处
层次结构拓扑的一些好处包括:
- 可伸缩性
- 在每个级别的Name服务器中添加缓存功能,其中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树结构,最终到达给定的域。这涉及到对多个Name服务器的一系列请求,以帮助遍历树以找到下一个授权的Name服务器,需要联系该服务器以进一步解决问题。
下图显示了一个典型的DNS请求,假设在遍历期间没有请求名称的缓存记录。下面的示例使用Citrix域的模拟。
递归和非递归查询
前面的示例演示了可能发生的两种类型的查询。
递归查询:解析器和本地配置的Name服务器之间的查询是递归的。这意味着Name服务器接收查询,直到查询完全回答或返回错误,才对解析器作出响应。如果名称服务器接收到对查询的引用,则名称服务器将遵循该引用,直到名称服务器最终接收到返回的答案(IP地址)。
非递归查询:本地配置的Name服务器对后续授权域级Name服务器的查询是非递归(或迭代)的。如果被查询的Name服务器在其数据文件或缓存中包含答案,则每个请求都会立即用对较低级别权威服务器的引用或查询的答案来响应。
缓存
尽管涉及到解析过程,并且可能需要对多个主机进行小请求,但它是快速的。提高DNS解析速度的因素之一是缓存。每当Name服务器接收到递归查询时,它可能必须与其他服务器通信,以最终获得针对特定请求的适当授权服务器。它存储所有接收到的信息,以备将来参考。当下一个客户端发出类似的请求时,例如同一域中的不同主机,它已经知道对该域具有权威的Name服务器,并且可以直接在那里发送请求,而不是从根Name服务器开始。
对于否定的响应也可以进行缓存,例如对不存在的主机的查询。在这种情况下,服务器不能查询请求域的权威名称服务器,以确定主机不存在。为了节省时间,Name服务器只检查缓存并返回否定记录。
名称服务器不会无限期地缓存记录,否则您永远无法更新IP地址。为了避免同步问题,DNS响应包含生存时间(TTL)。此字段描述缓存在丢弃记录并向权威名称服务器检查任何更新记录之前可以存储记录的时间间隔。如果记录没有改变,TTL的使用也允许执行GSLB的设备快速动态响应。
资源记录类型
各种rfc提供了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) |
GSLB如何支持DNS
GSLB使用算法和协议来决定必须为DNS查询发送哪个IP地址。GSLB站点在地理上是分布的,并且在Citrix ADC设备上作为服务运行的每个站点上都有一个DNS权威名称服务器。涉及的各个站点上的所有名称服务器都是同一域的权威服务器。每个GSLB域都是为其配置委托的子域。因此,GSLB Name服务器是权威的,可以使用各种负载平衡算法中的一种来决定返回哪个IP地址。
通过在父域数据库文件中为GSLB域添加一个Name服务器记录,并为用于委派的Name服务器添加一个后续地址记录,可以创建委派。例如,如果您想使用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服务器可以使用的说明配置为委托创建区域委托.
Citrix ADC设备上的GSLB与使用标准DNS服务分配流量的不同之处在于,Citrix ADC GSLB站点使用称为度量交换协议(MEP)的专有协议交换数据。通过MEP, GSLB站点能够维护关于所有其他站点的信息。当收到DNS请求时,MEP会考虑GSLB指标来确定以下信息:
- 当前连接数最少的站点
- 离LDNS服务器最近的站点,该服务器基于往返时间(RTT)发送请求。
可以使用几种负载平衡算法,但GSLB是一种DNS,它的底层大脑告诉Name Server(托管在Citrix ADC设备上)必须根据参与站点的指标发送哪个地址。
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仅基于轮询信息监控站点服务。如果您根据监视器间隔绑定监视器,状态将被更新,并且您可以通过设置相应的监视间隔来控制更新的频率。