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