李聰穎 王瑞剛 梁小江



摘 要: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.