中航飛機(jī)西安飛機(jī)分公司 程兆輝
伴隨 Internet 的普及和 web 技術(shù)的發(fā)展,計算機(jī)網(wǎng)絡(luò)提供著越來越多的服務(wù)和應(yīng)用,網(wǎng)絡(luò)流量也出現(xiàn)了爆炸式增長。除了流量增加,網(wǎng)絡(luò)應(yīng)用本身的發(fā)展對服務(wù)器性能也提出了更高要求,如安全電子商務(wù)應(yīng)用需要有更強(qiáng)大的服務(wù)器處理能力。由于客觀存在的物理內(nèi)存、CPU 處理速度及操作系統(tǒng)等各方面制約,當(dāng)有突發(fā)的大量訪問服務(wù)時,服務(wù)器往往無法及時處理完所有收到的請求,從而造成訪問滯后、請求丟失等情況。針對這一問題,傳統(tǒng)的解決方法主要是通過提高服務(wù)器 CPU 的性能、加大內(nèi)存容量等硬件措施來實現(xiàn),即使是這樣也難以保證 web 服務(wù)器的高可用性,而且采用更高性能的服務(wù)器意味著更高的成本投入。那么如何建立高性能、高可用性、高可擴(kuò)展性、低成本的 web 前端應(yīng)用架構(gòu)來滿足不斷增長的網(wǎng)絡(luò)負(fù)載需求已成為亟待解決的問題。
服務(wù)器高可用內(nèi)容主要包括以下幾點。(1)高可用性[1]:將停止服務(wù)時間降低到最低甚至是不間斷服務(wù)。(2)可擴(kuò)展性:隨著訪問增加,系統(tǒng)具備良好伸縮能力。(3)可視性:系統(tǒng)、服務(wù)狀態(tài)處于實時監(jiān)控之下。(4)高性能高可靠性:經(jīng)過優(yōu)化的體系結(jié)構(gòu)及合理的備份策略。(5)安全性:結(jié)構(gòu)上的安全及主機(jī)的安全策略。
服務(wù)器的高可用性,一方面取決于服務(wù)器硬件的可靠性,另一方面可通過結(jié)構(gòu)冗余實現(xiàn)開放平臺應(yīng)用服務(wù)器高可用。
在硬件層面,服務(wù)器廠商采用了多項高可用技術(shù),如用內(nèi)存錯誤代碼校正ECC、探測及糾正內(nèi)存中的數(shù)據(jù)錯誤技術(shù)和部件冗余等來確保服務(wù)器硬件的穩(wěn)定運行,同時還通過支持遠(yuǎn)程鏡像、群集管理、軟硬件故障監(jiān)控和報告等功能為高可用方案的實施提供平臺。
在系統(tǒng)結(jié)構(gòu)層面,主要通過負(fù)載均衡、服務(wù)器N+1備份、雙機(jī)熱備等模式來實現(xiàn)開放平臺應(yīng)用服務(wù)器的高可用性。負(fù)載均衡模式[2]是指在負(fù)載均衡群組中配置部分冗余服務(wù)器,當(dāng)個別服務(wù)器發(fā)生故障時,服務(wù)請求可以被路由到集群中的其他處理單元,從而達(dá)到群組整體對外能力能夠滿足業(yè)務(wù)要求。服務(wù)器N+1備份[3]是使用1臺備機(jī)對N臺服務(wù)器進(jìn)行冗余備份操作,一旦某臺生產(chǎn)服務(wù)器出現(xiàn)故障時,切換備機(jī)接管該服務(wù)器,繼續(xù)提供服務(wù)。雙機(jī)熱備模式[4]則需要配置與生產(chǎn)服務(wù)器軟、硬件完全冗余的備用服務(wù)器,當(dāng)生產(chǎn)服務(wù)器出現(xiàn)故障的時候,高可用軟件可通過“心跳診斷”檢測出故障,自動切換備機(jī),保障應(yīng)用在短時間內(nèi)完全恢復(fù)正常使用。
相比較而言,負(fù)載均衡和雙機(jī)熱備的RPO、恢復(fù)時間目標(biāo)(Recovery Time Object,RTO)性能較好,但資源冗余度較大、維護(hù)較復(fù)雜,而服務(wù)器N+1備份則資源利用率高、可維護(hù)性好,但恢復(fù)時效性稍差。
另外,虛擬化技術(shù)的成熟極大地提高了服務(wù)器的高可用性。物理服務(wù)器增加虛擬層后,屏蔽了硬件特性的差異,計算資源不僅可按需分配,而且還可以在線遷移,無論磁盤故障還是服務(wù)器故障都能做到快速自動切換,故障部件可被系統(tǒng)自動隔離,修復(fù)后重新加入系統(tǒng),系統(tǒng)恢復(fù)的RPO、RTO指標(biāo)都接近0。
(1)對于訪問頻繁、用戶量大的對象(bbs、blog)采用某種合理的方式負(fù)載到多個服務(wù)器上。把數(shù)據(jù)庫獨立出來,準(zhǔn)備2套mysql數(shù)據(jù)庫,以實現(xiàn)主從復(fù)制,既減輕負(fù)載,又提高了可靠性。更進(jìn)一步,使用mysql proxy技術(shù),實現(xiàn)主從服務(wù)器的讀寫分離,大大提高系統(tǒng)性能和負(fù)載能力。
(2)數(shù)據(jù)庫與外部網(wǎng)絡(luò)隔離,只允許web服務(wù)器(bbs、blog等)通過私有地址方式訪問,提高了數(shù)據(jù)庫的安全性,同時也節(jié)省了帶寬。
(3)部署監(jiān)控系統(tǒng),通過監(jiān)控主機(jī)存活、服務(wù)、主機(jī)資源,將系統(tǒng)的健康狀態(tài)置于實時可視狀態(tài),對系統(tǒng)的運營狀態(tài)可控。
(4)使用單獨的服務(wù)器集中備份。拓?fù)浣Y(jié)構(gòu)和邏輯結(jié)構(gòu)如圖1和圖2所示。
(1)負(fù)載均衡[5]。2臺同樣配置的linux服務(wù)器,內(nèi)核支持lvs,配置keepalived工具,即可實現(xiàn)負(fù)載轉(zhuǎn)發(fā)。一旦其后的真實服務(wù)器出現(xiàn)故障,keepalived會自動把故障機(jī)器從轉(zhuǎn)發(fā)隊列刪除,等到故障修復(fù),又會自動把真實服務(wù)器的地址加入轉(zhuǎn)發(fā)列表。由于lvs支持會話保持,因此對于bbs這樣的應(yīng)用,不用擔(dān)心其登錄丟失。
(2)mysql主從復(fù)制。既保證數(shù)據(jù)的安全,又提高了訪問性能。在前端的每個web服務(wù)器上加入mysql proxy工具,即可實現(xiàn)讀寫的自動分離,讓寫的操作發(fā)生在主數(shù)據(jù)庫,讓“查詢”這類讀操作發(fā)生在從數(shù)據(jù)庫。
(3)nagios。它是一個開源的、受廣泛歡迎的監(jiān)控平臺,可對主機(jī)的存活、系統(tǒng)資源(磁盤空間、負(fù)載等)、網(wǎng)絡(luò)服務(wù)進(jìn)行實時監(jiān)控,一旦探測到故障,將自動發(fā)送郵件(短信)通知故障。
(4)備份。包括web數(shù)據(jù)和數(shù)據(jù)庫服務(wù)器的備份。對于web服務(wù)而言,GNU tar即可實現(xiàn)備份。簡單地設(shè)置一下crontab 就可以讓系統(tǒng)備份。 但由于空間的限制,不可能一直備份下去,所以要做一個合適的策略,以實現(xiàn)新、舊備份數(shù)據(jù)的更替;備份速度要根據(jù)磁盤容量決定。對于數(shù)據(jù)庫,先mysqldump,再tar,完成這些工作后把備份文件傳輸?shù)絺浞莘?wù)器集中。較為便捷的方法是把備份服務(wù)器以NFS方式掛接到web服務(wù)器及數(shù)據(jù)庫服務(wù)器。
(5)web服務(wù)器。至少包括apache和mysql proxy這2個組件。Apache做bbs和blog的容器,以虛擬機(jī)方式把用戶的請求轉(zhuǎn)發(fā)到bbs目錄或blog目錄。
(6)安全措施。包含2層安全,一層是主機(jī)本身,另一層是結(jié)構(gòu)(mysql從外部網(wǎng)絡(luò)隔離)。實踐證明,iptables是非常值得信賴的防火墻工具。在實際應(yīng)用中,采取先關(guān)門后開窗的策略,可大大增強(qiáng)系統(tǒng)的安全性。
圖1 拓?fù)浣Y(jié)構(gòu)Fig.1 Topological structure
可擴(kuò)展、高可用和負(fù)載均衡網(wǎng)站架構(gòu)方案可以通過多個開源技術(shù)的結(jié)合實現(xiàn),為達(dá)成這一目標(biāo),也同樣可以選擇具有同樣功能的商業(yè)軟件,但對于架構(gòu)而言,其技術(shù)的形態(tài)是不發(fā)生變化的。高可用易擴(kuò)展的方案最終由負(fù)載均衡、數(shù)據(jù)庫主從復(fù)制、應(yīng)用平臺監(jiān)控、備份系統(tǒng)、前置服務(wù)器和安全防火墻綜合構(gòu)成。
隨著業(yè)務(wù)的發(fā)展和技術(shù)的變革,信息系統(tǒng)的邏輯架構(gòu)和功能、數(shù)據(jù)和配置信息及其所處的風(fēng)險環(huán)境等都會處于不斷的變化中,必須建立起持續(xù)的監(jiān)控、改進(jìn)流程和規(guī)范的管理方法,才能夠不斷保持并持續(xù)改進(jìn)系統(tǒng)的高可用性水平。因此,需要定期對可用性指標(biāo)和事件進(jìn)行回顧和總結(jié),在此基礎(chǔ)上進(jìn)行高可用方案的評估。同時,應(yīng)建立有機(jī)構(gòu)管理層和業(yè)務(wù)部門代表參加的可用性管理委員會,組織專家、評審機(jī)構(gòu)對可用性指標(biāo)進(jìn)行測量,對高可用性建設(shè)的規(guī)劃、設(shè)計、實施、運行過程中產(chǎn)生的可用性設(shè)計標(biāo)準(zhǔn)、可用性計劃、可用性測試方案、可用性管理報告等文檔進(jìn)行審核,并重新評估系統(tǒng)風(fēng)險和可用性。
信息系統(tǒng)的高可用建設(shè)是一個長期、全面、持續(xù)完善的工作,企業(yè)應(yīng)結(jié)合組織的整體規(guī)劃目標(biāo),依靠可靠的技術(shù)手段和完善的管理體系,制定、實施和不斷改進(jìn)信息系統(tǒng)高可用性建設(shè)計劃,提升IT服務(wù)質(zhì)量,確保業(yè)務(wù)的持續(xù)運行。
[1]王鋒.基于混合模式的高可用高考信息平臺研究[D].長沙:中南大學(xué),2009.
[2]張洪武.服務(wù)器集群與均衡技術(shù)研究[D].重慶:重慶大學(xué),2004.
[3]梁蘇彬.基于集群的高可用HTTP服務(wù)器[D].成都:四川大學(xué),2004.
[4]平靜,王蕾.基于ROSE HA系統(tǒng)的雙機(jī)容錯方案.安陽師范學(xué)院學(xué)報,2006(2):10-11.
[5]何濤,李戰(zhàn)懷,劉文潔.均衡負(fù)載實時反饋算法的實現(xiàn).微處理機(jī) ,2009(2):19-20.