原文链接:https://blog.51cto.com/weikle/1623232
最近想了解下CDN,从网上找了一些文档看了下,有的配合dig命令解释得蛮复杂的,但总感觉缺乏一些形象的例子供初学者掌握。首先,有几个概念需明确:
1、GSLB全局负载均衡和iDNS智能DNS是一个意思,并不是两个东西。在实现方式上,有F5 GTM等成熟的厂家产品,也可以自己用开源软件,比如bind去实现。
2、CDN包括GSLB+缓存,这里面的缓存又包括本地负载均衡(lvs/nginx/haproxy)、缓存服务器(squid或者varnish)等东西,都是开源软件。
3、目前CDN主要有蓝汛和网宿两个内地厂家,但一线互联网公司也开始自己搞CDN了。
任何一个介绍CDN的文档里面都会提到CDN的两个核心理念:
1、根据一定策略优化网站访问(就近访问是最基本的)
2、通过在传统DNS里面把要加速的域名NS或者CNAME到GSLB,实现对传统DNS过程的接管
OK,问题来了,我们如何知道一个互联网域名是否用到了CDN,用了几个,部署在哪里?
以www.163.com作为例子分析下:
公司内网宽带用的是深圳电信的,我们来看看nslookup结果:
Server: dc01.delcomhk.com
Address: 192.168.1.26
Non-authoritative answer:
Name: 163.xdwscache.glb0.lxdns.com
Addresses: 113.107.112.214, 219.128.78.74, 113.107.56.96
Aliases: www.163.com, www.163.com.lxdns.com
这里解析出了3个地址,很容易查到,这三个地址分别属于广东湛江电信、广东佛山电信和广东揭阳电信。
这三个地级市,正好横跨整个广东省。由此可见,网易在广东电信的CDN就在这三个地方。
我们再在一台北京联通机房的生产系统上看看:
[root@BJ-MSPRG-AP2 /]#nslookup www.163.com
Server: 202.106.0.20
Address: 202.106.0.20#53
Non-authoritative answer:
www.163.com canonical name = www.163.com.lxdns.com.
www.163.com.lxdns.com canonical name = 163.xdwscache.glb0.lxdns.com.
Name: 163.xdwscache.glb0.lxdns.com
Address: 111.202.57.27
Name: 163.xdwscache.glb0.lxdns.com
Address: 125.39.1.138
111.202.57.27和125.39.1.138,一个是北京联通的地址,一个是天津联通的地址。
与前面在广东电信下解析出的三个地址完全不同,这就实现了所谓的CDN就近访问。