李聰穎 王瑞剛 梁小江
摘 要:CDN是互聯(lián)網(wǎng)上的一層智能虛擬網(wǎng)絡(luò),通過在網(wǎng)絡(luò)各節(jié)點(diǎn)處放置緩存服務(wù)器,可根據(jù)各節(jié)點(diǎn)的連接狀況、負(fù)載狀況、網(wǎng)絡(luò)流量,以及各節(jié)點(diǎn)到用戶的距離和響應(yīng)時(shí)間的長短等因素,使用戶從最近的服務(wù)節(jié)點(diǎn)上獲取資源。文中主要通過對智能DNS的解析,使用戶訪問CDN服務(wù)站點(diǎn)時(shí),能夠?qū)崿F(xiàn)不同用戶的域名解析,若緩存服務(wù)器中沒有用戶需要的資源,則通過源站獲取,這樣可以增加訪問速度,提高用戶體驗(yàn)。
關(guān)鍵詞:CDN;內(nèi)容分發(fā)網(wǎng)絡(luò);智能DNS;網(wǎng)絡(luò)加速;緩存服務(wù)器
中圖分類號:TP302.1 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2015)12-00-03
0 引 言
隨著Internet技術(shù)和多媒體技術(shù)的不斷發(fā)展,圖像、音頻、視頻服務(wù)所占的比重越來越大,加之網(wǎng)民數(shù)量激增,網(wǎng)絡(luò)訪問距離過長,導(dǎo)致網(wǎng)絡(luò)負(fù)載迅速增加,從而使用戶的訪問質(zhì)量受到嚴(yán)重影響。
傳統(tǒng)的緩存技術(shù)對交互性強(qiáng)和比較大的文件并不支持,因此迫切需要一種新的傳輸結(jié)構(gòu)來解決這一問題,此外,當(dāng)用戶與網(wǎng)站之間的鏈路被突發(fā)的大流量數(shù)據(jù)擁塞時(shí),對于異地互聯(lián)網(wǎng)用戶急速增加的地區(qū)來說,訪問質(zhì)量不良更是一個(gè)急待解決的問題。而應(yīng)運(yùn)而生的CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))技術(shù)正是針對帶寬、響應(yīng)速度、擴(kuò)展性、可靠性等對網(wǎng)絡(luò)進(jìn)行改善。
使用CDN技術(shù),可以讓電信的用戶訪問電信的內(nèi)容緩存服務(wù)器,網(wǎng)通的用戶訪問網(wǎng)通的內(nèi)容緩存服務(wù)器。通過這樣一種策略,繞開了網(wǎng)絡(luò)運(yùn)營商之間人為設(shè)置的障礙,解決了互聯(lián)的問題。
1 CDN特性
CDN可以避開互聯(lián)網(wǎng)上影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸更快、更穩(wěn)定。CDN通過在Internet中增加一層新的網(wǎng)絡(luò)架構(gòu),即智能CDN以及緩存服務(wù)器集群,將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)邊緣,用戶可以快速獲取所需的內(nèi)容,能夠有效解決Internet網(wǎng)絡(luò)擁塞狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度,解決網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點(diǎn)分布不均等問題。
CDN技術(shù)能夠解決網(wǎng)站高流量、大并發(fā)的問題和互聯(lián)問題。CDN采用緩存技術(shù),把訪問對象緩存起來,能把對象緩存到內(nèi)存(如Varnish)。能夠降低總體運(yùn)營成本,提高網(wǎng)站的可用性,使得源站的訪問量變得很小,對于緩存服務(wù)器,多個(gè)服務(wù)器做成集群,保證了整個(gè)系統(tǒng)的高可用性。
2 整體設(shè)計(jì)
當(dāng)用戶訪問CDN加速的站點(diǎn)時(shí),首先會(huì)通過瀏覽器向智能DNS發(fā)出請求,智能DNS會(huì)根據(jù)IP地址列表解析出該用戶屬于哪個(gè)網(wǎng)段的用戶,隨后智能DNS會(huì)返回給用戶緩存服務(wù)器集群的VIP,然后用戶通過訪問這個(gè)VIP去訪問緩存服務(wù)器,如果緩存服務(wù)器中緩存了用戶需要的內(nèi)容,則直接返回給用戶信息。否則,緩存服務(wù)器需要訪問源站,去尋找用戶需要的內(nèi)容,源站把信息返回給緩存服務(wù)器,緩存服務(wù)器緩存此內(nèi)容并返回給用戶。
CDN是一種組合技術(shù),包括源站、緩存服務(wù)器、智能DNS、用戶客戶端等幾個(gè)部分。圖1所示為CDN的全局結(jié)構(gòu)圖。
源站為發(fā)布內(nèi)容的原始站點(diǎn),可以新增、刪除和更改網(wǎng)站的文件。緩存服務(wù)器抓取的對象也全部來自于源站。采用CDN技術(shù)后源站的壓力會(huì)變得很小,為了提高可用性,將源站部署成負(fù)載均衡集群。
智能DNS實(shí)現(xiàn)用戶訪問的轉(zhuǎn)向功能,是整個(gè)CDN的核心,它根據(jù)用戶訪問的來源,將其訪問請求轉(zhuǎn)向到離用戶較近或較合適的緩存服務(wù)器。
實(shí)現(xiàn)智能DNS的一種技術(shù)是Bind View,在本文中,使用電信、網(wǎng)通、教育網(wǎng)3個(gè)IP地址列表,每個(gè)列表關(guān)聯(lián)獨(dú)立的Bind視圖,共有3個(gè)視圖。
Varnish作為緩存服務(wù)器,當(dāng)用戶發(fā)起訪問時(shí),它的訪問請求被智能DNS定位到離它較近的緩存服務(wù)器,如果訪問所需的內(nèi)容沒有被緩存,則緩存服務(wù)器向鄰近的緩存服務(wù)器或直接向源站抓取內(nèi)容,然后再返還給用戶。如果用戶所請求的內(nèi)容剛好在緩存里面,則直接把內(nèi)容返還給用戶。為保證緩存服務(wù)本身的高可用性,每個(gè)布點(diǎn)的服務(wù)器都以負(fù)載均衡集群的方式存在。
3 CDN 實(shí)現(xiàn)與測試
3.1 源站的部署
Nginx是一個(gè)自由、開源、高性能及輕量級的HTTP服務(wù)器及反轉(zhuǎn)代理服務(wù)器。它以其高性能、穩(wěn)定、功能豐富、配置簡單及占用系統(tǒng)資源少而著稱。Nginx可以做Web服務(wù)器,同時(shí)可以做反向代理服務(wù)器和郵件代理服務(wù)器。
本次實(shí)驗(yàn)采用Nginx作為Web服務(wù)器,在每個(gè)源站機(jī)器上安裝Ngnix并配置。本文對三個(gè)站點(diǎn)進(jìn)行CDN加速,因此對于單個(gè)機(jī)器的Nginx配置文件,就是運(yùn)行3個(gè)虛擬主機(jī)。配置文件分主配置文件和虛擬主機(jī)配置文件,主配置文件include指令包含各個(gè)虛擬主機(jī)配置文件。
在配置完并啟動(dòng)Nginx后,需要在Windows客戶端機(jī)器修改系統(tǒng)的hosts文件,修改 hosts:
本機(jī)的hosts文件所在目錄是:C:\Windows\System32\Drivers\etc,其中10.10.10.76是源站的IP,而main.sery.cn、images.sery.cn、dl.sery.cn是站點(diǎn)的域名。瀏覽器分別訪問這3個(gè)站點(diǎn),以檢驗(yàn)配置的正確性。
3.2 CDN緩存服務(wù)器
用戶向某邊緣服務(wù)器(邊緣A)發(fā)起訪問請求,所需內(nèi)容沒有被緩存。邊緣服務(wù)器(邊緣A)于是詢問其鄰居,是否緩存了用戶所需的請求對象,鄰居節(jié)點(diǎn)也沒有緩存所需的對象。邊緣服務(wù)器(邊緣A)轉(zhuǎn)而向某個(gè)父節(jié)點(diǎn)(核心A)請求文件,如果該父節(jié)點(diǎn)仍然無所需的文件,則該父節(jié)點(diǎn)詢問其鄰居;如果鄰居也沒有所需的文件,則把請求轉(zhuǎn)給源站。源站返回?cái)?shù)據(jù)給核心節(jié)點(diǎn)(核心A),并緩存數(shù)據(jù)在該節(jié)點(diǎn)。核心節(jié)點(diǎn)(核心A)返還數(shù)據(jù)給邊緣節(jié)點(diǎn)(邊緣A),并緩存數(shù)據(jù)在該節(jié)點(diǎn)。邊緣節(jié)點(diǎn)返還數(shù)據(jù)給用戶,一次最長路徑的訪問完成。這種分層機(jī)制既能保證最高的可用性,又能最大限度地減少向上一級節(jié)點(diǎn)的網(wǎng)絡(luò)流量。
驗(yàn)證Varnish緩存功能時(shí),修改hosts文件,其中IP為緩存服務(wù)器的IP。直接用Windows主機(jī)的瀏覽器訪問緩存服務(wù)器的IP時(shí),在正常情況下訪問不到任何頁面。圖2所示為緩存服務(wù)器架構(gòu)。
3.3 智能DNS
智能DNS的部署和運(yùn)行分為收集IP地址、部署DNS以及運(yùn)行。
智能DNS的部署和運(yùn)行:DNS的軟件選擇Bind9,它是一種分布式網(wǎng)絡(luò)信息查找服務(wù),用于將主機(jī)名映射到Internet地址和將Internet地址映射到主機(jī)名。Bind9的主要特點(diǎn)有,支持IPv6、實(shí)現(xiàn)了DNS協(xié)議新擴(kuò)展的功能、視圖功能、支持多處理器以及增強(qiáng)了代碼的可移植性。
配置Bind9主要有以下文件:
(1)設(shè)置一般的named參數(shù),指向該服務(wù)器使用的數(shù)據(jù)庫的信息源:/etc/named.conf
(2)指向根域名服務(wù)器:/vat/named/named.ca
(3)正向解析文件,用于將IP地址轉(zhuǎn)換為主機(jī)名:/var/named/localhost.zone
(4)逆向解析文件,用于將主機(jī)名轉(zhuǎn)換為IP地址:/var/named/named.1ocal
(5)將主機(jī)名映射為IP地址的區(qū)域文件:/vat/named/named.hosts
(6)將IP地址映射為主機(jī)名的區(qū)域:/var/named/named.rev
(7)用戶定義的區(qū)文件,只需在主DNS服務(wù)器上進(jìn)行,DNS服務(wù)器會(huì)從主DNS服務(wù)器同步數(shù)據(jù),自動(dòng)生成自己的區(qū)文件。
(8)用Windows客戶機(jī)測試智能DNS。
正向解析測試結(jié)果如圖3所示。本客戶機(jī)的IP是10.10.10.212,屬于教育網(wǎng)網(wǎng)段,因此解析到教育網(wǎng)的緩存服務(wù)器IP10.10.10.78。
反向解析測試結(jié)果如圖4所示。本實(shí)驗(yàn)中智能DNS的IP為10.10.10.79,因此反向解析10.10.10.79為源站的域名sery.cn。
3.4 CDN的整體效果測試
在瀏覽器地址欄中輸入正確的以域名標(biāo)識的URL,如http://sery.cn,正常顯示頁面內(nèi)容。圖5所示為通過CDN訪問Ngnix的界面圖。
在瀏覽器地址欄中輸入緩存服務(wù)器VIP,如http://10.10.10.75,正常情況下,應(yīng)該訪問不到任何頁面。圖6為測試緩存服務(wù)器圖。
測試用戶在使用瀏覽器訪問源站的過程中,可以通過查看源站W(wǎng)eb的訪問日志、DNS服務(wù)器的查詢記錄、緩存服務(wù)器負(fù)載均衡器的輸出以及抽查緩存服務(wù)器的TCP連接狀態(tài),從而分析和監(jiān)控整個(gè)CDN系統(tǒng)的運(yùn)作情況。
4 結(jié) 語
本文主要是基于實(shí)驗(yàn)室內(nèi)部網(wǎng)絡(luò)搭建的簡單CDN系統(tǒng),以實(shí)現(xiàn)對靜態(tài)網(wǎng)頁的訪問加速。該系統(tǒng)主要由三個(gè)部分組成,源站、緩存服務(wù)器以及智能DNS。
CDN通過引入緩存服務(wù)器和全局負(fù)載均衡來加速內(nèi)容傳遞,CDN網(wǎng)絡(luò)體系負(fù)載均衡能夠提高站點(diǎn)的訪問速度,同時(shí)降低網(wǎng)絡(luò)訪問節(jié)點(diǎn)的壓力。
參考文獻(xiàn)
[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技術(shù)和CDN 技術(shù)及其比較分析[J].計(jì)算機(jī)應(yīng)用, 2003,20(5):135-137.
[8] 袁亞興,賈卓生.CDN 技術(shù)在遠(yuǎn)程教育中的應(yīng)用[J] .華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版), 2003,31(S1):299-301.
[9] 雷葆華,孫穎, 王峰, 等. CDN技術(shù)詳解[M].北京: 電子工業(yè)出版社, 2012.
[10] 尹浩, 詹同宇, 林闖.多媒體網(wǎng)絡(luò): 從內(nèi)容分發(fā)網(wǎng)絡(luò)到未來互聯(lián)網(wǎng)[J].計(jì)算機(jī)學(xué)報(bào), 2012, 35(6):112-113.