当前位置: 首页 > 科技观察

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

时间:2023-03-13 13:02:43 科技观察

今天的话题就带大家从双活数据访问的角度来聊聊域名解析和负载均衡。DNS域名解析是B/S应用架构的一项重要服务,而C/S架构应用一般直接通过IP地址访问服务。云计算时代,主要通过B/S、分布式、多活架构提供服务。但对于网站运营商和服务商来说,DNS域名解析的稳定性和可靠性意味着更好的业务体验和更好更大的访问流量。随着云计算和分布式系统的发展,DNS在多数据中心和分布式应用架构中的负载均衡和故障转移应用中变得越来越重要。今天我们就来梳理分析一下DNS的概念、应用和原理。DNS是Internet上的分布式数据库,将域名和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(TimeToLive)参数。该参数告诉本地DNS服务器域名缓存的最长时间。以阿里云解析为例。阿里云解析默认TTL为10分钟。10分钟表示本地DNS服务器缓存域名10分钟。10分钟后,本地DNS服务器会删除这条记录。删除后,如果用户访问该域名,则必须重复上述复杂过程。如果网站已经进入稳定发展状态,不会轻易更改IP地址,我们完全可以将TTL设置为协议的最大值,即24小时。好处是域名解析记录可以更长时间保存在本地DNS服务器中,从而加快所有用户的访问速度。分布式多活数据中心对外提供数据服务时,还涉及到另一个参数RTT(RoundTripTime)。当位于A、B两个物理隔离区域的数据中心同时对外提供服务时,客户的服务请求是由A数据中心还是B数据中心来响应,取决于DNS解析过程。过程中那次访问带来的RTT更小。下面通过一个例子来分析一下技术原理。1、首先,客户端向其运营商的LocalDNS发起对www.abc.com域名的DNS请求。2、运营商的LocalDNS服务器从RootDNS得知www.abc.com是经过DNS-CTC、DNS-CNC、DNS-USA1、DNS-USA2解析的,即RootDNS将这4个DNS服务器的地址返回给LocalDNS(DNS的工作原理要求??返回所有关于请求的记录,这里是返回4台DNS服务器,如果只返回一台DNS,而DNS只是中断服务,那么LocalDNS只能解析失败);3、本地DNS轮询向这4台DNS服务器发送域名解析请求,直到数据返回。4、这里DNS-CTC如果响应LocalDNS的域名解析请求,同时返回两个GTM(本地监控的Web服务)的地址。5.收到LocalDNS请求的GTM首先查询是否有本地DNS邻近条目,如果有则直接返回最快的服务器地址给LocalDNS。如果不存在,则通知另一个GTM发起对LocalDNS的查询。6、两个DNS分别对LocalDNS进行Probe。例如GTM-A查询LocalDNS的RTT时间为50ms,GTM-B查询同一个LocalDNS的RTT时间为100ms,则在两个GTM中形成对应的LocalDNS的邻近表记录.7、根据就近原则,LocalDNS请求的GTM-A根据系统的就近表返回数据中心对应的Web服务器地址(即1.1.1.1)。8、LocalDNS获取到地址后,将地址返回给用户,DNS请求流程到此结束。9.用户开始访问www.albc.com(1.1.1.1)网站。在分布式多活数据中心中,一个域名对应两个业务IP地址,分别部署在两个数据中心。通过GSLB或DNS实现站点间访问负载均衡。GSLB可以使用专用的F5GTM设备。如果业务量不大,也可以使用windows自带的DNS服务器来实现简单的负载均衡(roundrobin)。GSLB跨站负载均衡策略通常有两种。1、基于地理位置的LocalDNS请求。2、基于GSLB和LocalDNS的RTT最小。GSLB将用户请求定向到全网范围内最近的节点(或区域),主要使用邻近判断,主要方法包括DNS、应用层重定向、传输层重定向等。但SLB多属于服务范围内节点,根据设备节点的健康状况、当前负载、服务能力、分布情况等,将用户请求分配给特定的服务节点设备。