文/任軍
招生網(wǎng)站不懼海量訪問
文/任軍
高考的到來使6、7月人們對招生網(wǎng)站的關(guān)注程度達(dá)到沸點(diǎn)。網(wǎng)絡(luò)管理人員必須部署一個架構(gòu)合理、運(yùn)行良好的招生網(wǎng)站,否則難以承受成千上萬的并發(fā)訪問。因此,為確保在大并發(fā)訪問情況下網(wǎng)站對外服務(wù)的高可用性和高穩(wěn)定性,就要擺脫一般網(wǎng)站的部署思路,需要從系統(tǒng)架構(gòu)的角度對網(wǎng)站進(jìn)行全方位審視和設(shè)計。
隨著計算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展和應(yīng)用以及網(wǎng)絡(luò)在家庭和社會的普及,我國基于廣域網(wǎng)Web的招 生考試類業(yè)務(wù)已經(jīng)逐步開展起來。
包含各項(xiàng)Web應(yīng)用的招考類站點(diǎn)具有如下特點(diǎn):一是網(wǎng)站日常部署規(guī)模相對較小。二是網(wǎng)站全年不同時間段訪問量變化巨大,在日常情況下,訪問量普遍較小,而在某項(xiàng)業(yè)務(wù)開展季節(jié),網(wǎng)站的訪問量可能會井噴式的急劇增長,比如2009年,河北省教育考試院網(wǎng)站日常訪問量基本維持在3~5萬點(diǎn)擊量水平,在普通高考成績查詢服務(wù)開通的最初兩個小時內(nèi),訪問量猛增到310萬,查詢次數(shù)達(dá)到190萬人次。三是,因?yàn)橄嚓P(guān)業(yè)務(wù)涉及考生家長的切身利益,整個業(yè)務(wù)流程的各個環(huán)節(jié)在時間上前后關(guān)聯(lián),因此對所提供Web服務(wù)的可用性和穩(wěn)定性提出了很高的要求。
從網(wǎng)絡(luò)系統(tǒng)整體架構(gòu)的設(shè)計和部署角度考慮,如何最大限度的確保網(wǎng)站的可用性和穩(wěn)定性是我們試圖解決的問題。
1.在鏈路方面,多ISP環(huán)境下用戶與網(wǎng)站的互聯(lián)互通問題
目前,我國各網(wǎng)絡(luò)運(yùn)營商之間的互聯(lián)互通存在比較嚴(yán)重的問題,具體表現(xiàn)在同一個ISP的范圍內(nèi),網(wǎng)站的訪問很流暢,當(dāng)試圖去訪問于另一個ISP范圍內(nèi)的網(wǎng)站資源時,訪問質(zhì)量就急速下降,甚至無法訪問。招考類網(wǎng)站服務(wù)對象為各類考生,考生類別的多樣性和上網(wǎng)地點(diǎn)的不確定性決定了用戶終端接入的ISP多種多樣。因此,如何確保用戶與網(wǎng)站的順暢聯(lián)通,是招考類網(wǎng)站首先需要解決的問題。
2.在服務(wù)器系統(tǒng)方面負(fù)載能力的可擴(kuò)展問題
在網(wǎng)絡(luò)訪問量持續(xù)增大或井噴式增長的情況下,單一服務(wù)器根本無法承擔(dān)訪問負(fù)載,如何確保服務(wù)器數(shù)量根據(jù)訪問負(fù)載靈活、有效、透明的擴(kuò)展,以增加服務(wù)器吞吐量和網(wǎng)絡(luò)數(shù)據(jù)處理能力,減少用戶等待響應(yīng)時間,也是應(yīng)對大并發(fā)訪問要解決的一個基本問題。
3.在高并發(fā)環(huán)境下進(jìn)一步提升服務(wù)器的有效負(fù)載的問題
在解決多ISP互聯(lián)互通問題以及基本的服務(wù)器擴(kuò)展問題之后,我們發(fā)現(xiàn)訪問量的持續(xù)增加,服務(wù)器負(fù)載不斷加重,導(dǎo)致在高峰時需要上線的服務(wù)器數(shù)量非常龐大,除了帶來巨額的硬件成本投入外,對服務(wù)群的管理性也帶來了巨大挑戰(zhàn), 很難確保對每一臺服務(wù)器進(jìn)行有效管理,因此,整個應(yīng)用系統(tǒng)的可用性大大降低。因此,如何采取各種措施,進(jìn)一步優(yōu)化網(wǎng)絡(luò)和應(yīng)用性能,增強(qiáng)服務(wù)器有效負(fù)載能力,在最大限度減少服務(wù)器部署臺數(shù)的基礎(chǔ)上,增加服務(wù)器的可管理性,大幅提升應(yīng)用性能是最終能否使應(yīng)用系統(tǒng)可用和穩(wěn)定的關(guān)鍵步驟。
在大并發(fā)訪問環(huán)境下招生考試類Web網(wǎng)站的設(shè)計與部署主要圍繞解決以上三個主要技術(shù)問題展開。同時考慮到網(wǎng)站特點(diǎn)(靜態(tài)、動態(tài))、訪問規(guī)模和成本預(yù)算控制等因素,在下面內(nèi)容中給出了免費(fèi)軟件自行配置和專用產(chǎn)品部署兩種解決方案。以便根據(jù)實(shí)際情況有選擇的參考實(shí)施。
圖1 三個出口的智能部署示意
圖2 基于NAT的負(fù)載均衡器的基本實(shí)現(xiàn)原理
多鏈路環(huán)境下帶寬的有效利用問題
針對ISP間的互聯(lián)互通問題,首先,選擇盡量多的ISP鏈路以應(yīng)對考生接入方式的多樣性,如河北省考試院為配合網(wǎng)站建設(shè)接入了目前國內(nèi)三個主要的ISP鏈路,中國聯(lián)通、中國電信和教育網(wǎng);在此基礎(chǔ)上,解決多鏈路互聯(lián)互通問題,即實(shí)現(xiàn)用戶與網(wǎng)站的數(shù)據(jù)交換都在與用戶相同的ISP網(wǎng)絡(luò)里進(jìn)行,即若用戶連入的是聯(lián)通網(wǎng)絡(luò),則用戶與網(wǎng)站的數(shù)據(jù)交換都通過聯(lián)通鏈路進(jìn)行。
解決這一問題,從根本上,目前普遍采用的是智能域名解析技術(shù)。它是針對一個固定域名對應(yīng)多個固定IP地址而提出的,該技術(shù)的核心是讓DNS服務(wù)器在響應(yīng)域名查詢請求之前,根據(jù)用戶端源IP地址所處的ISP(通過IP地址范圍確定)的不同,智能地返回不同的解析結(jié)果給對應(yīng)的客戶端。例如當(dāng)分別位于教育網(wǎng)、中國聯(lián)通和中國電信的用戶訪問同一個域名時,DNS服務(wù)器會對每一個用戶的源IP地址進(jìn)行智能對比分析,并根據(jù)分析結(jié)果返回所在的ISP的IP地址。以在用戶和服務(wù)器之間建立最短、最優(yōu)的路徑。
1.基本功能實(shí)現(xiàn)
在具體實(shí)現(xiàn)上,采用軟硬件方式,最基本功能我們可以采用BIND 9.x的VIEW字句自行配置實(shí)現(xiàn)。
為更好理解該技術(shù)的工作原理,下面以三個ISP出口鏈路為例,簡要介紹一下主要配置??偟膩碚f,就是通過VIEW與ACL協(xié)同工作,以實(shí)現(xiàn)根據(jù)用戶源IP地址智能解析對應(yīng)服務(wù)器的IP地址。具體說,因一個域名指向三個不同的網(wǎng)域,因此首先需要在named.conf文件中通過ACL定義三個不同的ISP地址列表,即VIEW分別指到用一個域名的三個不同網(wǎng)域,之后當(dāng)處于不同VIEW中的用戶訪問這個域名時,將被引導(dǎo)到對應(yīng)的解析文件中,每個解析文件定義了該網(wǎng)域?qū)?yīng)的服務(wù)器的IP地址,最后通過BIND將該地址作為域名對應(yīng)的IP地址返給用戶,從而實(shí)現(xiàn)DNS的智能解析功能。三個出口的智能解析部署示意圖見圖1。
2 .專用硬件設(shè)備實(shí)現(xiàn)
免費(fèi)軟硬件部署方式主要確定由于本身性能限制,有可能造成整個系統(tǒng)性能提升的瓶頸。此外,系統(tǒng)的穩(wěn)定性也是一個不容忽視的問題。而針對多條鏈路的健康狀態(tài)的檢查等更高級功能,實(shí)現(xiàn)起來相對困難。以上問題在較好解決的前提下,因?yàn)槠涞统杀拘?,因此有一定的使用價值,而若較徹底地解決以上問題,可以采用專用的硬件鏈路負(fù)載均衡產(chǎn)品。這類設(shè)備也部署在網(wǎng)絡(luò)出口處,在實(shí)現(xiàn)基本功能的基礎(chǔ)上,還可以通過監(jiān)控鏈路的負(fù)載狀態(tài)和健康狀態(tài),根據(jù)其情況以及用戶所處的位置或用戶的特殊要求進(jìn)行相應(yīng)的智能域名解析,指引用戶從最快的、最好的、最近的路徑訪問到網(wǎng)站。此外,專用設(shè)備還可以在當(dāng)某條鏈路中斷時,自動切換到其他鏈路上去,確保鏈路的高可用性。因此在性能和功能上得到了很大提升。服務(wù)器可擴(kuò)展問題
解決服務(wù)器可擴(kuò)展問題的基本辦法是通過服務(wù)器負(fù)載均衡技術(shù)將眾多請求均衡到多臺服務(wù)器上,對用戶而言,面對的只是一臺虛擬的服務(wù)器,整個分流轉(zhuǎn)發(fā)過程是透明的?,F(xiàn)有的服務(wù)器負(fù)載均衡技術(shù)主要包括基于DNS的負(fù)載均衡、基于反向代理的負(fù)載均衡、基于HTTP重定向的負(fù)載均衡以及基于NAT的負(fù)載均衡。目前采用最多的是基于NAT的負(fù)載均衡技術(shù)。下面對其工作原理做一說明。
NAT負(fù)載均衡將一個外部IP地址映射為多個內(nèi)部IP地址,對每次連接請求動態(tài)地轉(zhuǎn)換為一個內(nèi)部服務(wù)器的地址,將外部連接請求引到轉(zhuǎn)換得到地址的那個服務(wù)器上,從而達(dá)到負(fù)載均衡的目的。起著NAT負(fù)載均衡功能的設(shè)備一般處于內(nèi)部服務(wù)器到外部網(wǎng)間的網(wǎng)關(guān)位置。最基本功能可以通過軟硬件方式來實(shí)現(xiàn)。
1.基本功能實(shí)現(xiàn)
為更好理解實(shí)現(xiàn)原理,下面簡要介紹一下以Cisco路由器實(shí)現(xiàn)NAT負(fù)載均衡的主要配置現(xiàn)有一臺有一個串行接口和一個Ethernet接口的路由器,Ethernet口連接到內(nèi)部網(wǎng)絡(luò),內(nèi)部網(wǎng)絡(luò)上有三臺Web服務(wù)器,為了處理好來自Internet上大量的Web連接請求,需要在此路由器上做NAT負(fù)載均衡配置,把發(fā)送到Web服務(wù)器合法Internet IP地址的報文轉(zhuǎn)換成這三臺服務(wù)器的內(nèi)部本地地址。實(shí)現(xiàn)過程如圖2所示。
其具體配置過程如下:
做好路由器的基本配置,定義各個接口在做NAT時是內(nèi)部還是外部接口后,定義一個標(biāo)準(zhǔn)訪問列表(standard access list),用來標(biāo)識要轉(zhuǎn)換的合法IP地址。再定義NAT地址池來標(biāo)識內(nèi)部Web服務(wù)器的本地地址,注意要用到關(guān)鍵字rotary,表明我們要使用輪循的方式從NAT地址池中取出相應(yīng)IP地址來轉(zhuǎn)換合法IP報文。最后,把目標(biāo)地址為訪問表中IP的報文轉(zhuǎn)換成地址池中定義的IP地址。限于篇幅只將主要配置描述如下:
圖3 Web應(yīng)用加速設(shè)備部署示意
2.專用硬件設(shè)備實(shí)現(xiàn)
通過軟硬件方式來實(shí)現(xiàn)NAT負(fù)載均衡主要應(yīng)用在服務(wù)器數(shù)量較少,并且可以確保每臺服務(wù)器能正常提供服務(wù)的情況,而上述方案的采用輪詢方式可能會把請求直接拋向問題服務(wù)器,導(dǎo)致無法對外提供有效服務(wù)情況的發(fā)生。此外,上述方式還存在如下缺點(diǎn):(1)應(yīng)用系統(tǒng)的整體處理能力往往受到軟硬件本身帶寬、處理能力、穩(wěn)定性的限制;(2)NAT工作在IP層,負(fù)載均衡算法有限。
因此,除以上解決方案外,在預(yù)算允許的情況下,還可以通過專用硬件設(shè)備-服務(wù)器負(fù)載均衡器來實(shí)現(xiàn)相關(guān)功能,專用硬件設(shè)備的主要優(yōu)勢包括:(1)設(shè)備的處理能力和穩(wěn)定性大大得到了提高;(2)這些設(shè)備工作在4~7層,可以對2~7層的故障進(jìn)行檢查,使對服務(wù)器的狀態(tài)檢查更加豐富、靈活;(3)在動態(tài)應(yīng)用中,可以進(jìn)行靈活的會話保持,它可以識別客戶與服務(wù)器之間交互過程的關(guān)連性,在作負(fù)載均衡的同時,還保證一系列相關(guān)連的訪問請求會保持分配到一臺服務(wù)器上。
當(dāng)用戶訪問一個代表一個服務(wù)器群的對外IP地址時,負(fù)載均衡器會根據(jù)會話狀態(tài)、負(fù)載均衡策略以及監(jiān)控檢查結(jié)果來決定把請求轉(zhuǎn)發(fā)到哪臺服務(wù)器上,最后由負(fù)載均衡器再把服務(wù)器的響應(yīng)轉(zhuǎn)發(fā)給用戶。目前,專用的負(fù)載均衡產(chǎn)品可以提供多達(dá)12種算法,比如:(1)輪詢(Round Robin):順序循環(huán)將請求一次順序循環(huán)地連接每個服務(wù)器。(2)最少的連接方式(Lea st Connection):傳遞新的連接給那些進(jìn)行最少連接處理的服務(wù)器;(3)最快模式(Fastest):傳遞連接給那些響應(yīng)最快的服務(wù)器;(4)觀察模式(Observed):連接數(shù)目和響應(yīng)時間以這兩項(xiàng)的最佳平衡為依據(jù)為新的請求選擇服務(wù)器,等等。需要指出的是,這些算法都能探測某個服務(wù)器發(fā)生的第2到第7層故障,若發(fā)現(xiàn)故障,就把其從順序循環(huán)隊(duì)列中拿出,不參加下一次的輪詢,直到其恢復(fù)正常。
這些算法根據(jù)業(yè)務(wù)和設(shè)備情況綜合運(yùn)用,在大大提升了應(yīng)用系統(tǒng)的可用性同時也大大降低了針對規(guī)模龐大的服務(wù)器群的管理難度。
應(yīng)用加速技術(shù)
上文已經(jīng)提到,當(dāng)網(wǎng)站訪問量持續(xù)增加時,我們必須通過在系統(tǒng)中加入更多的服務(wù)器加以應(yīng)對,這不但造成了硬件成本的急劇增加,也大大提高了服務(wù)器群的管理難度,降低了系統(tǒng)的可用性和穩(wěn)定性。為有效解決這一問題,近幾年,與此相關(guān)的4~7層的應(yīng)用加速類產(chǎn)品開始出現(xiàn)。通過部署這類設(shè)備,可以在保持服務(wù)器不增加的情況下,將應(yīng)用性能提升數(shù)倍。這就意味著,大大縮減了需要維護(hù)的服務(wù)器的數(shù)量。這類設(shè)備部署在應(yīng)用系統(tǒng)的前端,如圖3所示。應(yīng)用交付類設(shè)備主要從以下方面來提升應(yīng)用性能。
1.管理網(wǎng)絡(luò)連接-TCP連接復(fù)用
基本原理是,通常情況下,Web服務(wù)器要為每一種請求建立一個新連接,而一臺或多臺服務(wù)器必須為每個連接分配資源,這就減慢了服務(wù)器的響應(yīng)時間,并從其主要任務(wù)(為Web內(nèi)容提供服務(wù))中分流了資源。應(yīng)用加速設(shè)備直接與用戶建立永久的TCP連接,去除大部分本來應(yīng)該由服務(wù)器執(zhí)行的“你好-再見”建立和拆除開銷,同時按照某個比例(比如150:1)與后臺服務(wù)器建立少量的TCP連接。通過永久連接明顯提高用戶端TCP協(xié)議的傳輸效率,顯著減少源服務(wù)器端的連接數(shù)量,極大地降低了其網(wǎng)絡(luò)I/O處理的負(fù)擔(dān),使服務(wù)器將更多的系統(tǒng)資源用于應(yīng)用層事務(wù)處理,使單臺服務(wù)器可以支持更多用戶的請求。
2 .TCP數(shù)據(jù)壓縮
加速設(shè)備通過對靜、動態(tài)內(nèi)容進(jìn)行壓縮和調(diào)整,減少實(shí)際傳輸流量的大小??梢杂行Эs短下載頁面的等待時間,改善用戶對訪問的滿意度。另外,降低了內(nèi)容對帶寬的占用,網(wǎng)站可以用更少的帶寬為同樣數(shù)量的用戶提供服務(wù),或者用同樣大小的帶寬為更多用戶提供服務(wù)。
3 .HTTP緩存
多數(shù)情況下,網(wǎng)站內(nèi)容被訪問的規(guī)律呈現(xiàn)高度的集中性和重復(fù)性。網(wǎng)站加速設(shè)備將用戶曾經(jīng)訪問過的內(nèi)容保存下來,當(dāng)下次有對相同內(nèi)容的請求的時候,將該內(nèi)容直接發(fā)送給訪問者,從而使服務(wù)器不需要重復(fù)生成相同內(nèi)容的頁面。
目前的加速設(shè)備不僅可以緩存靜態(tài)內(nèi)容,還可以對動態(tài)內(nèi)容提供緩存服務(wù)。先進(jìn)的控制機(jī)制可以通過多種手段確保緩存內(nèi)容與數(shù)據(jù)庫記錄的一致性,隨時監(jiān)視數(shù)據(jù)庫記錄的變更情況,及時對已經(jīng)緩存的相關(guān)動態(tài)內(nèi)容做刷新或者過期處理。緩存功能可以從根本上降低應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的負(fù)荷。對于那些存在大量重復(fù)查詢請求的動態(tài)內(nèi)容應(yīng)用,經(jīng)過恰當(dāng)?shù)牟呗耘渲弥螅恍┰O(shè)備甚至可以取得95%以上的緩存命中率。這意味著平均每100次查詢請求,由應(yīng)用加速代替數(shù)據(jù)庫響應(yīng)其中95個,只有5個請求需要訪問數(shù)據(jù)庫。這等同于將網(wǎng)站的服務(wù)能力提高20倍。
該方案無論對招考類網(wǎng)站本身的建設(shè)還是其他小型網(wǎng)站隨業(yè)務(wù)發(fā)展而進(jìn)行的擴(kuò)容改造等都有較好的借鑒意義。需要注意的是,這里主要從系統(tǒng)架構(gòu)的角度探討解決在大并發(fā)訪問環(huán)境下網(wǎng)站的可用性和穩(wěn)定性問題,除此之外,諸如應(yīng)用程序的設(shè)計以及執(zhí)行效率、Web應(yīng)用安全性、主要網(wǎng)絡(luò)交換設(shè)備的處理能力等也都是提升網(wǎng)站性能、確保穩(wěn)定可用的關(guān)鍵因素,在網(wǎng)站整體設(shè)計和部署時同樣應(yīng)引起足夠的重視。
(作者單位為河北省教育考試院)