楊 沖 馬素霞 吳玉龍
1.華北電力大學(xué)控制與計(jì)算機(jī)工程學(xué)院;2.山西世紀(jì)中試電力科學(xué)技術(shù)有限公司楊沖(1986-)男,碩士,工程師,研究方向?yàn)橛?jì)算機(jī)軟件與理論。
目前,各電力系統(tǒng)應(yīng)用開(kāi)始采用電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)獲取所需的電能質(zhì)量數(shù)據(jù),以用來(lái)解決由于電能質(zhì)量數(shù)據(jù)格式不同或者平臺(tái)不同而造成的數(shù)據(jù)共享問(wèn)題。但用戶在訪問(wèn)電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)的過(guò)程中,服務(wù)的可用性不能得到保證,服務(wù)的低可用性會(huì)使得用戶不能及時(shí)獲得電能質(zhì)量數(shù)據(jù)。本文提出并實(shí)現(xiàn)了一種基于負(fù)載均衡技術(shù)的高可用性集群方案,旨在提高電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)的可用性。方案的網(wǎng)絡(luò)架構(gòu)分為數(shù)據(jù)層、應(yīng)用層和負(fù)載均衡功能層。負(fù)載均衡功能層通過(guò)IP 虛擬服務(wù)器和心跳檢測(cè)等技術(shù)來(lái)管理部署有電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)的應(yīng)用層。
在智能電網(wǎng)運(yùn)行過(guò)程當(dāng)中,電能質(zhì)量數(shù)據(jù)占據(jù)著越來(lái)越重要的位置。電能質(zhì)量信息系統(tǒng)能夠采集、存儲(chǔ)電能質(zhì)量數(shù)據(jù),并依此來(lái)進(jìn)行指標(biāo)評(píng)估、問(wèn)題分析和綜合治理以及數(shù)據(jù)展示。但電能質(zhì)量數(shù)據(jù)格式千差萬(wàn)別,來(lái)源多種多樣且互不兼容。這使得不同的電力應(yīng)用之間難以進(jìn)行數(shù)據(jù)共享,造成數(shù)據(jù)浪費(fèi)?;赪eb Service 技術(shù)的電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)使得應(yīng)用可以通過(guò)Web 服務(wù)的形式獲取到約定格式的電能質(zhì)量數(shù)據(jù),從而解決了數(shù)據(jù)共享的難題。然而基礎(chǔ)數(shù)據(jù)服務(wù)對(duì)服務(wù)提供方的可用性提出了很高的要求,Web 服務(wù)器的突發(fā)宕機(jī),計(jì)算機(jī)網(wǎng)絡(luò)的中斷,Web服務(wù)器軟硬件的故障都會(huì)降低服務(wù)的可用性??紤]到電力系統(tǒng)應(yīng)用對(duì)實(shí)時(shí)性有較高的要求,電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)的低可用性必然會(huì)加大電力應(yīng)用獲得異常數(shù)據(jù)的概率,使得根據(jù)數(shù)據(jù)得到的分析決策出現(xiàn)偏差,從而造成社會(huì)供電危害和經(jīng)濟(jì)損失。
本文采用的基于負(fù)載均衡技術(shù)的集群方案可以大大提高電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)的可用性,此方案通過(guò)將電能質(zhì)量基礎(chǔ)服務(wù)發(fā)布到若干的分立系統(tǒng)中來(lái)提高服務(wù)提供方處理請(qǐng)求的整體能力。即使集群的某部分出現(xiàn)了故障,系統(tǒng)仍然能夠處理Web 服務(wù)的訪問(wèn)請(qǐng)求。
電能質(zhì)量基礎(chǔ)數(shù)據(jù)包括穩(wěn)態(tài)基礎(chǔ)數(shù)據(jù)和事件基礎(chǔ)數(shù)據(jù),它是電網(wǎng)安全穩(wěn)定運(yùn)行的核心要素。目前電能質(zhì)量基礎(chǔ)數(shù)據(jù)的來(lái)源主要包括PQView 數(shù)據(jù)庫(kù)、基礎(chǔ)數(shù)據(jù)庫(kù)和監(jiān)測(cè)前端。
1)PQView 數(shù)據(jù)庫(kù)
PQView 是美國(guó)電科院與美國(guó)電力公司于九十年代初期開(kāi)發(fā)的目前世界上一個(gè)成熟的、全面的電能質(zhì)量專用的數(shù)據(jù)庫(kù)管理、分析與數(shù)據(jù)應(yīng)用軟件。它不斷的將采集到的數(shù)據(jù)上傳并處理,存儲(chǔ)于其支持的開(kāi)放式ODBC 數(shù)據(jù)庫(kù)即PQView 數(shù)據(jù)庫(kù)中。
2)基礎(chǔ)數(shù)據(jù)庫(kù)
基礎(chǔ)數(shù)據(jù)庫(kù)的數(shù)據(jù)來(lái)自電能質(zhì)量采集和解析模塊,具體的數(shù)據(jù)來(lái)源包括電能質(zhì)量監(jiān)測(cè)終端、電壓監(jiān)測(cè)儀采集來(lái)的數(shù)據(jù),例如PQDIF 數(shù)據(jù)文件;也包括來(lái)自其他系統(tǒng)的電能質(zhì)量數(shù)據(jù),如PQView 數(shù)據(jù)庫(kù)。
3)監(jiān)測(cè)前端
監(jiān)測(cè)前端由監(jiān)測(cè)設(shè)備、監(jiān)測(cè)數(shù)據(jù)服務(wù)器組成。不同類型的監(jiān)測(cè)設(shè)備從現(xiàn)場(chǎng)采集電能質(zhì)量數(shù)據(jù),然后形成各自格式的數(shù)據(jù)文件,最終將這些電能質(zhì)量數(shù)據(jù)文件上傳到各自的監(jiān)測(cè)數(shù)據(jù)服務(wù)器中存儲(chǔ)。
綜上所述,電能質(zhì)量基礎(chǔ)數(shù)據(jù)的來(lái)源多種多樣、數(shù)據(jù)格式千差萬(wàn)別、互不兼容。基于Web Service 技術(shù)的電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)有助于充分利用電能質(zhì)量數(shù)據(jù),改善數(shù)據(jù)壁壘現(xiàn)狀。
首先,Web 服務(wù)因其具有語(yǔ)言獨(dú)立性、平臺(tái)無(wú)關(guān)性、跨地域、等特點(diǎn),可以有效消除“信息孤島”現(xiàn)象,運(yùn)行在不同機(jī)器上的電力應(yīng)用無(wú)須借助附加的、專門(mén)的第三方軟件或硬件,就可相互交換數(shù)據(jù)。
其次,Web Service是自描述、自包含的可用網(wǎng)絡(luò)模塊,可以執(zhí)行具體的業(yè)務(wù)功能。文獻(xiàn)[1]提出了開(kāi)發(fā)一個(gè)電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)系統(tǒng)來(lái)解決數(shù)據(jù)共享的問(wèn)題,系統(tǒng)將異構(gòu)數(shù)據(jù)源的數(shù)據(jù)解析并轉(zhuǎn)換為特定XML格式的基礎(chǔ)數(shù)據(jù),然后以接口的形式向外提供服務(wù)。通過(guò)基礎(chǔ)數(shù)據(jù)服務(wù)得到的電能質(zhì)量數(shù)據(jù)可以用來(lái)進(jìn)行數(shù)據(jù)分析,能及時(shí)發(fā)現(xiàn)電能質(zhì)量問(wèn)題,實(shí)現(xiàn)電能質(zhì)量信息的共享。
電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)基于Web Service 技術(shù),它的網(wǎng)絡(luò)特性決定了服務(wù)的局限性。一方面Web 服務(wù)器或設(shè)備的物理故障以及計(jì)算機(jī)網(wǎng)絡(luò)的中斷都會(huì)造成基礎(chǔ)數(shù)據(jù)服務(wù)的中斷,從而降低服務(wù)的可用性。另一方面,當(dāng)Web服務(wù)器同一時(shí)刻處理的訪問(wèn)請(qǐng)求數(shù)量超過(guò)其負(fù)載能力的時(shí)候,Web 服務(wù)將不可訪問(wèn)。
對(duì)此,我們需要尋求一種提高電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)可用性的解決方案,來(lái)達(dá)到電力系統(tǒng)應(yīng)用對(duì)電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)高可用性的要求,實(shí)現(xiàn)服務(wù)的無(wú)故障運(yùn)行?;谪?fù)載均衡技術(shù)的集群方案就能顯著提升服務(wù)的可用性。
高可用性,它是指Web 服務(wù)保持一直在線并可用的能力,常用的衡量標(biāo)準(zhǔn)是可用性服務(wù)等級(jí)協(xié)議(SLA)。它會(huì)指出Web 服務(wù)器每年需要在多長(zhǎng)時(shí)間內(nèi)能正常工作、保持可用才達(dá)到高可用性的標(biāo)準(zhǔn)。
單一故障點(diǎn),指網(wǎng)絡(luò)架構(gòu)中導(dǎo)致系統(tǒng)或者系統(tǒng)組件在執(zhí)行其預(yù)期安全功能時(shí)失效的故障節(jié)點(diǎn)。它是一個(gè)單一系統(tǒng),如果它出現(xiàn)了故障,整個(gè)系統(tǒng)都會(huì)無(wú)法工作。
我們采用基于負(fù)載均衡技術(shù)的集群方案來(lái)解決基礎(chǔ)數(shù)據(jù)服務(wù)可用性低的問(wèn)題,即使集群的某部分出現(xiàn)了故障,電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)系統(tǒng)依然能夠正常工作,提供穩(wěn)定的Web 服務(wù);同時(shí)大大提高基礎(chǔ)數(shù)據(jù)服務(wù)提供方處理大量訪問(wèn)請(qǐng)求的能力。為了達(dá)到這個(gè)目標(biāo),我們構(gòu)建一個(gè)備用系統(tǒng),實(shí)現(xiàn)Web 服務(wù)的功能冗余。此集群采用負(fù)載均衡技術(shù)來(lái)實(shí)現(xiàn),它的主要優(yōu)勢(shì)在于已經(jīng)通過(guò)搭建的共享負(fù)載服務(wù)器的形式實(shí)現(xiàn)了冗余,而且不必采用昂貴的軟硬件設(shè)備。它的主要手段是數(shù)據(jù)和服務(wù)的冗余備份及失效轉(zhuǎn)移,一旦集群中的某些服務(wù)器宕機(jī)或者Web 服務(wù)訪問(wèn)請(qǐng)求超過(guò)負(fù)載能力,就將電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)切換到其他可用的服務(wù)器上,如圖1 所示。
當(dāng)Web 服務(wù)器集群中的服務(wù)器都可用時(shí),負(fù)載均衡服務(wù)器會(huì)把用戶發(fā)送的訪問(wèn)請(qǐng)求分發(fā)到任意一臺(tái)服務(wù)器上進(jìn)行處理,當(dāng)服務(wù)器10.0.0.1 宕機(jī)時(shí),負(fù)載均衡服務(wù)器通過(guò)心跳檢測(cè)機(jī)制發(fā)現(xiàn)該服務(wù)器失去響應(yīng),就會(huì)把它從服務(wù)器列表中刪除,而將請(qǐng)求發(fā)送到其他服務(wù)器上,請(qǐng)求在任何一臺(tái)服務(wù)器中處理都不會(huì)影響最終結(jié)果。
解決電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)低可用性的集群方案包括數(shù)據(jù)層、應(yīng)用層、負(fù)載均衡功能層。數(shù)據(jù)層包含基礎(chǔ)的電能質(zhì)量數(shù)據(jù);應(yīng)用層每臺(tái)Web 服務(wù)器都部署了電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù),向上層提供Web 服務(wù)訪問(wèn)功能;負(fù)載均衡功能層包含兩臺(tái)以上負(fù)載均衡服務(wù)器,它負(fù)責(zé)管理和分配集群從外部接收到的訪問(wèn)請(qǐng)求,管理應(yīng)用層服務(wù)器的使用?;谪?fù)載均衡的高可用性集群方案網(wǎng)絡(luò)架構(gòu)如圖2 所示。
圖1 負(fù)載均衡原理
圖2 利用負(fù)載均衡服務(wù)器實(shí)現(xiàn)高可用的集群
本文提出的基于負(fù)載均衡的高可用性集群方案的架構(gòu)是一個(gè)分層的網(wǎng)絡(luò)架構(gòu)。搭建集群時(shí),關(guān)鍵在于負(fù)載均衡功能層的實(shí)現(xiàn)。首先,要實(shí)現(xiàn)集群在創(chuàng)建虛擬服務(wù)器時(shí),以自動(dòng)化方式來(lái)指定要使用的服務(wù)器。其次,要解決網(wǎng)絡(luò)架構(gòu)中單一故障點(diǎn)的問(wèn)題,如圖1 所示IPVS 使用的負(fù)載均衡服務(wù)器為單一故障點(diǎn)。最后,維護(hù)多臺(tái)負(fù)載均衡服務(wù)器,就需要多個(gè)負(fù)載均衡服務(wù)器IP 地址。針對(duì)上述三個(gè)問(wèn)題,我們分別采用IP 虛擬服務(wù)器、故障恢復(fù)服務(wù)器和虛擬IP 地址來(lái)解決。
IP 虛擬服務(wù)器(IPVS)是用來(lái)進(jìn)行負(fù)載均衡的工具。它的主要用途是為Web 服務(wù)器提供一個(gè)“前端”,處理入向基礎(chǔ)數(shù)據(jù)服務(wù)器訪問(wèn)請(qǐng)求。然后將這些請(qǐng)求發(fā)給各個(gè)部署有電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)的Web 服務(wù)器來(lái)響應(yīng)。
IPVS 通過(guò)建立一個(gè)或多個(gè)虛擬服務(wù)來(lái)工作。它會(huì)將所有Web 服務(wù)器都分配給該服務(wù),并為每個(gè)服務(wù)創(chuàng)建一個(gè)LINUX 前端。這個(gè)前端將訪問(wèn)請(qǐng)求先聚集到該負(fù)載均衡服務(wù)器,再將每個(gè)請(qǐng)求的負(fù)載分發(fā)給作為虛擬服務(wù)一部分的Web 服務(wù)器。然后這些Web 服務(wù)器來(lái)處理這些請(qǐng)求,加入到這個(gè)虛擬服務(wù)的工作服務(wù)器越多,每臺(tái)Web 服務(wù)器要處理的前端分配過(guò)來(lái)的請(qǐng)求就越少。
在LINUX 中有個(gè)專門(mén)和IPVS 搭配工作的守護(hù)進(jìn)程,使用它可以實(shí)現(xiàn)集群在創(chuàng)建虛擬服務(wù)器時(shí),以自動(dòng)化的方式指定要使用的Web 服務(wù)器。因此,兩臺(tái)負(fù)載均衡服務(wù)器上要安裝集群軟件包ipvsadm 和ldirectord。
如圖1 所示,IPVS 使用的負(fù)載均衡服務(wù)器明顯是一個(gè)單一故障點(diǎn)。如果該負(fù)載均衡服務(wù)器停止了工作,用戶就不能對(duì)電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)進(jìn)行訪問(wèn)。
解決方法就是引入故障恢復(fù)服務(wù)器,如圖2 所示,在負(fù)載均衡服務(wù)器1 出現(xiàn)故障時(shí)用負(fù)載均衡服務(wù)器2 替代它。除了增加故障恢復(fù)服務(wù)器,我們還需要一種機(jī)制來(lái)允許備用負(fù)載均衡服務(wù)器監(jiān)測(cè)主負(fù)載均衡服務(wù)器上是否出現(xiàn)了故障,然后接管所有負(fù)載。這個(gè)應(yīng)用稱為heartbeat。它會(huì)同時(shí)跟兩臺(tái)負(fù)載均衡服務(wù)器保持聯(lián)系,一旦主服務(wù)器出現(xiàn)了故障,備用服務(wù)器就會(huì)接管。
Heartbeat 是一個(gè)集群管理程序,它是一個(gè)分布式的高可靠的程序。當(dāng)集群運(yùn)行心跳程序后,兩個(gè)負(fù)載均衡服務(wù)器之間經(jīng)常性的傳遞心跳數(shù)據(jù)包,通知對(duì)方“我活著”這樣的信息,當(dāng)負(fù)載均衡服務(wù)器1 的心跳信息無(wú)法被負(fù)載均衡2 接收到,并且這種情況持續(xù)了一段時(shí)間,心跳程序?qū)㈤_(kāi)始收回負(fù)載均衡服務(wù)器1 的資源,選擇負(fù)載均衡服務(wù)器2 對(duì)負(fù)載均衡服務(wù)器1 的任務(wù)進(jìn)行接管。當(dāng)負(fù)載均衡服務(wù)器1 的心跳信息重新能夠被負(fù)載均衡服務(wù)器2 接收到的時(shí)候,心跳程序就允許負(fù)載均衡服務(wù)器1 重新加入集群,提供服務(wù)。
如圖2 所示,使用虛擬IP 地址的集群,集群的IP 地址在任一時(shí)間可以屬于任意一臺(tái)服務(wù)器;集群中,拿到該虛擬IP 地址的那臺(tái)服務(wù)器會(huì)代表整個(gè)集群連接到外網(wǎng)。即我們可以將所有的入向、出向連接都指向該虛擬IP 地址,而它總會(huì)擔(dān)當(dāng)整個(gè)集群的接入點(diǎn)。
本文提出并初步實(shí)現(xiàn)了一種基于負(fù)載均衡技術(shù)的高可用性集群方案,提高了電能質(zhì)量基礎(chǔ)數(shù)據(jù)服務(wù)的可用性,對(duì)智能電網(wǎng)中Web 服務(wù)的部署具有參考意義。
本文提出的集群架構(gòu)在以下方面有待進(jìn)行深入研究。負(fù)載均衡技術(shù)基于四層交換或者七層交換技術(shù),鏈路層、傳輸層等都可以實(shí)現(xiàn)負(fù)載均衡。本文只針對(duì)應(yīng)用層進(jìn)行了負(fù)載均衡技術(shù)的使用,如何更大限度的把負(fù)載均衡技術(shù)運(yùn)用到智能電網(wǎng)的Web 服務(wù)中,如何更大程度的提高服務(wù)的可用性需要更全面的解決方案。