文/任軍
招生網站不懼海量訪問
文/任軍
高考的到來使6、7月人們對招生網站的關注程度達到沸點。網絡管理人員必須部署一個架構合理、運行良好的招生網站,否則難以承受成千上萬的并發訪問。因此,為確保在大并發訪問情況下網站對外服務的高可用性和高穩定性,就要擺脫一般網站的部署思路,需要從系統架構的角度對網站進行全方位審視和設計。
隨著計算機網絡技術的發展和應用以及網絡在家庭和社會的普及,我國基于廣域網Web的招 生考試類業務已經逐步開展起來。
包含各項Web應用的招考類站點具有如下特點:一是網站日常部署規模相對較小。二是網站全年不同時間段訪問量變化巨大,在日常情況下,訪問量普遍較小,而在某項業務開展季節,網站的訪問量可能會井噴式的急劇增長,比如2009年,河北省教育考試院網站日常訪問量基本維持在3~5萬點擊量水平,在普通高考成績查詢服務開通的最初兩個小時內,訪問量猛增到310萬,查詢次數達到190萬人次。三是,因為相關業務涉及考生家長的切身利益,整個業務流程的各個環節在時間上前后關聯,因此對所提供Web服務的可用性和穩定性提出了很高的要求。
從網絡系統整體架構的設計和部署角度考慮,如何最大限度的確保網站的可用性和穩定性是我們試圖解決的問題。

1.在鏈路方面,多ISP環境下用戶與網站的互聯互通問題
目前,我國各網絡運營商之間的互聯互通存在比較嚴重的問題,具體表現在同一個ISP的范圍內,網站的訪問很流暢,當試圖去訪問于另一個ISP范圍內的網站資源時,訪問質量就急速下降,甚至無法訪問。招考類網站服務對象為各類考生,考生類別的多樣性和上網地點的不確定性決定了用戶終端接入的ISP多種多樣。因此,如何確保用戶與網站的順暢聯通,是招考類網站首先需要解決的問題。
2.在服務器系統方面負載能力的可擴展問題
在網絡訪問量持續增大或井噴式增長的情況下,單一服務器根本無法承擔訪問負載,如何確保服務器數量根據訪問負載靈活、有效、透明的擴展,以增加服務器吞吐量和網絡數據處理能力,減少用戶等待響應時間,也是應對大并發訪問要解決的一個基本問題。
3.在高并發環境下進一步提升服務器的有效負載的問題
在解決多ISP互聯互通問題以及基本的服務器擴展問題之后,我們發現訪問量的持續增加,服務器負載不斷加重,導致在高峰時需要上線的服務器數量非常龐大,除了帶來巨額的硬件成本投入外,對服務群的管理性也帶來了巨大挑戰, 很難確保對每一臺服務器進行有效管理,因此,整個應用系統的可用性大大降低。因此,如何采取各種措施,進一步優化網絡和應用性能,增強服務器有效負載能力,在最大限度減少服務器部署臺數的基礎上,增加服務器的可管理性,大幅提升應用性能是最終能否使應用系統可用和穩定的關鍵步驟。
在大并發訪問環境下招生考試類Web網站的設計與部署主要圍繞解決以上三個主要技術問題展開。同時考慮到網站特點(靜態、動態)、訪問規模和成本預算控制等因素,在下面內容中給出了免費軟件自行配置和專用產品部署兩種解決方案。以便根據實際情況有選擇的參考實施。

圖1 三個出口的智能部署示意

