中航飛機西安飛機分公司 程兆輝
高可用性(High Availability)通常來描述一個系統(tǒng)經(jīng)過專門的設(shè)計,從而減少停止服務(wù)的時間,而保持其服務(wù)的高度可用性的狀態(tài)。計算機系統(tǒng)的可用性用平均無故障時間[1](MTTF)來度量,即計算機系統(tǒng)平均能夠正常運行多長時間,才發(fā)生一次故障。系統(tǒng)的可用性越高,平均無故障時間越長。可維護性用平均維修時間[1](MTTR)來度量,即系統(tǒng)發(fā)生故障后維修和重新恢復(fù)正常運行平均花費的時間。系統(tǒng)的可維護性越好,平均維修時間越短。計算機系統(tǒng)的可用性定義為:MTTF/(MTTF+MTTR) * 100%[1]。由此可見,計算機系統(tǒng)的可用性定義為系統(tǒng)保持正常運行時間的百分比。
一般情況下,當(dāng)可用性超過99.99%(含99.99%)時,即可認(rèn)為該系統(tǒng)是高可用性的系統(tǒng)。系統(tǒng)的高可用性建設(shè)與系統(tǒng)的投入成本具有很大關(guān)系,可用性要求越高,其投入成本以指數(shù)級別上升,因此可用性要求不是越高越好,而是需要在系統(tǒng)的投入成本與可用性要求之間取得一個較好的平衡。
表1 可用性要求對應(yīng)表
對于一般的企業(yè)應(yīng)用系統(tǒng),例如辦公系統(tǒng)、文件編制系統(tǒng)或ERP系統(tǒng)等,可以將可用性目標(biāo)定義為99.9%,這樣既可以滿足使用者的需求,也可以相對降低系統(tǒng)建設(shè)成本。對于生產(chǎn)型企業(yè)的核心系統(tǒng)(例如MES系統(tǒng)),其停機將造成嚴(yán)重的影響,因此可以將可用性要求定義為99.99%,以保持系統(tǒng)的最大可用性,滿足車間現(xiàn)場生產(chǎn)的要求。
某企業(yè)(以下簡稱為公司)經(jīng)過“九五”、“十五”、“十一五”期間的信息化建設(shè),已經(jīng)初步形成了飛機產(chǎn)品數(shù)字化設(shè)計、制造、管理技術(shù)體系,在CAD、PDM、ERP方面開展了先期的技術(shù)研究和應(yīng)用,實現(xiàn)了產(chǎn)品的數(shù)字化設(shè)計以及對制造工藝過程管理的數(shù)字化。信息技術(shù)已在公司的科研、生產(chǎn)與經(jīng)營的各個領(lǐng)域發(fā)揮著越來越重要的作用,有力地支持了公司科研、生產(chǎn)、經(jīng)營任務(wù)的圓滿完成。
生產(chǎn)運營管理方面,公司陸續(xù)開展了生產(chǎn)計劃管理系統(tǒng)、裝配無紙化管理系統(tǒng)、采購庫存管理系統(tǒng)等一些以服務(wù)產(chǎn)品的研制或批產(chǎn)為核心的信息系統(tǒng)建設(shè),在產(chǎn)品生產(chǎn)過程中進行了應(yīng)用,取得了良好的成效,發(fā)揮了信息化應(yīng)有的成效。為了保證公司信息化建設(shè)持續(xù)穩(wěn)定快速發(fā)展,公司對未來5年的信息化系統(tǒng)建設(shè)進行整體規(guī)劃,對未來業(yè)務(wù)系統(tǒng)的高可用性提出了具體要求。
在綜合管理領(lǐng)域,公司將業(yè)務(wù)系統(tǒng)分為軍品生產(chǎn)管控、民品生產(chǎn)管控、MES系統(tǒng)、供應(yīng)鏈、質(zhì)量和工裝工具系統(tǒng)、財務(wù)管控系統(tǒng)和綜合管控系統(tǒng)這6個子業(yè)務(wù)系統(tǒng),對這6個子業(yè)務(wù)系統(tǒng)分別定義其可用性要求,如表2所示。
為滿足企業(yè)整合后應(yīng)用的高可用性要求,從以下幾個方面進行高可用性方案的設(shè)計。
(1)基于集群和均衡負載技術(shù)實現(xiàn)應(yīng)用服務(wù)器的高可用性:在應(yīng)用服務(wù)器端,基于硬件的均衡負載可以將訪問壓力分散到多臺應(yīng)用服務(wù)器上,如果沒有硬件均衡負載器,也可以通過軟件均衡負載實現(xiàn)。在多應(yīng)用服務(wù)器之間,采用集群技術(shù)共享會話數(shù)據(jù),以保證用戶信息可以在集群多個節(jié)點之間共享使用。
表2 子業(yè)務(wù)系統(tǒng)的可用性要求
(2)實現(xiàn)數(shù)據(jù)庫高可用性和高性能:采用Oracle RAC技術(shù)實現(xiàn)數(shù)據(jù)庫高可用性。利用現(xiàn)有的硬件和存儲進行整合,逐步將現(xiàn)有的20+ 數(shù)據(jù)庫實例減少到4~6個數(shù)據(jù)庫實例,并每個數(shù)據(jù)庫實例均采用Oracle RAC實現(xiàn)。對于非Oracle 數(shù)據(jù)庫,例如SQL Server和MySQL數(shù)據(jù)庫,如果有條件,建議遷移到Oracle數(shù)據(jù)庫,如果無條件則保持現(xiàn)狀。對于今后新上線的業(yè)務(wù)系統(tǒng),將是否支持Oracle數(shù)據(jù)庫作為重要的選型條件。
(3)實現(xiàn)主題數(shù)據(jù)庫的設(shè)計和遷移,降低數(shù)據(jù)庫數(shù)量:將現(xiàn)有的眾多數(shù)據(jù)庫進行合并,形成按照主題進行設(shè)計的核心數(shù)據(jù)庫中。主題數(shù)據(jù)庫改變各個應(yīng)用系統(tǒng)“自建自用”的數(shù)據(jù)庫做法,強調(diào)建立各個應(yīng)用系統(tǒng)“共建共用”的共享數(shù)據(jù)庫。不同的應(yīng)用系統(tǒng)的計算機程序調(diào)用這些主題數(shù)據(jù)庫,例如,庫存管理調(diào)用產(chǎn)品、零部件、訂貨數(shù)據(jù)庫;采購調(diào)用零部件、供應(yīng)商、工程規(guī)范數(shù)據(jù)庫等。根據(jù)信息化建設(shè)企業(yè)運營管控平臺的建設(shè)需求,我們可以設(shè)計主題數(shù)據(jù)庫為:
·財務(wù)主題數(shù)據(jù)庫:整合現(xiàn)有財務(wù)、成本、資金、預(yù)算等數(shù)據(jù),統(tǒng)一到財務(wù)主題數(shù)據(jù)庫中。
·綜合管理主題數(shù)據(jù)庫:整合現(xiàn)有辦公管理、項目管理、技術(shù)文件、檔案、技改、人力資源、戰(zhàn)略運營等數(shù)據(jù)庫到統(tǒng)一的綜合管理主題數(shù)據(jù)庫中。
·軍品型號生產(chǎn)制造主題數(shù)據(jù)庫:將現(xiàn)有軍品生產(chǎn)制造相關(guān)數(shù)據(jù)庫整合到統(tǒng)一的數(shù)據(jù)庫中。
·民品型號生產(chǎn)制造主題數(shù)據(jù)庫:將現(xiàn)有和未來民品型號生產(chǎn)相關(guān)的數(shù)據(jù)庫整合到統(tǒng)一的民品型號生產(chǎn)制造主題數(shù)據(jù)庫中。
·工裝質(zhì)量供應(yīng)鏈主題數(shù)據(jù)庫:將所有工裝質(zhì)量供應(yīng)鏈管理相關(guān)數(shù)據(jù)庫整合到統(tǒng)一數(shù)據(jù)庫中。
·MES主題數(shù)據(jù)庫:將MES系統(tǒng)的數(shù)據(jù)均存放于MES主題數(shù)據(jù)庫。
(4)實現(xiàn)水平擴展能力:在應(yīng)用層采用均衡負載和集群技術(shù)實現(xiàn)水平擴展能力。隨著企業(yè)各應(yīng)用系統(tǒng)的逐步推廣應(yīng)用,當(dāng)出現(xiàn)有服務(wù)器無法滿足容量和速度需求時,可以基于均衡負載和集群技術(shù)動態(tài)向集群中增加新的硬件配置,以提高整體集群的運算能力和容量,當(dāng)需要淘汰較舊的服務(wù)器資源時,也可以動態(tài)將舊硬件從集群中退出,在應(yīng)用層不受影響下實現(xiàn)系統(tǒng)硬件資源的動態(tài)更新。
(5)采用虛擬化技術(shù):利用虛擬化技術(shù)實現(xiàn)應(yīng)用層的高可用性、水平擴展和提高資源利用率,提高現(xiàn)有硬件資源的利用率。
(6)提高系統(tǒng)的監(jiān)控和管理能力:采用多種系統(tǒng)的監(jiān)控手段監(jiān)控業(yè)務(wù)系統(tǒng)的CPU占用率、網(wǎng)絡(luò)利用率、在線用戶、數(shù)據(jù)量和數(shù)據(jù)增長量,備份和恢復(fù)狀態(tài)等內(nèi)容。
(7)實現(xiàn)系統(tǒng)部署的標(biāo)準(zhǔn)化:采用標(biāo)準(zhǔn)化的硬件或虛擬機配置,標(biāo)準(zhǔn)化操作系統(tǒng),標(biāo)準(zhǔn)化數(shù)據(jù)庫,標(biāo)準(zhǔn)化存儲等。利用標(biāo)準(zhǔn)化的硬件或虛擬機配置,可以實現(xiàn)采購或系統(tǒng)部署的迅速和標(biāo)準(zhǔn)化部署。同時將現(xiàn)有業(yè)務(wù)系統(tǒng)進行梳理,根據(jù)不同的業(yè)務(wù)壓力需求設(shè)計不同的標(biāo)準(zhǔn)化的硬件或虛擬機配置級別。
應(yīng)用服務(wù)器高可用性建設(shè)是為了滿足應(yīng)用系統(tǒng)在應(yīng)用服務(wù)器層的高可用性要求,目前技術(shù)比較成熟穩(wěn)定,我們采用基于Apache HTTP Server的均衡負載和基于Apache Tomcat的集群技術(shù)實現(xiàn)。
3.1.1 基于Apache HTTP Server的均衡負載[2]方案
負載均衡就是將客戶端的請求分流給后端的各個真實服務(wù)器,達到負載均衡的目的。還有一種方式是用兩臺服務(wù)器,一臺作為主服務(wù)器(Master),另一臺作為熱備份(Hot Standby),請求全部分給主服務(wù)器,在主服務(wù)器當(dāng)機時,立即切換到備份服務(wù)器,以提高系統(tǒng)的整體可靠性。
Apache HTTP Server 2.2版本以上均支持均衡負載配置,通過均衡負載配置,Apache HTTP Server可以將請求轉(zhuǎn)發(fā)給2個或多個后端Apache Tomcat 服務(wù)器,以達到均衡負載的目的,提高系統(tǒng)的可靠性。
Apache HTTP Server支持3中均衡負載算法,并支持SESSION粘連機制:
· lbmethod=byrequests按照請求次數(shù)均衡(默認(rèn));
· lbmethod=bytraffic按照流量均衡;
· lbmethod=bybusyness按照繁忙程度均衡(總是分配給活躍請求數(shù)最少的服務(wù)器)。
此外,還可以通過Apache HTTP Server實現(xiàn)主從備份功能。Apache HTTP Server的均衡負載技術(shù)被大多數(shù)的應(yīng)用軟件提供商使用,是非常成熟穩(wěn)定的均衡負載解決方案。
3.1.2 基于Apache Tomcat 的集群[3]方案
Apache Tomcat 提供的集群技術(shù)可以實現(xiàn)用戶會話信息在多集群節(jié)點之間的共享,單節(jié)點關(guān)閉或故障不會影響到整體應(yīng)用運行,結(jié)合Apache HTTP Server的均衡負載技術(shù),可以最大程度地提高應(yīng)用的可用性,解決了單點故障的問題。
Apache Tomcat集群配置相對簡單,但對應(yīng)用程序的開發(fā)具有一定的影響,內(nèi)容包括:
· Session中存儲的對象必須實現(xiàn)java.io.Serializable接口;
· web.xml配置文件中需要加入
· 所有節(jié)點之間的時間必須保持同步,可以采用NTP協(xié)議實現(xiàn)時間同步;
· 均衡負載器必須實現(xiàn)Session粘連模式(sticky session mode)。
可以將Apache HTTP Server的均衡負載方案和Apache Tomcat的集群方案結(jié)合使用,以達到最佳集群部署效果,圖1示意了一個4節(jié)點集群的部署模式。
服務(wù)器Server1和Server2 由虛擬機承載,每個虛擬機中安裝Apache HTTP Server和兩個Tomcat 實例,Apache HTTP Server之間實現(xiàn)均衡負載,將負載轉(zhuǎn)發(fā)給4個Tomcat實例,4個Tomcat 實例之間實現(xiàn)集群,整個集群運行了兩個Web應(yīng)用程序,其中Server2使用NFS模式共享了Server1 的Web應(yīng)用程序,可防止出現(xiàn)各節(jié)點間程序不一致的現(xiàn)象。
這種集群部署模式簡單實用,實現(xiàn)成本較低,技術(shù)成熟穩(wěn)定,已經(jīng)在行業(yè)內(nèi)外廣泛得到使用,企業(yè)選取這種集群部署模式,取得了較好的效果。
Oracle RAC[4](Real Application Clusters),譯為“實時應(yīng)用集群”,是Oracle新版數(shù)據(jù)庫中采用的一項新技術(shù),是高可用性的一種,也是Oracle數(shù)據(jù)庫支持網(wǎng)格計算環(huán)境的核心技術(shù)。Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24×7有效的數(shù)據(jù)庫應(yīng)用系統(tǒng),在低成本服務(wù)器上構(gòu)建高可用性數(shù)據(jù)庫系統(tǒng),并且自由部署應(yīng)用,無需修改代碼。在Oracle RAC環(huán)境下,Oracle集成提供了集群軟件和存儲管理軟件,為用戶降低了應(yīng)用成本。當(dāng)應(yīng)用規(guī)模需要擴充時,用戶可以按需擴展系統(tǒng),以保證系統(tǒng)的性能。
圖1 應(yīng)用服務(wù)器高可用性部署示例圖Fig.1 Deployment Sample of High Availability of Application Server
Oracle RAC具有以下優(yōu)點:
(1)多節(jié)點負載均衡;
(2)提供高可用:故障容錯和無縫切換功能,將硬件和軟件錯誤造成的影響最小化;
(3)通過并行執(zhí)行技術(shù)提高事務(wù)響應(yīng)時間——通常用于數(shù)據(jù)分析系統(tǒng);
(4)通過橫向擴展提高每秒交易數(shù)和連接數(shù)——通常對于聯(lián)機事務(wù)系統(tǒng);
(5)可擴展性好,可以方便添加刪除節(jié)點,擴展硬件資源。
圖2 Oracle RAC 部署示例圖Fig.2 Oracle RAC Deployment Sample
Oracle RAC同時也具有一定的缺點:
(1)相對單機,管理更復(fù)雜,要求更高;
(2)在系統(tǒng)規(guī)劃設(shè)計較差時性能甚至不如單節(jié)點;
(3)可能會增加軟件成本。
本文通過對企業(yè)應(yīng)用系統(tǒng)的部署架構(gòu)進行研究,學(xué)習(xí)和簡介國內(nèi)外成熟的高可用性、高可靠性和高性能業(yè)務(wù)系統(tǒng)的部署方式,結(jié)合企業(yè)實際情況對應(yīng)用系統(tǒng)的部署架構(gòu)進行了研究,通過應(yīng)用集群技術(shù)、虛擬化技術(shù)、數(shù)據(jù)庫集群技術(shù)、系統(tǒng)監(jiān)控和管理技術(shù)的研究,分為不同層面實現(xiàn)高可用性制定了可行的解決方案。
在應(yīng)用服務(wù)器區(qū)應(yīng)用虛擬化技術(shù)和應(yīng)用服務(wù)器集群技術(shù),基于Apache HTTP Server + Apache Tomcat實現(xiàn)集群部署。在對現(xiàn)有眾多應(yīng)用系統(tǒng)進行梳理和分析過程中,結(jié)合企業(yè)信息化規(guī)劃對應(yīng)用服務(wù)區(qū)進行了整合。
[1] 柳陽.基于HA集群的Linux多機互備份系統(tǒng)的研究與應(yīng)用[D].廣州:華南理工大學(xué),2011.
[2] 陳斌.基于Apache集群負載均衡的研究和實現(xiàn)[D].成都:電子科技大學(xué), 2010.
[3] 黃洲.Apache-Tomcat服務(wù)器集群管理系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:華中科技大學(xué), 2011.
[4] 刁申. RAC實施部署的研究[D].長春:東北師范大學(xué),2012.