李聪颖 王瑞刚 梁小江
摘 要:CDN是互联网上的一层智能虚拟网络,通过在网络各节点处放置缓存服务器,可根据各节点的连接状况、负载状况、网络流量,以及各节点到用户的距离和响应时间的长短等因素,使用户从最近的服务节点上获取资源。文中主要通过对智能DNS的解析,使用户访问CDN服务站点时,能够实现不同用户的域名解析,若缓存服务器中没有用户需要的资源,则通过源站获取,这样可以增加访问速度,提高用户体验。
关键词:CDN;内容分发网络;智能DNS;网络加速;缓存服务器
中图分类号:TP302.1 文献标识码:A 文章编号:2095-1302(2015)12-00-03
0 引 言
随着Internet技术和多媒体技术的不断发展,图像、音频、视频服务所占的比重越来越大,加之网民数量激增,网络访问距离过长,导致网络负载迅速增加,从而使用户的访问质量受到严重影响。
传统的缓存技术对交互性强和比较大的文件并不支持,因此迫切需要一种新的传输结构来解决这一问题,此外,当用户与网站之间的链路被突发的大流量数据拥塞时,对于异地互联网用户急速增加的地区来说,访问质量不良更是一个急待解决的问题。而应运而生的CDN(内容分发网络)技术正是针对带宽、响应速度、扩展性、可靠性等对网络进行改善。
使用CDN技术,可以让电信的用户访问电信的内容缓存服务器,网通的用户访问网通的内容缓存服务器。通过这样一种策略,绕开了网络运营商之间人为设置的障碍,解决了互联的问题。
1 CDN特性
CDN可以避开互联网上影响数据传输速度和稳定性的瓶颈和环节,使内容传输更快、更稳定。CDN通过在Internet中增加一层新的网络架构,即智能CDN以及缓存服务器集群,将网站的内容发布到最接近用户的网络边缘,用户可以快速获取所需的内容,能够有效解决Internet网络拥塞状况,提高用户访问网站的响应速度,解决网络带宽小、用户访问量大、网点分布不均等问题。
CDN技术能够解决网站高流量、大并发的问题和互联问题。CDN采用缓存技术,把访问对象缓存起来,能把对象缓存到内存(如Varnish)。能够降低总体运营成本,提高网站的可用性,使得源站的访问量变得很小,对于缓存服务器,多个服务器做成集群,保证了整个系统的高可用性。
2 整体设计
当用户访问CDN加速的站点时,首先会通过浏览器向智能DNS发出请求,智能DNS会根据IP地址列表解析出该用户属于哪个网段的用户,随后智能DNS会返回给用户缓存服务器集群的VIP,然后用户通过访问这个VIP去访问缓存服务器,如果缓存服务器中缓存了用户需要的内容,则直接返回给用户信息。否则,缓存服务器需要访问源站,去寻找用户需要的内容,源站把信息返回给缓存服务器,缓存服务器缓存此内容并返回给用户。
CDN是一种组合技术,包括源站、缓存服务器、智能DNS、用户客户端等几个部分。图1所示为CDN的全局结构图。
源站为发布内容的原始站点,可以新增、删除和更改网站的文件。缓存服务器抓取的对象也全部来自于源站。采用CDN技术后源站的压力会变得很小,为了提高可用性,将源站部署成负载均衡集群。
智能DNS实现用户访问的转向功能,是整个CDN的核心,它根据用户访问的来源,将其访问请求转向到离用户较近或较合适的缓存服务器。
实现智能DNS的一种技术是Bind View,在本文中,使用电信、网通、教育网3个IP地址列表,每个列表关联独立的Bind视图,共有3个视图。
Varnish作为缓存服务器,当用户发起访问时,它的访问请求被智能DNS定位到离它较近的缓存服务器,如果访问所需的内容没有被缓存,则缓存服务器向邻近的缓存服务器或直接向源站抓取内容,然后再返还给用户。如果用户所请求的内容刚好在缓存里面,则直接把内容返还给用户。为保证缓存服务本身的高可用性,每个布点的服务器都以负载均衡集群的方式存在。
3 CDN 实现与测试
3.1 源站的部署
Nginx是一个自由、开源、高性能及轻量级的HTTP服务器及反转代理服务器。它以其高性能、稳定、功能丰富、配置简单及占用系统资源少而著称。Nginx可以做Web服务器,同时可以做反向代理服务器和邮件代理服务器。
本次实验采用Nginx作为Web服务器,在每个源站机器上安装Ngnix并配置。本文对三个站点进行CDN加速,因此对于单个机器的Nginx配置文件,就是运行3个虚拟主机。配置文件分主配置文件和虚拟主机配置文件,主配置文件include指令包含各个虚拟主机配置文件。
在配置完并启动Nginx后,需要在Windows客户端机器修改系统的hosts文件,修改 hosts:
本机的hosts文件所在目录是:C:\Windows\System32\Drivers\etc,其中10.10.10.76是源站的IP,而main.sery.cn、images.sery.cn、dl.sery.cn是站点的域名。浏览器分别访问这3个站点,以检验配置的正确性。
3.2 CDN缓存服务器
用户向某边缘服务器(边缘A)发起访问请求,所需内容没有被缓存。边缘服务器(边缘A)于是询问其邻居,是否缓存了用户所需的请求对象,邻居节点也没有缓存所需的对象。边缘服务器(边缘A)转而向某个父节点(核心A)请求文件,如果该父节点仍然无所需的文件,则该父节点询问其邻居;如果邻居也没有所需的文件,则把请求转给源站。源站返回数据给核心节点(核心A),并缓存数据在该节点。核心节点(核心A)返还数据给边缘节点(边缘A),并缓存数据在该节点。边缘节点返还数据给用户,一次最长路径的访问完成。这种分层机制既能保证最高的可用性,又能最大限度地减少向上一级节点的网络流量。
验证Varnish缓存功能时,修改hosts文件,其中IP为缓存服务器的IP。直接用Windows主机的浏览器访问缓存服务器的IP时,在正常情况下访问不到任何页面。图2所示为缓存服务器架构。
3.3 智能DNS
智能DNS的部署和运行分为收集IP地址、部署DNS以及运行。
智能DNS的部署和运行:DNS的软件选择Bind9,它是一种分布式网络信息查找服务,用于将主机名映射到Internet地址和将Internet地址映射到主机名。Bind9的主要特点有,支持IPv6、实现了DNS协议新扩展的功能、视图功能、支持多处理器以及增强了代码的可移植性。
配置Bind9主要有以下文件:
(1)设置一般的named参数,指向该服务器使用的数据库的信息源:/etc/named.conf
(2)指向根域名服务器:/vat/named/named.ca
(3)正向解析文件,用于将IP地址转换为主机名:/var/named/localhost.zone
(4)逆向解析文件,用于将主机名转换为IP地址:/var/named/named.1ocal
(5)将主机名映射为IP地址的区域文件:/vat/named/named.hosts
(6)将IP地址映射为主机名的区域:/var/named/named.rev
(7)用户定义的区文件,只需在主DNS服务器上进行,DNS服务器会从主DNS服务器同步数据,自动生成自己的区文件。
(8)用Windows客户机测试智能DNS。
正向解析测试结果如图3所示。本客户机的IP是10.10.10.212,属于教育网网段,因此解析到教育网的缓存服务器IP10.10.10.78。
反向解析测试结果如图4所示。本实验中智能DNS的IP为10.10.10.79,因此反向解析10.10.10.79为源站的域名sery.cn。
3.4 CDN的整体效果测试
在浏览器地址栏中输入正确的以域名标识的URL,如http://sery.cn,正常显示页面内容。图5所示为通过CDN访问Ngnix的界面图。
在浏览器地址栏中输入缓存服务器VIP,如http://10.10.10.75,正常情况下,应该访问不到任何页面。图6为测试缓存服务器图。
测试用户在使用浏览器访问源站的过程中,可以通过查看源站Web的访问日志、DNS服务器的查询记录、缓存服务器负载均衡器的输出以及抽查缓存服务器的TCP连接状态,从而分析和监控整个CDN系统的运作情况。
4 结 语
本文主要是基于实验室内部网络搭建的简单CDN系统,以实现对静态网页的访问加速。该系统主要由三个部分组成,源站、缓存服务器以及智能DNS。
CDN通过引入缓存服务器和全局负载均衡来加速内容传递,CDN网络体系负载均衡能够提高站点的访问速度,同时降低网络访问节点的压力。
参考文献
[1] CDN Market Dynamics, Analysis an d St reaming Share :2005-2006,AccuSt ream iMedi a Research, Mar,2006[EB/OL].http:/www.researchandmarket s .com
[2] Xu D, Kulkarni S,Rosenberg C,et al.A CDN-P2P hybrid architecture for cost-effectives treaming media dist ribution [J].Computer Networks , 2004 , 44(3):353-382.
[3] Savage S, Anderson T, Aggarw al A , et al.Det our :a case for informed Internet transport [J].IEEE Micro,1999,19.
[4] Pan J,Hou Y,Li B.An overview of DNS-based servers electionsin content distribution networks[J].ComputerNetworks, 2003,43(6):695-711.
[5] BIND9 Administrator Reference Manual:Chapter6[EB/OL].http://www.docin.com/p-3088232.html
[6] Internet Systems Consortium.BIND 9 Administrator ReferenceManual[EB/OL].http://www:isc.or~index.pl/sw/bind/arm93/.
[7] 霍耀森,盛大同.Web Caching技术和CDN 技术及其比较分析[J].计算机应用, 2003,20(5):135-137.
[8] 袁亚兴,贾卓生.CDN 技术在远程教育中的应用[J] .华中科技大学学报(自然科学版), 2003,31(S1):299-301.
[9] 雷葆华,孙颖, 王峰, 等. CDN技术详解[M].北京: 电子工业出版社, 2012.
[10] 尹浩, 詹同宇, 林闯.多媒体网络: 从内容分发网络到未来互联网[J].计算机学报, 2012, 35(6):112-113.