gslb(global server load balance)技术的一点了解
前言
对于比拟大的互联网公司来说,用户可能遍布海内外,此时,为了晋升用户体验,公司个别会在离用户较近的中央建设机房,来服务这部分用户的申请。
比方微信次要是服务国内,在国内就会在很多城市有大量机房服务国内用户,另外,因为在北美、欧洲都有用户应用,所以,在欧洲和北美也会有对应的机房。
此时,作为服务提供方,天然是心愿用户能够就近拜访,广东用户就拜访深圳机房,北美用户就拜访北美机房。
这个要怎么做到呢,比方大家同时拜访www.qq.com,如何保障就近拜访呢?
这就是gslb(global server load balance)的舞台。
gslb的实现计划之dns
dns计划,应该也是最支流的一种计划,咱们能够先思考下,拜访www.qq.com时,会做什么事件呢?首先要拿到域名背地的ip,这里就会进行dns递归查问。
- 用户的dns申请,首先进入本地的dns服务器,比方我这边是深圳电信宽带,实践上就进入深圳电信的dns服务器,这个咱们叫做localDns
- localDns会去查问root dns服务器,root dns服务器只保护了顶级域名的dns服务器地址,因而会返回 .com这个顶级域名对应的dns服务器(记作tld,即top level domain顶级域名服务器)
- localDns接下来,向.com顶级域名服务器发动申请,其会返回能解析qq.com域名的dns服务器(叫做权威服务器)
- localDns接下来,向qq.com域名的dns服务器发动申请,其会解析www这个主机对应的ip,并返回
- localDns拿到www.qq.com的ip后,返回给用户。
不看字也能够间接看图。
然而,有一点大家要记得,从头至尾,都是localDns在帮咱们跑东跑西,相当于是咱们的代理,在这个过程中,root、tld dns服务器、权威服务器,都是只和localDns打交道,齐全不晓得咱们用户的存在,因而,有一点很重要,root、tld dns服务器、权威服务器只晓得localDns的ip,而不晓得咱们用户的ip。
当初咱们晓得了,最终是负责qq.com服务器的dns server来帮咱们解析背地的ip,问题来了,这个dns server能很好地帮咱们进行就近接入吗,答案是,不肯定,这边个别是给www.qq.com配置多条A记录,即多个机房的ip,如深圳机房ip、北美机房ip,这个dns服务器不是很智能,它是轮询地返回ip,那很有可能,北美用户却拿到了国内机房ip,那还怎么玩呢,卡爆了。
问题就是,这个dns服务器不是很智能,不能满足咱们的个性化需要,怎么办呢,解决的方法是有的,大家能够看下图。
这边能够给www.qq.com配置ns记录,让它指向另外一个dns服务,而这个dns服务,咱们能够本人实现一个,无非就是写个后盾服务,开个端口,接管dns申请,正确实现dns协定即可,gslb就是这么一个自定义的dns服务。
NS 代表“域名服务器”,域名服务器记录批示哪个 DNS 服务器对该域具备权威性(即,哪个服务器蕴含理论 DNS 记录)。基本上,NS 记录通知互联网可从哪里找到域的 IP 地址。一个域通常会有多个 NS 记录,这些记录可批示该域的次要和辅助域名服务器。假使没有正确配置的 NS 记录,用户将无奈加载网站或应用程序。
上面是一个 NS 记录示例:
example.com record type: value: TTL @ NS ns1.exampleserver.com 21600
在引入了gslb之后,dns解析,就变成了这样的过程。
- localDns后面的步骤都差不多,不同点在于,其向qq.com域名的dns服务器发动申请后,qq.com域名解析www.qq.com,发现www.qq.com配置了ns记录,此时,就会返回ns记录中的value给localDns,而这个value,就是指向腾讯本人的gslb服务
- localDns向腾讯的gslb服务发动申请,留神,咱们后面说过,此时这个udp dns查问,客户端ip是localDns的ip,gslb服务器也只是会拿到localDns的ip,比方,以我为例,gslb拿不到我的ip,只能拿到深圳电信的ip。
- gslb收到申请后,实践上能够拿到的数据包含:该申请来自于哪个国家,该申请的ip所属的运营商,该申请的ip所属的省份城市,如中国-深圳-电信,此时,gslb能够抉择返回深圳机房的ip给localDns,而不是北美机房的ip,这样就做到了就近接入
gslb实现
这块我看了下腾讯这边,应该是06年就搞出这货色了,不晓得具体实现,只说是参考开源框架改的,不过我猜想,可能是依据bind这个开源dns解析器来改的,毕竟当初支流的dns服务,次要就是bind、dnsmasq,我这两天为了实际这个gslb,还本人搭了个bind(不过最终发现解析不到本人的bind服务上,看了域名解析商的阐明,貌似是不能ns记录指向我这种擅自搭建的dns服务)
个别大厂必定都是有本人的gslb实现了,我在携程的技术文里也看到相干的gslb技术的阐明。
那假如咱们要是在一个小厂,没有自研能力,又当如何呢?
其实,dns解析商还是有提供高级能力的,是我low了,这个很简略,只有钞能力,就能够解决。
以我当初应用的dnspod这家解析商来说,默认其是反对几种路线的,比方电信、挪动,能够配置不同的指向ip。
我了解下,大厂呢,应该是有这个研发能力,不违心花这个冤枉钱,毕竟,公司小的时候,租着便宜,大了之后,域名一多,比起自研,就未必便宜了;而且自研的话,还能够和业务深度联合,搞点花活进去。
总结
大家也能够分享下本人的认识,gslb实现这部分,都是我瞎吹的,不过dns解析商这种,提供的也算是gslb的一种实现吧
本文由mdnice多平台公布