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