前言
CDN由于以下几大部分组成
- 分布式的边缘节点:将源站的静态网页、图片、音频、视频内容合理地分散在全球各个CDN节点
- 权威DNS配置:CDN提供商在权威DNS配置NS记录到该CND提供商自己的GSLB(智能DNS请求调度系统)
- 在CDN提供商的智能DNS中配置源站域名到CND提供商的CNAME记录
- GSLB对应的智能调度系统:选择最佳的CDN节点,即CDN服务器集群对应的SLB的IP地址Answer给客户端
CDN概念
随着网站业务的发展,用户量增多、访问路径过长、网络链路流量突增,不同地区的用户访问网站的速度就会出现差异;
CDN即内容分发网络(Content Delivery Network)是建立并覆盖在承载网上;
由不同区域的服务器组成的分布式网络。将源站资源缓存到全国各地的边缘服务器,供用户就近获取,降低源站压力。
CND采用规避网络拥堵,分而治之的思想, 将源站的内容分布到网络边缘节点,在现有互联网基础上构建一层智能虚拟网络;
当用户访问服务端时,在DNS解析环节,通过GSLB全局负载均衡器即智能调度系统,将用户请求重新导向到距离用户最近、负载均衡最佳、响应时间最短的CDN节点的SLB上;
其目的是使用户能以最快的速度、从最接近用户的地方获取所需的信息,不再构成网络拥塞的目的;
DNS工作原理
由于CDN是在DNS解析环节发挥作用的,来分析下DNS解析过程;
DNS:Domain Name System 域名系统,核心作用是将1个域名解析为1个IP地址;
DNS记录类型
DNS记录Resource Record 简称 RR,RR有几大记录类型;
A记录(Address)
A记录用于描述目标域名到IP地址的映射关系
NS记录(Name Server)
NS记录用户描述目标域名到负责解析该域名DNS的映射关系,当设定完成后,相当于把他的解析权交给了对应的DNS。
CNAME记录(Canonical Name)
CNAME记录用于描述目的域名和别名的关系
访问源站DNS解析过程
如上图所示:如果用户访问的网址为 www.le.com
- 客户端首先会在本机的hosts文件和hosts缓存中查找该域名对应的IP地址;
- 如果客户端本机中不存在该域名对应的IP地址信息,则客户端询问LDNS进行域名查询;(递归查询)
- 如果LDNS中没有缓存信息,则LDNS会依次向根DNS、顶级域DNS、权威DNS进行域名查询,最终由LDNS将域名对应的IP地址应答客户端;(迭代查询)
- 客户端通过LDNS应答的IP地址向服务端的服务器发出HTTP请求并获取所需的数据内容
CDN工作原理
CDN技术需要结合DNS解析技术才能实现,将用户请求导向距离用户较近的最优CDN节点,而非源站;
本地DNS
Local DNS通常是由用户对应的网络业务提供商(Internet Service Provider,简称ISP)提供的最近用户网络最近的DNS;
SLB
Server Load Balancer 负载均衡服务器是针对集群内部主机的负载均衡器
GSLB
Global Server Load Balancer全局负载均衡服务器,GSLB是对集群外部的负载均衡器,就近性判断是全局负载均衡的主要功能,通常为CDN服务商开发的DNS智能调度系统;
GSLB实现方式
基于DNS协议、基于HTTP协议、基于路由协议的Anycast 的调度
1.基于DNS协议的调度
站点使用CDN加速服务后DNS解析过程
- 客户端首先会在本机的hosts文件和hosts缓存中查找该域名对应的IP地址;
- 如果客户端本机中不存在该域名对应的IP地址信息,则客户端询问LDNS进行域名查询;(递归查询)
- 如果LDNS的缓存中没有该域名的记录,则LDNS向根DNS发送DNS查询报文
- 根DNS发现域名www.le.com的后缀为com,则应答负责解析com的顶级DNS的IP地址给LDNS
- LDNS向顶级DNS发送DNS查询报文
- 顶级DNS发现域名www.le.com包含le.com后缀,在本地记录中查找负责该后缀的权威DNS的IP地址应答给LDNS;
- LDNS向权威DNS发送DNS查询报文
- 权威DNS查找到1条NAME字段为www.le.com的CNAME记录(由CDN服务提供者配置在权威DNS。例如阿里云、网宿科技)该CNAME记录的值为www.le.cdn.com,
- LDNS通过再次向DNS系统发起对CNAME域名的解析
- 权威DNS通过NS记录发现负责解析www.le.cdn.com这个CNAME的DNS服务器IP地址为为CDN提供商的GSLB的IP地址
- 本地DNS向GSLB发送DNS查询报文
- GSLB根本LDNS的IP地址位置判断用户所在位置,筛选出距离用户所在地最近的最佳SLB的IP地址应答给LDNS
- LDNS应答客户端的DNS请求,将距离用户所在地最近、最佳的SLB的IP地址应答给客户端
- 客户端向距离自己所在地最近、最佳的SLB发起HTTP请求
总结
① 提交域名
② 客户端解析域名
③ 通过NS记录解析到CDN服务商提供的智能DNS( GSLB)
④ GSLB解析并返回IP
⑤ 客户端请求IP
⑥ 返回结束
这个技术对原业务的侵入性最小,被商业ADC广泛实现,如A10,F5等。
但是可以得到的信息很有限,IP的定位只能得到Local DNS的IP地址得不到客户端的源IP
2.基于HTTP协议调度实现
① 提交域名
② 客户端解析域名
③ DNS解析域名为GSLB
④ 客户端提交请求给GSLB服务器
⑤ GSLB解析出目标IP并发起HTTP转发
⑥ 客户读转发请求到目标IP
⑦ 返回结束
特点:
这个方案只适用于HTTP.
这个方案的实现可以是L7负载均衡工具如Nginx、HTTPD等