摘要:Varnish是一個優(yōu)秀的開源的反向代理軟件和HTTP加速器。本文介紹了基于開源的Varnish在校園網(wǎng)絡(luò)中部署高性能的反向代理服務(wù)器和負(fù)載均衡服務(wù)器,并在此基礎(chǔ)上,剖析了Varnish的工作原理。
關(guān)鍵詞:Varnish;反向代理;緩存;負(fù)載均衡
中圖分類號:TN948.64 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 24-0112-02
1 研究背景
南京師范大學(xué)泰州學(xué)院目前從CERNET(中國教育和科研計算機網(wǎng))申請到16個C類IP地址段,從CHINANET(中國公用計算機互聯(lián)網(wǎng))申請到24個IP地址,從CMNET(中國移動互聯(lián)網(wǎng))申請到16個IP地址。本校的校園網(wǎng)出口有三條線路,分別通過CERNET、CHINANET和CMNET接入Internet。在校園網(wǎng)上的應(yīng)用系統(tǒng)主要有學(xué)校網(wǎng)站、辦公自動化系統(tǒng)、教務(wù)信息系統(tǒng)、校園卡“一卡通”系統(tǒng)、CAMS自助服務(wù)平臺等。隨著網(wǎng)絡(luò)的高速發(fā)展,網(wǎng)絡(luò)應(yīng)用及用戶數(shù)均呈幾何倍數(shù)增長,面對訪問者數(shù)量的快速增加,網(wǎng)絡(luò)服務(wù)器需要具備大量并發(fā)訪問服務(wù)的能力,解決以下問題,可以使學(xué)校的各應(yīng)用系統(tǒng)各應(yīng)用系統(tǒng)更為快速、高效、平穩(wěn)、及安全的運轉(zhuǎn):
(1)利用反向代理來解決學(xué)校公網(wǎng)IP地址不足的問題,并提高應(yīng)用系統(tǒng)的安全性,如:CAMS自助服務(wù)平臺與CAMS認(rèn)證服務(wù)系統(tǒng)部署在同一臺服務(wù)器上,一旦CAMS自助服務(wù)平臺被入侵,將威脅到CAMS認(rèn)證服務(wù)系統(tǒng)中的數(shù)據(jù)安全。
(2)利用負(fù)載均衡技術(shù)來構(gòu)建校園網(wǎng)應(yīng)用的集群系統(tǒng),實現(xiàn)校園網(wǎng)應(yīng)用系統(tǒng)的高可用性和可擴展性。
基于Varnish高性能的反向代理和負(fù)載均衡服務(wù)器,配合Linux的Keepalived的功能是解決以上兩個問題的有效途徑之一。
2 Varnish簡介
Varnish是一款高性能且開源的反向代理和HTTP加速器,它的開發(fā)者Poul-Henning Kamp是FREEBSD的核心開發(fā)人員之一。Varinsh采用了全新的軟件體系機構(gòu),和現(xiàn)在的硬件體系配合更為緊密,能夠充分發(fā)揮硬件的性能。先進(jìn)的設(shè)計理念和成熟的設(shè)計框架式Varnish的主要特點。Varnish的一些特點如下:
(1)基于內(nèi)存對數(shù)據(jù)進(jìn)行緩存,采用了“Visual Page Cache”技術(shù)。
(2)利用虛擬內(nèi)存方式,I/O性能出眾。
(3)VCL配置管理比較靈活。
(4)具有強大的管理功能。
(5)狀態(tài)機設(shè)計巧妙,結(jié)構(gòu)清晰。
(6)利用二叉堆管理緩存文件,可以使用正則表達(dá)式快速、批量地清除部分緩存,可達(dá)到積極刪除的目的。
3 Varnish在校園網(wǎng)中的應(yīng)用
Varnish在校園網(wǎng)中主要是用作提供反向代理服務(wù)和高性能的負(fù)載均衡的服務(wù)器
3.1 基于Varnish的反向代理
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受外部網(wǎng)絡(luò)上的HTTP連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給外部網(wǎng)絡(luò)上請求連接的客戶機,此時代理服務(wù)器對外就表現(xiàn)為一個WEB服務(wù)器。普通的代理服務(wù)器不支持外部對內(nèi)部網(wǎng)絡(luò)的訪問請求。當(dāng)一個代理服務(wù)器能夠代理外部網(wǎng)絡(luò)上的主機,訪問內(nèi)部網(wǎng)絡(luò)時,這種代理服務(wù)的方式稱為反向代理服務(wù)。
3.1.1 提升Web服務(wù)器的安全性
反向代理服務(wù)器可以作為Web服務(wù)器的前置服務(wù)器,從而提升WEB服務(wù)器的安全性。代理服務(wù)器對外就表現(xiàn)為一個WEB服務(wù)器,外部網(wǎng)絡(luò)就可以簡單把它當(dāng)作一個標(biāo)準(zhǔn)的 Web 服務(wù)器而不需要特定的配置。不同之處在于,這個服務(wù)器沒有保存任何網(wǎng)頁的真實數(shù)據(jù),所有的靜態(tài)網(wǎng)頁或者 CGI程序,都保存在內(nèi)部的 Web 服務(wù)器上。因此對反向代理服務(wù)器的攻擊并不會使得網(wǎng)頁信息遭到破壞,這樣就增強了 Web服務(wù)器的安全性。
3.1.2 解決公網(wǎng)IP不足的問題
將所有的域名通過DNS服務(wù)器解析為反向代理服務(wù)器的IP地址,用戶通過域名發(fā)出訪問Web服務(wù)器的請求,此時反向代理服務(wù)器接受用戶的請求,通過URL來識別用戶需訪問的Web服務(wù)器,并代替用戶向各個源服務(wù)器請求同樣的信息內(nèi)容,并把信息內(nèi)容發(fā)給用戶。這樣,節(jié)約了有限的 IP 地址資源,校園網(wǎng)的內(nèi)所有網(wǎng)站只需共享一個在 Internet 中注冊的 IP 地址,而這些服務(wù)器則只需分配私有地址,采用虛擬主機的方式對外提供服務(wù)。
3.1.3 加速Web服務(wù)器的訪問
通常所說的 Web 服務(wù)器加速,它是一種通過在繁忙的 web服務(wù)器和外部網(wǎng)絡(luò)之間增加一個高速的 Web緩沖服務(wù)器來降低實際的 Web 服務(wù)器的負(fù)載的一種技術(shù)。反向代理是針對Web 服務(wù)器提高加速功能,作為代理緩存,它并不是針對瀏覽器用戶,而針對一臺或多臺特定的Web 服務(wù)器。它會把本地緩存里的內(nèi)容直接發(fā)給用戶,以減少后端 web 服務(wù)器的壓力,提高響應(yīng)速度。
3.2 基于Varnish的負(fù)載均衡
由于目前現(xiàn)有高校網(wǎng)絡(luò)的各個核心業(yè)務(wù)系統(tǒng)隨著訪問量的提高,數(shù)據(jù)流量也在快速增長,服務(wù)器所面臨的處理能力和計算強度也相應(yīng)的增大,某些大訪問量的業(yè)務(wù)系統(tǒng)已經(jīng)無法由單一的服務(wù)器設(shè)備來承載。在此情況下,如
果淘汰掉現(xiàn)有服務(wù)器去做大規(guī)模的硬件升級,這樣不僅將造成資源的浪費,而且如果再面臨下一次業(yè)務(wù)量的提升時,又將導(dǎo)致再一次硬件升級的高額成本投入,甚至性能再卓越的設(shè)備也不能滿足業(yè)務(wù)量持續(xù)增長的需求。而負(fù)載均衡則是解決這一困境的最為廉價且有效的方法。
負(fù)載均衡是建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價又有效的方法來擴展網(wǎng)絡(luò)服務(wù)器的帶寬、增加吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。目前,負(fù)載均衡的實現(xiàn)分為硬件和軟件兩大類。而對于高校而言,硬件產(chǎn)品的價格過于昂貴,一般會優(yōu)先選用軟件來實現(xiàn)負(fù)載均衡的功能。而免費的開源軟件Varnish的負(fù)載均衡的功能及其性能可以滿足絕大部分高校的需求。Varnish的分布式負(fù)載均衡的設(shè)置可以使用weight=num來配置后端服務(wù)器的處理服務(wù)請求的權(quán)值。
Varnish負(fù)載均衡的配置實例如下:
direct webserver random{
{.backend = webserver1; .weight=5 }
{.backend = webserver1; .weight=8 }
4 結(jié)束語
盡管在所論述的Varnish在校園網(wǎng)絡(luò)中的應(yīng)用方案中,并不都是最優(yōu)的解決方案,例如服務(wù)器負(fù)載均衡方案,但對于經(jīng)費有限的高校而言,由于不需要投入大量經(jīng)費,只需對免費、開源的Varnish進(jìn)行優(yōu)化配置即可達(dá)到基本的目的,因此具有相當(dāng)大的實用價值。目前,在南京師范大學(xué)泰州學(xué)院校園網(wǎng)中已經(jīng)部署了多臺Varnish服務(wù)器,作為反向代理服務(wù)器,緩存服務(wù)器和負(fù)載均衡服務(wù)器使用,基本達(dá)到了預(yù)期的效果。
參考文獻(xiàn):
[1]Varnish Documentation. https://www.varnish-soft ware .com/static/book/.
[2]張宴.使用Varnish代替Squid做網(wǎng)站緩存加速器的詳細(xì)解決方案.http://blog.s135.com/post/313/,2008.
[3]郭欣.構(gòu)建高性能Web站點.電子工業(yè)出版社,2009.
[4]高俊峰.高性能Linux服務(wù)器構(gòu)建實戰(zhàn)[M].機械工業(yè)出版社,2011.