[多活] 分布式、多活数据中心如何实现DNS域名解析和负载均衡

核心提示关于双活技术和业界主流方案,应大家要求做了分析和分享,为了帮助大家进一步理解,特意重要知识点做了梳理和细化,并整理成文。由于平时工作繁忙,只有利用周末时间写写文章,为了表示对我付出的认可,整理成文的“ 业界主流数据中心存储双活完全解析 ”

关于双活技术和业界主流方案,应大家要求做了分析和分享,为了帮助大家进一步理解,特意重要知识点做了梳理和细化,并整理成文。由于平时工作繁忙,只有利用周末时间写写文章,为了表示对我付出的认可,整理成文的“ 业界主流数据中心存储双活完全解析 ”需要收取一些费用,通过这种方式,也希望把自己的心血传递到真正需要的人手中,文章目录如下。

请需要的小伙伴通过 原文链接 获取。今天的话题将带你从双活数据访问层面,谈谈域名解析和负载均衡。

DNS域名解析是B/S应用架构的一项重要服务,C/S架构应用一般是通过IP地址直接访问服务的 。在云计算时代, 业务主要通过B/S、分布式、多活的架构提供 。然而对于网站运营和服务提供商来说,DNS域名解析的稳定可靠,意味着更好的业务体验,更好更大的访问流量。

随着云计算和分布式系统的发展,DNS在多数据中心、分布式应用架构中负载均衡和故障转移应用中越来越重要,今天我们对 DNS概念、应用和原理进行梳理和解析 。

DNS是互联网上作为 域名和IP地址相互映射的一个分布式数据库 。DNS能够使用户更方便的访问网络和应用,而不用去记忆杂乱、繁琐的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析。下面这张图,详细说明了一个DNS域名解析的全过程。

1、 通常,在电脑打开浏览器,输入一个域名。比如输入www.163.com,这时电脑会发出一个DNS请求到本地DNS服务器。本地DNS服务器一般是网络接入服务器商提供,比如中国电信,中国移动。

2、 查询www.163.com的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。

3、 根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。

4、 本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。

5、 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

实际上,因特网上的DNS服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划 分为 根域名服务器、 顶级域名服务器、 权限域名服务器和 本地域名服务器 四种不同的类型。

根域名服务器是 最高层次的域名服务器,也是最重要的域名服务器。所有的 根域名服务器都知道所有的顶级域名服务器的域名和IP地址 。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。

我们在配置DNS解析的时候,需要指定 DNS解析的TTL 参数,这个参数告诉本地DNS服务器,域名缓存的最长时间。用阿里云解析来举例,阿里云解析默认的TTL是10分钟,10分钟的含义是 本地DNS服务器对于域名的缓存时间是10分钟,10分钟之后,本地DNS服务器就会删除这条记录 ,删除之后,如果有用户访问这个域名,就要重复一遍上述复杂的流程。

如果网站已经进入稳定发展的状态,不会轻易更换IP地址, 我们完全可以将TTL设置到协议最大值,即24小时 。带来的好处是,让域名解析记录能够更长时间的存放在本地DNS服务器中,以加快所有用户的访问。

分布式、多活数据中心 对外提供数据服务时,还会涉及到另外一个 参数RTT 。分布在物理上A、B隔离两个区域的数据中心同时对外提供服务时,客户的服务请求是由A数据中心,还是由B数据中心响应,这就要看在DNS解析过程中,决定于解析过程中那个访问带来的RTT更小。下面一起通过一个实例来分析下技术原理。

1、 首先客户端向其所在运营商的Local DNS发起www.abc.com域名的DNS请求。

2、 运营商的Local DNS服务器从RootDNS得知www.abc.com由DNS-CTC、DNS-CNC、DNS-USA1和DNS-USA2来解析,即RootDNS同时返回此4个DNS服务器地址给 Local DNS;

3、 Local DNS轮询向这4个DNS服务器发出域名解析的请求,直到返回数据。

4、 在此,假如DNS-CTC响应 Local DNS的域名解析请求,同时返回2台GTM的地址。

5、 收到 Local DNS 请求的GTM首先查询在本地是否有该Local DNS的就近性表项,如果存在则直接给Local DNS返回速度最快的服务器地址。如果不存在,则通知另外一台GTM发起对该Local DNS的查询。

6、 两台DNS分别对Local DNS进行Probe。 例如GTM-A查询该Local DNS的RTT时间为50ms,而GTM-B查询同一Local DNS的RTT时间为100ms ,则此时在两台GTM内都形成了该Local DNS的对应就近性表记录。

7、 根据就近原则,Local DNS请求的GTM-A 根据系统的就近性表返回相应的Data Center内的Web服务器地址 。

8、 Local DNS获得地址后,将该地址返回给用户,到此DNS请求过程结束。

9、 用户向www.albc.com网站发起访问。

分布式、多活数据中心中, 一个域名对应两个业务IP地址,分别部署在两个数据中心。通过GSLB或DNS实现站点间的访问负载均衡。

GSLB可以采用专用的F5 GTM设备,如果业务量小,也可以 采用windows自带的DNS服务器,实现简单负载均衡 ,GSLB跨站点负载均衡策略通常有两种。

1. 基于Local DNS请求所在的地理位置。

2. 基于GSLB与Local DNS的RTT最小。

GSLB在整个网络范围内将 用户的请求定向到最近的节点,主要采用就近性判断 ,主要的方法包括DNS、应用层重定向、传输层重定向等。 然而,SLB大多在一个服务节点范围内,根据设备节点的健康性、当前负载、服务能力、分布等情况将用户的请求分配到一个具体服务节点设备。

整理成文的“ 业界主流数据中心存储双活完全解析 ”分析资料链接如下, 请需要的小伙伴通过 原文链接 获取。

温馨提示: 请搜索 “ICT_Architect” 或 “扫一扫” 下面二维码关注公众号,获取更多精彩内容。

专注做一个有情怀的技术分享平台

 
友情链接
鄂ICP备19019357号-22