韓瑞東
(運(yùn)城學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,山西運(yùn)城044000)
基于CDN架構(gòu)的WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)
韓瑞東
(運(yùn)城學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,山西運(yùn)城044000)
在網(wǎng)絡(luò)中,可能出現(xiàn)大量用戶在同一時(shí)間節(jié)點(diǎn)訪問同一臺(tái)服務(wù)器來獲取同一網(wǎng)絡(luò)資源,如春運(yùn)搶票和高校網(wǎng)上選課。針對這些情況,提出了一種CDN技術(shù),將幾個(gè)地理位置不同的鏡像WEB服務(wù)器從源WEB服務(wù)器上復(fù)制內(nèi)容服務(wù)到本地,讓用戶就近獲取內(nèi)容,克服了互聯(lián)網(wǎng)固有的局限性,并提供了一種改進(jìn)資源獲取的服務(wù)方式,減少請求響應(yīng)時(shí)間,增加了用戶體驗(yàn),以及提高了安全性。
網(wǎng)絡(luò)資源;CDN技術(shù);WEB服務(wù)器;響應(yīng)時(shí)間;安全性
隨著互聯(lián)網(wǎng)的普及,WEB服務(wù)器經(jīng)常接收到大量的用戶并發(fā)訪問從而導(dǎo)致?lián)矶?。這種情況就會(huì)使流量難以控制,許多請求被丟失。基于此,提出了CDN(Content Delivery Network)技術(shù),其工作原理就是當(dāng)用戶在請求網(wǎng)絡(luò)資源時(shí),用戶的請求被重定向到最近的服務(wù)器上,這種做法有助于減少用戶的請求響應(yīng)時(shí)間,為網(wǎng)絡(luò)減輕負(fù)荷。內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)盡量避開那些可能影響網(wǎng)絡(luò)數(shù)據(jù)傳輸和穩(wěn)定性的環(huán)節(jié)和瓶頸,使數(shù)據(jù)傳送更迅速、更安全。CDN是一種智能虛擬網(wǎng)絡(luò),通過在現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)之上各處放置節(jié)點(diǎn)服務(wù)器,其能夠根據(jù)實(shí)時(shí)流量、各網(wǎng)絡(luò)連接節(jié)點(diǎn)、網(wǎng)絡(luò)負(fù)載以及用戶請求距離與響應(yīng)時(shí)間等綜合信息將用戶請求重新定向到最近的節(jié)點(diǎn)服務(wù)器上。目的就是為了讓用戶就近獲取所需要內(nèi)容,解決網(wǎng)絡(luò)擁塞問題,提高用戶請求響應(yīng)時(shí)間[1]。
內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)部署在多個(gè)數(shù)據(jù)中心代理服務(wù)器的全球分布式網(wǎng)絡(luò),也稱為網(wǎng)站加速,CDN加速將網(wǎng)站的內(nèi)容緩存在網(wǎng)絡(luò)邊緣,使用戶就近獲取所需要的內(nèi)容,提高訪問網(wǎng)站的速度。CDN有別于鏡像,其比鏡像更加智能,CDN=更智能的鏡像+流量導(dǎo)流+緩存。CDN的實(shí)現(xiàn)需要依賴多種網(wǎng)絡(luò)技術(shù)的支持,最主要的技術(shù)有緩存技術(shù)、負(fù)載均衡技術(shù)、動(dòng)態(tài)內(nèi)容分發(fā)與復(fù)制技術(shù)等[2]。CDN的工作流程如下:當(dāng)用戶訪問加入CDN服務(wù)的網(wǎng)站時(shí),首先通過DNS重定向技術(shù)確定網(wǎng)絡(luò)中離用戶最近的那個(gè)CDN節(jié)點(diǎn),并且將用戶的請求指向該節(jié)點(diǎn)。當(dāng)CDN節(jié)點(diǎn)收到用戶的請求時(shí),節(jié)點(diǎn)上的高速緩存(CDN服務(wù)器)就將所請求的內(nèi)容傳送回用戶[3]。
本架構(gòu)的搭建與部署主要是通過三個(gè)層面來實(shí)現(xiàn)的。第一,真實(shí)的源服務(wù)器運(yùn)行在Linux系統(tǒng)上,后端的WEB服務(wù)由Nginx提供支持;第二,把真實(shí)服務(wù)器的資源通過Squid反向代理同步到不同地域的計(jì)算機(jī)(網(wǎng)絡(luò)節(jié)點(diǎn))上;第三,通過部署智能DNS解析來達(dá)到用戶能從離自己最近的WEB服務(wù)器上獲取資源的功能,這是架構(gòu)實(shí)現(xiàn)的關(guān)鍵所在。
(1)網(wǎng)絡(luò)拓?fù)浞治觯壕W(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)是用來描述互聯(lián)網(wǎng)中硬件設(shè)備之間的連接方式和組織架構(gòu)。通過一個(gè)網(wǎng)絡(luò)的拓?fù)鋱D就可以大致了解網(wǎng)絡(luò)信息的流轉(zhuǎn)原理和工作機(jī)制;
(3)智能DNS分析:智能DNS通過用戶端的IP地址的不同進(jìn)行智能的劃分用戶的請求網(wǎng)絡(luò)資源將會(huì)從離用戶最近的代理服務(wù)器那里獲取。
本網(wǎng)絡(luò)架構(gòu)搭建成功以后,各其它一般的網(wǎng)絡(luò)架構(gòu)相比,在性能方面具有如下幾個(gè)優(yōu)勢:
(1)本網(wǎng)絡(luò)架構(gòu)可以在一定程度上并發(fā)處理上萬的網(wǎng)絡(luò)請求。通過它的DNS分類處理會(huì)把不同地域的請求轉(zhuǎn)發(fā)給不同的代理服務(wù)器,從而也實(shí)現(xiàn)了負(fù)載均衡;
(2)由于本架構(gòu)的設(shè)計(jì)實(shí)現(xiàn)的整個(gè)過程中,用到的網(wǎng)絡(luò)機(jī)制就是內(nèi)容分發(fā),所以這就決定在性能方面還有一大特性就是能夠有效降低DDOS的攻擊,完美的解決了這一類網(wǎng)絡(luò)攻擊的頑疾。
通過需求分析,本架構(gòu)還有安全性、穩(wěn)定性、兼容性、合理性等多個(gè)特性。
本架構(gòu)由三大功能模塊組成,分別是源服務(wù)器模塊、反向代理分發(fā)模塊和智能DNS分流模塊。其中,源服務(wù)器模塊由Nginx提供支持,反向代理分發(fā)模塊由Squid提供支持,最后的智能DNS分流模塊由View模塊實(shí)現(xiàn)。功能模塊圖如圖1所示。
軍事智能化是一把雙刃劍,一方面,它在很多領(lǐng)域能代替人類完成艱難險(xiǎn)重的任務(wù),使部隊(duì)官兵從繁雜的事務(wù)中解脫出來,將科技作為第一戰(zhàn)斗力、核心戰(zhàn)斗力的貢獻(xiàn)率大幅提高;另一方面,它也可以為恐怖分子和邪教組織所用,對人類實(shí)施恐怖襲擊,給社會(huì)造成不可挽回的危害。同時(shí),隨著智能機(jī)器人技術(shù)的發(fā)展,它本身也會(huì)成為一個(gè)獨(dú)立的行為個(gè)體。倘若智能機(jī)器人脫離了人類的控制,也存在著做出反人類行為的可能性。因此,我們對智能武器可能出現(xiàn)的危害性也要高度警惕,并建立完善的預(yù)防處置方案,防患于未然或?qū)⑽:p失降到最低。
圖1 架構(gòu)功能模塊圖
源服務(wù)器模塊:后臺(tái)真實(shí)的服務(wù)器組,上面運(yùn)行WEB等的其他服務(wù)。
反向代理模塊:通過Squid技術(shù)把源服務(wù)器的資源同步到不同地方的代理服務(wù)器上,并向用戶提供服務(wù)。
智能DNS模塊:當(dāng)用戶請求網(wǎng)絡(luò)資源時(shí),DNS會(huì)通過之前配置好的View視圖去智能匹配和分發(fā),把離用戶最近的網(wǎng)絡(luò)資源返回給用戶。
通過上述三個(gè)模塊的配合實(shí)現(xiàn),比如當(dāng)太原的網(wǎng)民訪問優(yōu)酷網(wǎng)時(shí),域名服務(wù)器可以解析為北京本地的優(yōu)酷網(wǎng)服務(wù)器,江蘇地區(qū)的網(wǎng)民訪問優(yōu)酷網(wǎng)時(shí),域名服務(wù)器將會(huì)把上海的優(yōu)酷網(wǎng)服務(wù)器IP地址作為結(jié)果返回給用戶。這樣,所有人訪問優(yōu)酷網(wǎng)查看網(wǎng)頁時(shí),總是可以連接自己最近的服務(wù)器。
本架構(gòu)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖如圖2所示。
圖2 網(wǎng)絡(luò)拓?fù)鋱D
(1)源服務(wù)器組
拓?fù)鋱D中的Web1和Web2是后臺(tái)的真實(shí)服務(wù)器組群,把要運(yùn)行的服務(wù)如Web服務(wù)全跑在它們上面,它們上面的資源應(yīng)該是一致的[4]。
(2)代理服務(wù)器組
拓?fù)鋱D中的代理服務(wù)器在地理位置上是不同的并且是相互獨(dú)立的。通過Squid技術(shù)可以把真實(shí)服務(wù)器中的網(wǎng)絡(luò)資源同步下載到代理服務(wù)器中。所以當(dāng)用戶訪問服務(wù)器的時(shí)候其實(shí)并不是真實(shí)服務(wù)器在工作,而是代理服務(wù)器在工作。這樣的好處是把真實(shí)服務(wù)器隱藏在后臺(tái),用戶看不到也鏈接不上,這樣就大大提高用戶響應(yīng)時(shí)間,降低DDOS的惡意攻擊,為服務(wù)器的安全和可靠提供了保證。
(3)DNS服務(wù)器組
拓?fù)鋱D中的DNS服務(wù)器在整個(gè)架構(gòu)中充當(dāng)一個(gè)流水線的“分揀工”。通過View視圖的配置它會(huì)智能識(shí)別來自不同地區(qū)用戶的網(wǎng)絡(luò)請求,最終的結(jié)果是離用戶最近的代理服務(wù)器發(fā)送網(wǎng)絡(luò)資源給用戶,在用戶的層面是根本察覺不到的。這樣做的好處是大大提高了用戶的訪問效率,提高了用戶上網(wǎng)體驗(yàn)度。
使用7臺(tái)Linux主機(jī)部署CDN環(huán)境架構(gòu),使用Nginx作為后端源Web服務(wù)器,Squid作為各地區(qū)反向代理服務(wù)器,BIND作為分離解析DNS服務(wù)器,本網(wǎng)絡(luò)架構(gòu)的虛擬實(shí)現(xiàn)部署的總體方案安排如下[5]:
DNS服務(wù)器(172.16.0.254):dns254.ycu.com反向代理服務(wù)器(172.16.0.100):squid100.yc.com反向代理服務(wù)器(172.16.0.200):squid200.ycu.com Web1服務(wù)器(172.16.0.10):web10.ycu.com Web2服務(wù)器(172.16.0.20):web20.ycu.com測試客戶機(jī)01(172.16.0.1):pc01.ycu.com測試客戶機(jī)02(172.16.0.2):pc02.ycu.com
實(shí)現(xiàn)此案例需要按照如下步驟進(jìn)行:
(1)使用yum安裝基礎(chǔ)依賴包并使用源碼安裝LNMP環(huán)境軟件,使用源碼安裝Nginx軟件,使用源碼安裝mhash,libiconv,libmcrypt,php等;
(2)啟動(dòng)相關(guān)服務(wù)。軟件安裝完畢后默認(rèn)是沒有啟動(dòng)的。軟件的啟動(dòng)要按下面的順序來操作:首先啟動(dòng)Nginx服務(wù)器,這里需要注意的是,如果服務(wù)器上已經(jīng)啟動(dòng)了其他監(jiān)聽80端口的服務(wù)軟件(如httpd),則需要先關(guān)閉該服務(wù),否則會(huì)出現(xiàn)沖突;
(3)修改配置文件實(shí)現(xiàn)FastCGI功能。
在拓?fù)鋱D的設(shè)計(jì)中,反向代理服務(wù)器的設(shè)計(jì)目的在于:真正提供網(wǎng)絡(luò)服務(wù)的是代理服務(wù)器,這樣就把源服務(wù)器隱藏在用戶接觸不到的地方,大大提高了服務(wù)器的安全性和可靠性。代理服務(wù)器通過安裝Squid軟件會(huì)自動(dòng)同步源服務(wù)器的網(wǎng)絡(luò)資源。部分具體實(shí)現(xiàn)代碼如下:為Squid100主機(jī)的IP。
通過部署DNS,會(huì)智能的分辨用戶的網(wǎng)絡(luò)請求。當(dāng)一個(gè)用戶發(fā)來上網(wǎng)請求后,DNS會(huì)根據(jù)用戶的源IP地址進(jìn)行分類,給用戶分配一個(gè)距離他最近的代理服務(wù)器提供服務(wù)。具體實(shí)現(xiàn)代碼片段如下:
修改區(qū)域數(shù)據(jù)文件,添加域名解析記錄。注意因?yàn)樾枰獙?shí)現(xiàn)分離解析,故此區(qū)域數(shù)據(jù)文件需要?jiǎng)?chuàng)建兩份,并且要求解析記錄要有所不同。具體實(shí)現(xiàn)代碼片段如下:
通過上述的三個(gè)模塊的設(shè)計(jì)與部署基本實(shí)現(xiàn)了CDN的架構(gòu)功能,通過異地PC1和異地PC2訪問www.ycu.com,通過服務(wù)器上的訪問記錄日志可知道是通過不同的代理服務(wù)器獲得的網(wǎng)絡(luò)資源。如果把這一CDN網(wǎng)絡(luò)架構(gòu)真正搭建在互聯(lián)網(wǎng)中,便可以實(shí)現(xiàn)企業(yè)網(wǎng)站的負(fù)載均衡,不同地區(qū)的用戶總是從離自己最近的代理服務(wù)器那里獲取所需的網(wǎng)絡(luò)資源。
[1]石建松.基于云計(jì)算的CDN流媒體分發(fā)平臺(tái)關(guān)鍵技術(shù)研究[J].華南理工大學(xué)學(xué)報(bào),2012(7):30-37.
[2]楊明川.內(nèi)容分發(fā)網(wǎng)絡(luò)關(guān)鍵技術(shù)分析[J].電信科學(xué),2005(8):12-18.
[3]劉衛(wèi)寧,高龍.異構(gòu)云中面向集群負(fù)載均衡的任務(wù)調(diào)度策略[J].計(jì)算機(jī)應(yīng)用,2013(8):9-12.
[4]郭欣.構(gòu)建高性能Web站點(diǎn)(修訂版)[M].北京:電子工業(yè)出版社,2012.
[5]易柏勝.基于虛擬機(jī)動(dòng)態(tài)變更機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)[D].廣州華南理工大學(xué),2013.
The Design and Implementation of WEB Server Based on CDN Architecture
HAN Rui-dong
(Department of Computer Science and Technology of Yuncheng University,Yuncheng Shanxi,044000)
In the network,the same server may receive a large number of users’access at the same time node to get the same net?work resources,such as travel tickets and college online course selection.In view of this situation,CDN technology is proposed,com?bines several geographically mirrored WEB server copy contents from a source WEB server to the local,allows users to get content,overcomes the inherent limitations of the Internet,and provides an improved resource acquisition services,reduces response time,in?creases the user experience,and improves security.
network resources;CDN technology;WEB server;response time;security
O175
A
1674-0874(2016)05-0017-04
2016-07-08
運(yùn)城學(xué)院協(xié)同創(chuàng)新研究項(xiàng)目[CI-2015018]
韓瑞東(1988-),男,山西運(yùn)城人,碩士,助教,研究方向:軟件開發(fā)技術(shù)。
〔責(zé)任編輯 高海〕