圖2 基于NAT的負載均衡器的基本實現原理
多鏈路環境下帶寬的有效利用問題
針對ISP間的互聯互通問題,首先,選擇盡量多的ISP鏈路以應對考生接入方式的多樣性,如河北省考試院為配合網站建設接入了目前國內三個主要的ISP鏈路,中國聯通、中國電信和教育網;在此基礎上,解決多鏈路互聯互通問題,即實現用戶與網站的數據交換都在與用戶相同的ISP網絡里進行,即若用戶連入的是聯通網絡,則用戶與網站的數據交換都通過聯通鏈路進行。
解決這一問題,從根本上,目前普遍采用的是智能域名解析技術。它是針對一個固定域名對應多個固定IP地址而提出的,該技術的核心是讓DNS服務器在響應域名查詢請求之前,根據用戶端源IP地址所處的ISP(通過IP地址范圍確定)的不同,智能地返回不同的解析結果給對應的客戶端。例如當分別位于教育網、中國聯通和中國電信的用戶訪問同一個域名時,DNS服務器會對每一個用戶的源IP地址進行智能對比分析,并根據分析結果返回所在的ISP的IP地址。以在用戶和服務器之間建立最短、最優的路徑。
1.基本功能實現
在具體實現上,采用軟硬件方式,最基本功能我們可以采用BIND 9.x的VIEW字句自行配置實現。
為更好理解該技術的工作原理,下面以三個ISP出口鏈路為例,簡要介紹一下主要配置。總的來說,就是通過VIEW與ACL協同工作,以實現根據用戶源IP地址智能解析對應服務器的IP地址。具體說,因一個域名指向三個不同的網域,因此首先需要在named.conf文件中通過ACL定義三個不同的ISP地址列表,即VIEW分別指到用一個域名的三個不同網域,之后當處于不同VIEW中的用戶訪問這個域名時,將被引導到對應的解析文件中,每個解析文件定義了該網域對應的服務器的IP地址,最后通過BIND將該地址作為域名對應的IP地址返給用戶,從而實現DNS的智能解析功能。三個出口的智能解析部署示意圖見圖1。
2 .專用硬件設備實現
免費軟硬件部署方式主要確定由于本身性能限制,有可能造成整個系統性能提升的瓶頸。此外,系統的穩定性也是一個不容忽視的問題。而針對多條鏈路的健康狀態的檢查等更高級功能,實現起來相對困難。以上問題在較好解決的前提下,因為其低成本性,因此有一定的使用價值,而若較徹底地解決以上問題,可以采用專用的硬件鏈路負載均衡產品。這類設備也部署在網絡出口處,在實現基本功能的基礎上,還可以通過監控鏈路的負載狀態和健康狀態,根據其情況以及用戶所處的位置或用戶的特殊要求進行相應的智能域名解析,指引用戶從最快的、最好的、最近的路徑訪問到網站。此外,專用設備還可以在當某條鏈路中斷時,自動切換到其他鏈路上去,確保鏈路的高可用性。因此在性能和功能上得到了很大提升。服務器可擴展問題
解決服務器可擴展問題的基本辦法是通過服務器負載均衡技術將眾多請求均衡到多臺服務器上,對用戶而言,面對的只是一臺虛擬的服務器,整個分流轉發過程是透明的。現有的服務器負載均衡技術主要包括基于DNS的負載均衡、基于反向代理的負載均衡、基于HTTP重定向的負載均衡以及基于NAT的負載均衡。目前采用最多的是基于NAT的負載均衡技術。下面對其工作原理做一說明。
NAT負載均衡將一個外部IP地址映射為多個內部IP地址,對每次連接請求動態地轉換為一個內部服務器的地址,將外部連接請求引到轉換得到地址的那個服務器上,從而達到負載均衡的目的。起著NAT負載均衡功能的設備一般處于內部服務器到外部網間的網關位置。最基本功能可以通過軟硬件方式來實現。
1.基本功能實現
為更好理解實現原理,下面簡要介紹一下以Cisco路由器實現NAT負載均衡的主要配置現有一臺有一個串行接口和一個Ethernet接口的路由器,Ethernet口連接到內部網絡,內部網絡上有三臺Web服務器,為了處理好來自Internet上大量的Web連接請求,需要在此路由器上做NAT負載均衡配置,把發送到Web服務器合法Internet IP地址的報文轉換成這三臺服務器的內部本地地址。實現過程如圖2所示。
其具體配置過程如下:
做好路由器的基本配置,定義各個接口在做NAT時是內部還是外部接口后,定義一個標準訪問列表(standard access list),用來標識要轉換的合法IP地址。再定義NAT地址池來標識內部Web服務器的本地地址,注意要用到關鍵字rotary,表明我們要使用輪循的方式從NAT地址池中取出相應IP地址來轉換合法IP報文。最后,把目標地址為訪問表中IP的報文轉換成地址池中定義的IP地址。限于篇幅只將主要配置描述如下:


