蘇林萍,安 然,李 為,崔文超,張曉良
(華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院,北京 102206)
隨著計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展,國(guó)家電網(wǎng)公司對(duì)運(yùn)維過(guò)程信息化的需求日益增大,運(yùn)維審計(jì)系統(tǒng)擁有越來(lái)越重要的地位。但由于目前單機(jī)運(yùn)維審計(jì)系統(tǒng)與其他業(yè)務(wù)系統(tǒng)的交互不斷增加從而產(chǎn)生了海量數(shù)據(jù),面臨的風(fēng)險(xiǎn)也越來(lái)越高[1]。面對(duì)系統(tǒng)所產(chǎn)生的海量數(shù)據(jù)造成系統(tǒng)性能下降,存儲(chǔ)在單個(gè)服務(wù)器上顯然不能滿足需求,分布式存儲(chǔ)方式則能解決數(shù)據(jù)存儲(chǔ)分析困難的問(wèn)題。若服務(wù)器的某個(gè)硬件或者軟件發(fā)生故障時(shí),運(yùn)維審計(jì)系統(tǒng)將可能出現(xiàn)服務(wù)中斷、系統(tǒng)癱瘓等現(xiàn)象,對(duì)電網(wǎng)造成一定的損失,因此可靠性和穩(wěn)定性的提升是運(yùn)維審計(jì)系統(tǒng)亟需解決的難題?;贖adoop的處理方法可以對(duì)數(shù)據(jù)進(jìn)行分布式管理,將負(fù)載分散到若干個(gè)工作節(jié)點(diǎn)上,從而提升系統(tǒng)整體性能。Heartbeat心跳檢測(cè)技術(shù)可以有效地避免單一管理節(jié)點(diǎn)崩潰所帶來(lái)的一系列問(wèn)題,從而保障電網(wǎng)運(yùn)維審計(jì)系統(tǒng)安全可靠地運(yùn)行。
運(yùn)維審計(jì)系統(tǒng)數(shù)據(jù)的特點(diǎn)是數(shù)據(jù)規(guī)模大、數(shù)據(jù)類(lèi)型復(fù)雜,且數(shù)據(jù)是由分布在不同區(qū)域的設(shè)備上產(chǎn)生的,需要進(jìn)行分布式管理。Hadoop是一個(gè)開(kāi)源架構(gòu),具有數(shù)據(jù)處理量大、可靠性高等優(yōu)勢(shì),適用于運(yùn)維審計(jì)系統(tǒng)[2]。造成系統(tǒng)故障的原因主要有3種:首先是軟件運(yùn)行故障,其次是硬件運(yùn)行故障,最后是網(wǎng)絡(luò)環(huán)境或機(jī)房環(huán)境所引發(fā)的故障。由于在管理節(jié)點(diǎn)主從切換前后狀態(tài)下,軟件運(yùn)行故障和硬件運(yùn)行故障沒(méi)有關(guān)聯(lián),為了有效地避免這2種故障的發(fā)生,采用Heartbeat心跳檢測(cè)技術(shù)是完全可行的。網(wǎng)絡(luò)環(huán)境或機(jī)房環(huán)境所引發(fā)的故障在管理節(jié)點(diǎn)主從切換前后是具有一定相關(guān)性的,因此需要通過(guò)定量分析來(lái)證明Heartbeat心跳檢測(cè)技術(shù)對(duì)此故障能否有效地解決。
本運(yùn)維審計(jì)系統(tǒng)的架構(gòu)為B/S模式,圖1為系統(tǒng)的架構(gòu)示意圖。系統(tǒng)主要設(shè)有2個(gè)管理節(jié)點(diǎn)和3個(gè)工作節(jié)點(diǎn),管理節(jié)點(diǎn)通過(guò)Hadoop實(shí)現(xiàn)對(duì)3個(gè)工作節(jié)點(diǎn)的分布式管理,并采用Heartbeat心跳檢測(cè)技術(shù)來(lái)進(jìn)行服務(wù)監(jiān)測(cè),主服務(wù)器通過(guò)發(fā)送實(shí)時(shí)的心跳包向從服務(wù)器報(bào)告工作狀態(tài),同時(shí)也會(huì)監(jiān)聽(tīng)從服務(wù)器的心跳,判斷其是否出現(xiàn)異常[4]。用戶通過(guò)虛擬IP網(wǎng)址來(lái)對(duì)系統(tǒng)進(jìn)行訪問(wèn),正常情況下運(yùn)維審計(jì)系統(tǒng)管理節(jié)點(diǎn)服務(wù)是由主服務(wù)器提供的,從服務(wù)器處于備用狀態(tài),若主服務(wù)器出現(xiàn)異常狀況,則進(jìn)行主從切換,從服務(wù)器變?yōu)楣ぷ鳡顟B(tài)[5],以此來(lái)保證系統(tǒng)的穩(wěn)定性和可靠性。
此系統(tǒng)中,Hadoop用來(lái)實(shí)現(xiàn)管理節(jié)點(diǎn)對(duì)工作節(jié)點(diǎn)的分布式數(shù)據(jù)管理;Heartbeat用來(lái)提供心跳檢測(cè)機(jī)制、托管相關(guān)服務(wù)程序和提供虛擬IP;Tomcat用來(lái)提供Web服務(wù);MySQL用來(lái)作為數(shù)據(jù)庫(kù)管理系統(tǒng)。同時(shí),系統(tǒng)使用一個(gè)監(jiān)控腳本對(duì)管理節(jié)點(diǎn)主服務(wù)器上的Tomcat和Proxy(運(yùn)維審計(jì)系統(tǒng)主要程序)服務(wù)進(jìn)行實(shí)時(shí)監(jiān)聽(tīng),判斷其是否正常工作,若出現(xiàn)故障,及時(shí)進(jìn)行故障轉(zhuǎn)移。
圖1 運(yùn)維審計(jì)系統(tǒng)架構(gòu)示意圖
其中,Hadoop為數(shù)據(jù)的分布式存儲(chǔ)提供支持,系統(tǒng)產(chǎn)生的數(shù)據(jù)將會(huì)被分為若干個(gè)小的數(shù)據(jù)塊存儲(chǔ)于每一個(gè)工作節(jié)點(diǎn)上,而管理節(jié)點(diǎn)將對(duì)這些工作節(jié)點(diǎn)進(jìn)行統(tǒng)一管理。在系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行分析時(shí),Hadoop會(huì)用Map任務(wù)和Reduce任務(wù)進(jìn)行更細(xì)致的拆分,其啟動(dòng)、跟蹤和調(diào)度的過(guò)程是由工作節(jié)點(diǎn)上的JobTracker來(lái)執(zhí)行的[6]。Mapper部分負(fù)責(zé)把海量復(fù)雜的數(shù)據(jù)拆分成若干個(gè)任務(wù)來(lái)執(zhí)行。Reducer部分負(fù)責(zé)把Mapper部分得到的結(jié)果進(jìn)行歸納匯總整理[7]。
為了滿足運(yùn)維審計(jì)系統(tǒng)Heartbeat心跳檢測(cè)的需要,Heartbeat需要具有以下4個(gè)功能:1)狀態(tài)檢測(cè)功能,用于監(jiān)聽(tīng)主從服務(wù)器節(jié)點(diǎn)的工作狀態(tài);2)內(nèi)部通信功能,用于規(guī)定主從服務(wù)器節(jié)點(diǎn)的通信規(guī)則;3)共同管理功能,用于管理主從服務(wù)器節(jié)點(diǎn)資源的關(guān)系;4)失效切換功能,用于實(shí)現(xiàn)主從服務(wù)器節(jié)點(diǎn)的主從切換[8]。
系統(tǒng)實(shí)現(xiàn)過(guò)程按照自頂向下的思路,如圖1所示。為了避免管理節(jié)點(diǎn)單臺(tái)服務(wù)器出現(xiàn)故障造成無(wú)法訪問(wèn)的情況,需要對(duì)用戶提供一個(gè)可訪問(wèn)的虛擬IP地址,這個(gè)地址是由Heartbeat實(shí)現(xiàn)的。
圖2 系統(tǒng)模塊關(guān)系示意圖
如圖2所示,管理節(jié)點(diǎn)主從服務(wù)器用Heartbeat提供一個(gè)虛擬IP,正常情況下,主服務(wù)器上綁定該虛擬IP并向外提供服務(wù)。數(shù)據(jù)庫(kù)通過(guò)drbd來(lái)實(shí)現(xiàn)2臺(tái)服務(wù)器之間的數(shù)據(jù)同步,主服務(wù)器(Master)數(shù)據(jù)通過(guò)網(wǎng)絡(luò)數(shù)據(jù)鏈路實(shí)時(shí)同步到從服務(wù)器上(Slave)[9]。Tomcat和Proxy服務(wù)通過(guò)監(jiān)控腳本進(jìn)行實(shí)時(shí)監(jiān)控,若出現(xiàn)故障則由Heartbeat進(jìn)行主從切換,保證服務(wù)不中斷,系統(tǒng)長(zhǎng)期穩(wěn)定運(yùn)行。
在對(duì)開(kāi)源Hadoop分布式文件系統(tǒng)(HDFS)進(jìn)行測(cè)試的基礎(chǔ)上,傳統(tǒng)的存儲(chǔ)架構(gòu)不足以滿足系統(tǒng)對(duì)數(shù)據(jù)的高效存儲(chǔ)分析需求,因此對(duì)其架構(gòu)進(jìn)行了改進(jìn)。數(shù)據(jù)存儲(chǔ)模塊由存儲(chǔ)端、查詢端和訪問(wèn)鏈路這3個(gè)部分組成。運(yùn)維審計(jì)系統(tǒng)實(shí)時(shí)產(chǎn)生的海量數(shù)據(jù)由存儲(chǔ)端完成,查詢端提供的是海量數(shù)據(jù)的查詢檢索功能。圖3為運(yùn)維審計(jì)系統(tǒng)設(shè)計(jì)的海量數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)訪問(wèn)關(guān)系。
圖3 系統(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)訪問(wèn)關(guān)系圖
管理節(jié)點(diǎn)主從服務(wù)器安裝完Heartbeat后,需要配置相關(guān)配置文件。首先需要配置ha.cf文件,配置的內(nèi)容如表1所示。
表1 ha.cf文件配置內(nèi)容
配置內(nèi)容說(shuō)明keepalive 2配置主從服務(wù)器的心跳頻率,2表示2 sdeadtime 15節(jié)點(diǎn)死亡時(shí)間,即當(dāng)超過(guò)15 s后從服務(wù)器未接收到主服務(wù)器心跳信息時(shí),進(jìn)行主從切換操作ucast eth1用于指定心跳網(wǎng)卡,采用udp單播來(lái)通知心跳信息,eth1表示通過(guò)該網(wǎng)口進(jìn)行心跳的檢測(cè)auto_failback off當(dāng)主從切換后,主服務(wù)器復(fù)原是否進(jìn)行自動(dòng)切回操作,off表示否node server_master主服務(wù)器名稱,與uname -n顯示必須一致,即server_master
Heartbeat有crc、md5和sha1這3種認(rèn)證方式[10],安全級(jí)別逐漸增高,對(duì)系統(tǒng)資源的使用也越來(lái)越多。authkeys文件對(duì)Heartbeat進(jìn)行相應(yīng)的授權(quán),由于運(yùn)維審計(jì)系統(tǒng)大多運(yùn)行在公司內(nèi)網(wǎng)中,主從服務(wù)器之間大多采用網(wǎng)線直連,安全性相對(duì)較高,因此采用的認(rèn)證方式為crc。
另外,還需要對(duì)Heartbeat接管的資源進(jìn)行配置,文件為haresources,配置的內(nèi)容如表2所示。
表2 haresources文件配置內(nèi)容
配置內(nèi)容說(shuō)明server_master主服務(wù)器名稱,與uname -n顯示必須一致,即server_master10.0.0.1虛擬IP,對(duì)外提供訪問(wèn)網(wǎng)址drbddisk::r0drbd掛載磁盤(pán)節(jié)點(diǎn)名,即r0tomcat proxy托管Tomcat和Proxy服務(wù),由Heartbeat負(fù)責(zé)進(jìn)行開(kāi)啟和關(guān)閉
基于Hadoop的分布式數(shù)據(jù)存儲(chǔ)和Heartbeat心跳檢測(cè)的運(yùn)維審計(jì)系統(tǒng)的工作情況主要分為以下3種:1)正常工作狀態(tài);2)管理節(jié)點(diǎn)主服務(wù)器發(fā)生異常,從服務(wù)器對(duì)外提供服務(wù);3)管理節(jié)點(diǎn)主服務(wù)器異?;謴?fù)后變?yōu)閺姆?wù)器[11]。
下面將針對(duì)不同情況分別進(jìn)行描述。
1)正常工作狀態(tài)。
正常工作情況下,管理節(jié)點(diǎn)主服務(wù)器處于工作狀態(tài),從服務(wù)器處于待機(jī)狀態(tài)。虛擬IP綁定在主服務(wù)器上來(lái)提供對(duì)外訪問(wèn)地址,通過(guò)主從服務(wù)器的心跳監(jiān)聽(tīng)判斷是否進(jìn)行故障轉(zhuǎn)移。Tomcat和Proxy服務(wù)通過(guò)監(jiān)控腳本進(jìn)行實(shí)時(shí)監(jiān)控,若出現(xiàn)故障則由Heartbeat進(jìn)行主從切換,如圖4所示。
圖4 監(jiān)控腳本工作流程圖
2)管理節(jié)點(diǎn)主服務(wù)器發(fā)生異常,從服務(wù)器對(duì)外提供服務(wù)。
若主服務(wù)器出現(xiàn)軟件或者硬件故障無(wú)法提供服務(wù),導(dǎo)致2臺(tái)服務(wù)器無(wú)法監(jiān)聽(tīng)到對(duì)方的心跳包,此時(shí)從服務(wù)器對(duì)虛擬IP進(jìn)行綁定,并啟動(dòng)相關(guān)服務(wù)程序(Tomcat、Proxy)來(lái)提供對(duì)外服務(wù)。Web服務(wù)此時(shí)由從服務(wù)器上的Tomcat來(lái)提供。同時(shí),監(jiān)控相關(guān)服務(wù)程序的腳本也會(huì)在從服務(wù)器上啟動(dòng),對(duì)服務(wù)進(jìn)行實(shí)時(shí)檢測(cè),保證系統(tǒng)穩(wěn)定運(yùn)行。
3)管理節(jié)點(diǎn)主服務(wù)器異常恢復(fù)后變?yōu)閺姆?wù)器。
主服務(wù)器異?;謴?fù)之后自動(dòng)啟動(dòng)Heartbeat,把心跳信號(hào)發(fā)送給從服務(wù)器,此時(shí)主服務(wù)器就變成了從服務(wù)器,正在提供服務(wù)的從服務(wù)器變?yōu)橹鞣?wù)器,二者角色互換。數(shù)據(jù)依然通過(guò)網(wǎng)絡(luò)數(shù)據(jù)鏈路同步到共享存儲(chǔ)空間,保證運(yùn)維審計(jì)系統(tǒng)數(shù)據(jù)的完整性。
運(yùn)維審計(jì)系統(tǒng)是否可用,主要是通過(guò)可靠性和可維護(hù)性這2個(gè)指標(biāo)來(lái)分析。在實(shí)際工程中,通常使用平均無(wú)故障工作時(shí)間(MTTF)來(lái)度量運(yùn)維審計(jì)系統(tǒng)的可靠性,使用平均修復(fù)時(shí)間(MTTR)來(lái)度量系統(tǒng)的可維護(hù)性,其中MTTF+MTTR被稱為平均失效時(shí)間(MTBF)[12]。
所以,運(yùn)維審計(jì)系統(tǒng)可用性的計(jì)算公式為:
實(shí)際測(cè)試結(jié)果如表3所示。
表3 單機(jī)和Hadoop集群的比較
系統(tǒng)MTTF/hMTTR/h可用性As/%單機(jī)5224891.579Hadoop集群19861/6099.999
從表3可以看出,基于Hadoop的分布式數(shù)據(jù)存儲(chǔ)和Heartbeat心跳檢測(cè)的運(yùn)維審計(jì)系統(tǒng)故障率大大降低,系統(tǒng)的可用性提高了8.42%。
為了表明Hadoop集群系統(tǒng)相比單機(jī)系統(tǒng)能夠提高系統(tǒng)的數(shù)據(jù)處理能力,本文在不同的并發(fā)用戶數(shù)量下,測(cè)試Hadoop集群系統(tǒng)和單機(jī)系統(tǒng)的性能情況,實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 Hadoop集群和單機(jī)系統(tǒng)不同用戶數(shù)下的數(shù)據(jù)處理性能
根據(jù)以上實(shí)驗(yàn)發(fā)現(xiàn),單機(jī)系統(tǒng)在并發(fā)用戶數(shù)量大的情況下,數(shù)據(jù)的處理性能會(huì)有明顯的下降;而Hadoop集群在并發(fā)用戶數(shù)量大的情況下受到的影響較小,依然能保持高效的數(shù)據(jù)處理性能。
由此表明Hadoop集群系統(tǒng)能夠減小在并發(fā)用戶數(shù)增大過(guò)程中造成的系統(tǒng)性能的損失,同時(shí)提高系統(tǒng)可用性。
本運(yùn)維審計(jì)系統(tǒng)通過(guò)Hadoop實(shí)現(xiàn)了海量數(shù)據(jù)的分布式存儲(chǔ)與分析,使用Heartbeat軟件實(shí)現(xiàn)了2個(gè)管理節(jié)點(diǎn)之間的心跳檢測(cè)。本文設(shè)計(jì)的系統(tǒng)滿足國(guó)家電網(wǎng)公司對(duì)運(yùn)維審計(jì)系統(tǒng)穩(wěn)定性的需求,能夠在不影響系統(tǒng)性能的情況下處理大量數(shù)據(jù),確保系統(tǒng)高效、穩(wěn)定以及可靠地運(yùn)行,提供良好的用戶體驗(yàn)。