圖3 Web應用加速設備部署示意
2.專用硬件設備實現
通過軟硬件方式來實現NAT負載均衡主要應用在服務器數量較少,并且可以確保每臺服務器能正常提供服務的情況,而上述方案的采用輪詢方式可能會把請求直接拋向問題服務器,導致無法對外提供有效服務情況的發生。此外,上述方式還存在如下缺點:(1)應用系統的整體處理能力往往受到軟硬件本身帶寬、處理能力、穩定性的限制;(2)NAT工作在IP層,負載均衡算法有限。
因此,除以上解決方案外,在預算允許的情況下,還可以通過專用硬件設備-服務器負載均衡器來實現相關功能,專用硬件設備的主要優勢包括:(1)設備的處理能力和穩定性大大得到了提高;(2)這些設備工作在4~7層,可以對2~7層的故障進行檢查,使對服務器的狀態檢查更加豐富、靈活;(3)在動態應用中,可以進行靈活的會話保持,它可以識別客戶與服務器之間交互過程的關連性,在作負載均衡的同時,還保證一系列相關連的訪問請求會保持分配到一臺服務器上。
當用戶訪問一個代表一個服務器群的對外IP地址時,負載均衡器會根據會話狀態、負載均衡策略以及監控檢查結果來決定把請求轉發到哪臺服務器上,最后由負載均衡器再把服務器的響應轉發給用戶。目前,專用的負載均衡產品可以提供多達12種算法,比如:(1)輪詢(Round Robin):順序循環將請求一次順序循環地連接每個服務器。(2)最少的連接方式(Lea st Connection):傳遞新的連接給那些進行最少連接處理的服務器;(3)最快模式(Fastest):傳遞連接給那些響應最快的服務器;(4)觀察模式(Observed):連接數目和響應時間以這兩項的最佳平衡為依據為新的請求選擇服務器,等等。需要指出的是,這些算法都能探測某個服務器發生的第2到第7層故障,若發現故障,就把其從順序循環隊列中拿出,不參加下一次的輪詢,直到其恢復正常。
這些算法根據業務和設備情況綜合運用,在大大提升了應用系統的可用性同時也大大降低了針對規模龐大的服務器群的管理難度。
應用加速技術
上文已經提到,當網站訪問量持續增加時,我們必須通過在系統中加入更多的服務器加以應對,這不但造成了硬件成本的急劇增加,也大大提高了服務器群的管理難度,降低了系統的可用性和穩定性。為有效解決這一問題,近幾年,與此相關的4~7層的應用加速類產品開始出現。通過部署這類設備,可以在保持服務器不增加的情況下,將應用性能提升數倍。這就意味著,大大縮減了需要維護的服務器的數量。這類設備部署在應用系統的前端,如圖3所示。應用交付類設備主要從以下方面來提升應用性能。
1.管理網絡連接-TCP連接復用
基本原理是,通常情況下,Web服務器要為每一種請求建立一個新連接,而一臺或多臺服務器必須為每個連接分配資源,這就減慢了服務器的響應時間,并從其主要任務(為Web內容提供服務)中分流了資源。應用加速設備直接與用戶建立永久的TCP連接,去除大部分本來應該由服務器執行的“你好-再見”建立和拆除開銷,同時按照某個比例(比如150:1)與后臺服務器建立少量的TCP連接。通過永久連接明顯提高用戶端TCP協議的傳輸效率,顯著減少源服務器端的連接數量,極大地降低了其網絡I/O處理的負擔,使服務器將更多的系統資源用于應用層事務處理,使單臺服務器可以支持更多用戶的請求。
2 .TCP數據壓縮
加速設備通過對靜、動態內容進行壓縮和調整,減少實際傳輸流量的大小。可以有效縮短下載頁面的等待時間,改善用戶對訪問的滿意度。另外,降低了內容對帶寬的占用,網站可以用更少的帶寬為同樣數量的用戶提供服務,或者用同樣大小的帶寬為更多用戶提供服務。
3 .HTTP緩存
多數情況下,網站內容被訪問的規律呈現高度的集中性和重復性。網站加速設備將用戶曾經訪問過的內容保存下來,當下次有對相同內容的請求的時候,將該內容直接發送給訪問者,從而使服務器不需要重復生成相同內容的頁面。
目前的加速設備不僅可以緩存靜態內容,還可以對動態內容提供緩存服務。先進的控制機制可以通過多種手段確保緩存內容與數據庫記錄的一致性,隨時監視數據庫記錄的變更情況,及時對已經緩存的相關動態內容做刷新或者過期處理。緩存功能可以從根本上降低應用服務器和數據庫服務器的負荷。對于那些存在大量重復查詢請求的動態內容應用,經過恰當的策略配置之后,一些設備甚至可以取得95%以上的緩存命中率。這意味著平均每100次查詢請求,由應用加速代替數據庫響應其中95個,只有5個請求需要訪問數據庫。這等同于將網站的服務能力提高20倍。
該方案無論對招考類網站本身的建設還是其他小型網站隨業務發展而進行的擴容改造等都有較好的借鑒意義。需要注意的是,這里主要從系統架構的角度探討解決在大并發訪問環境下網站的可用性和穩定性問題,除此之外,諸如應用程序的設計以及執行效率、Web應用安全性、主要網絡交換設備的處理能力等也都是提升網站性能、確保穩定可用的關鍵因素,在網站整體設計和部署時同樣應引起足夠的重視。
(作者單位為河北省教育考試院)