凌旺
(中國(guó)船舶重工集團(tuán)公司第七二三研究所 江蘇省揚(yáng)州市 225011)
隨著電力自動(dòng)化與工業(yè)控制技術(shù)的持續(xù)發(fā)展,網(wǎng)絡(luò)安全受到了各方的重點(diǎn)關(guān)注。傳統(tǒng)數(shù)據(jù)庫(kù)在處理日志同步問(wèn)題時(shí),盡管能夠保證數(shù)據(jù)的完整性、通用性,但在處理控制系統(tǒng)中的單向隔離問(wèn)題時(shí),很難實(shí)現(xiàn)雙向TCP 鏈路的建立,無(wú)法有效同步數(shù)據(jù)。基于此,對(duì)于實(shí)時(shí)數(shù)據(jù)庫(kù)跨安全區(qū)同步設(shè)計(jì)和實(shí)現(xiàn)的探究有著重要意義。
基于數(shù)據(jù)代理架構(gòu)的背景下,實(shí)現(xiàn)數(shù)據(jù)化安全區(qū)同步,各區(qū)的數(shù)據(jù)代理分別為inproxy 以及out proxy。數(shù)據(jù)庫(kù)的功能與基本組件有以下特點(diǎn):
(1)支持日志的接收、發(fā)送,在通信正常的情況下,能夠?qū)崿F(xiàn)數(shù)據(jù)同步;通過(guò)in proxy 對(duì)實(shí)時(shí)數(shù)據(jù)庫(kù)中正在執(zhí)行的日志進(jìn)行獲取,借助隔離鏈路將獲取到的執(zhí)行日志信息發(fā)送給out proxy,由out proxy 對(duì)執(zhí)行日志的相關(guān)信息進(jìn)行接收;在鏡像實(shí)時(shí)數(shù)據(jù)庫(kù)中執(zhí)行接收到的日記信息。
(2)緩存接收發(fā)送的日志信息,由于無(wú)法同步確認(rèn)實(shí)時(shí)接收發(fā)送的信息,需要將傳送過(guò)來(lái)的日志信息儲(chǔ)存;在緩存過(guò)程中,還要解決短時(shí)間內(nèi)網(wǎng)絡(luò)中斷的日志信息緩存問(wèn)題;若實(shí)時(shí)數(shù)據(jù)庫(kù)的in proxy 無(wú)法在短時(shí)間內(nèi)將執(zhí)行日志信息發(fā)送出去,需要首先將執(zhí)行日志信息進(jìn)行緩存,等待網(wǎng)絡(luò)恢復(fù),直接將緩存的執(zhí)行日志信息傳遞給out proxy;與此同時(shí),緩存空間有一定局限,若緩存的執(zhí)行日志信息超出緩存空間大小,則不對(duì)執(zhí)行日志信息進(jìn)行緩存;
(3)接收發(fā)送數(shù)據(jù)斷面,該項(xiàng)功能主要負(fù)責(zé)應(yīng)對(duì)在網(wǎng)絡(luò)中斷一定時(shí)間后同步相關(guān)數(shù)據(jù)信息的需求,該項(xiàng)功能不再依靠緩存功能對(duì)執(zhí)行日志信息進(jìn)行緩存,并逐步將數(shù)據(jù)恢復(fù),而是直接對(duì)全數(shù)據(jù)斷面進(jìn)行同步。
(4)狀態(tài)監(jiān)測(cè),該項(xiàng)功能主要是指監(jiān)測(cè)日志的執(zhí)行狀況,監(jiān)測(cè)實(shí)時(shí)數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)狀態(tài),由于實(shí)時(shí)數(shù)據(jù)庫(kù)不具備TCP 雙向鏈路,需要借助反向隔離發(fā)送狀態(tài)報(bào)告文件,實(shí)現(xiàn)實(shí)時(shí)狀態(tài)監(jiān)測(cè)功能。
(5)管理監(jiān)視,若實(shí)時(shí)數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)出現(xiàn)中斷,數(shù)據(jù)信息的緩存通道堵塞,需要報(bào)告同步的各類問(wèn)題,并及時(shí)通報(bào)運(yùn)營(yíng)維護(hù)人員開(kāi)展針對(duì)性的故障處理工作。
實(shí)時(shí)數(shù)據(jù)庫(kù)擁有正反雙向隔離技術(shù),在實(shí)際的應(yīng)用過(guò)程中,能夠產(chǎn)生較強(qiáng)的隔離效果,其具體的應(yīng)用結(jié)構(gòu)包括實(shí)時(shí)數(shù)據(jù)庫(kù)、二區(qū)數(shù)據(jù)代理、三區(qū)數(shù)據(jù)代理、實(shí)時(shí)數(shù)據(jù)庫(kù)鏡像,由二區(qū)數(shù)據(jù)代理到三區(qū)數(shù)據(jù)代理存在正向隔離,由三區(qū)數(shù)據(jù)代理到二區(qū)數(shù)據(jù)代理存在反向隔離,實(shí)時(shí)數(shù)據(jù)庫(kù)與二區(qū)數(shù)據(jù)代理共同構(gòu)成了安全二區(qū)實(shí)時(shí)數(shù)據(jù)庫(kù)鏡像,與三區(qū)數(shù)據(jù)代理共同構(gòu)成了安全三區(qū)。二區(qū)數(shù)據(jù)代理包含日志發(fā)送、日志發(fā)送緩存、數(shù)據(jù)斷面發(fā)送、狀態(tài)監(jiān)測(cè)、監(jiān)視預(yù)警;三區(qū)數(shù)據(jù)代理包括日志接收、日志接收緩存數(shù)據(jù)、斷面接收狀態(tài)報(bào)告、監(jiān)視預(yù)警。此外,實(shí)時(shí)數(shù)據(jù)庫(kù)還存在單正向隔離、雙向連接防火墻、單向連接防火墻等多種方案。
雙向連接防火墻模式的應(yīng)用場(chǎng)景為,不同的安全區(qū)子系統(tǒng)代理,通訊方式為將in proxy 到out proxy 通過(guò)TCP 鏈路進(jìn)行建立,實(shí)現(xiàn)雙向通信;數(shù)據(jù)的同步特點(diǎn)為,由于能夠及時(shí)收回確認(rèn)報(bào)文,可實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步。單向連接防火墻的應(yīng)用場(chǎng)景為,由數(shù)據(jù)代理一區(qū)向數(shù)據(jù)代理二區(qū)進(jìn)行單向連接,僅存在于數(shù)據(jù)代理一區(qū)與數(shù)據(jù)代理二區(qū)之間,代理通信方式為由in proxy 借助TCP 鏈路主動(dòng)向out proxy 進(jìn)行建立,實(shí)現(xiàn)雙向通信;數(shù)據(jù)的同步特點(diǎn)為,能夠及時(shí)確認(rèn)報(bào)文從而實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步。正反雙向隔離裝置的應(yīng)用場(chǎng)景為,數(shù)據(jù)代理一區(qū)或數(shù)據(jù)代理二區(qū)與數(shù)據(jù)代理三區(qū)之間,其通信代理方式為借助正向隔離將in proxy 與out proxy 建立單向TCP 鏈路,實(shí)現(xiàn)請(qǐng)求序列化;數(shù)據(jù)同步特點(diǎn)為,不能夠及時(shí)追回確認(rèn)報(bào)文,只能以秒為單位,將報(bào)文進(jìn)行批量返回確認(rèn)。正向隔離裝置的應(yīng)用場(chǎng)景為,不具備較高數(shù)據(jù)同步要求的數(shù)據(jù)代理二區(qū)與數(shù)據(jù)代理三區(qū);代理通信方式為,借助正向隔離在in proxy 與out proxy 之間建立單向TCP 鏈路;數(shù)據(jù)同步特點(diǎn)為,不能返回確認(rèn)報(bào)文,無(wú)法實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步,只能定期同步數(shù)據(jù)全斷面。
對(duì)于雙向通信方式需要確認(rèn)各項(xiàng)同步操作,若確認(rèn)失敗,需要重新執(zhí)行相應(yīng)操作;對(duì)于非對(duì)稱的確認(rèn)和發(fā)送的通信方式,只能是非實(shí)時(shí)的,確認(rèn)各批量返回的消息,確保各項(xiàng)操作均依照序號(hào)進(jìn)行,outserver 依照借助反向隔離裝置,對(duì)各序號(hào)操作進(jìn)行定期確認(rèn);in server 在收到確認(rèn)信息前,緩存未確認(rèn)但已發(fā)送的各項(xiàng)信息;在收到確認(rèn)后,若存在無(wú)法有效執(zhí)行的操作,需要判斷是否存在delete、insert 操作,若存在delete、insert 操作,由于無(wú)法二次執(zhí)行delete、insert 操作,需要同步數(shù)據(jù)全斷面;若不存在delete、insert操作,存在update 操作,則需要重新發(fā)送錯(cuò)誤操作后的全部操作,由out server 重新執(zhí)行;若重新發(fā)送后再次出現(xiàn)執(zhí)行錯(cuò)誤,需要同步數(shù)據(jù)全斷面。
實(shí)時(shí)數(shù)據(jù)庫(kù)具有下面幾種特點(diǎn):
(1)數(shù)據(jù)庫(kù)的緩存空間有限,數(shù)據(jù)信息量過(guò)大,若不限制緩存空間會(huì)撐爆實(shí)時(shí)數(shù)據(jù)庫(kù);
(2)時(shí)效性較強(qiáng),若網(wǎng)絡(luò)出現(xiàn)長(zhǎng)時(shí)間中斷,則相關(guān)數(shù)據(jù)信息很可能被覆蓋;
(3)相比于歷史數(shù)據(jù)恢復(fù),實(shí)時(shí)數(shù)據(jù)恢復(fù)具有更高的優(yōu)先等級(jí),因此需要盡快實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)恢復(fù),若單純依靠觸發(fā)機(jī)制與簡(jiǎn)單的緩存設(shè)備,很難有效實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)庫(kù)的快速恢復(fù),因此,在處理故障恢復(fù)時(shí),需要從長(zhǎng)時(shí)故障與短時(shí)故障兩方面著手,長(zhǎng)時(shí)故障與短時(shí)故障的主要區(qū)別在于網(wǎng)絡(luò)中斷時(shí)間,通過(guò)設(shè)置相應(yīng)的中斷時(shí)間,可以有效區(qū)分故障類型,短時(shí)故障借助重發(fā)機(jī)制,應(yīng)用緩存能夠得到有效解決,長(zhǎng)時(shí)故障需要依靠緩存機(jī)制與全斷面進(jìn)行解決。斷面恢復(fù)是指復(fù)制各測(cè)試點(diǎn)的當(dāng)前值,制成系統(tǒng)性文件,并覆蓋對(duì)端的各測(cè)試點(diǎn)的數(shù)值;在對(duì)短時(shí)故障進(jìn)行恢復(fù)作業(yè)時(shí),存在較大的操作代價(jià),對(duì)長(zhǎng)時(shí)故障進(jìn)行恢復(fù)作業(yè)時(shí),所產(chǎn)生的斷面數(shù)據(jù)量相對(duì)較小[1]。
在出現(xiàn)短時(shí)故障時(shí),短時(shí)故障的恢復(fù)機(jī)制未緩存數(shù)據(jù)庫(kù)的實(shí)時(shí)日志操作,設(shè)置FIFO 隊(duì)列;在開(kāi)展故障恢復(fù)作業(yè)時(shí),會(huì)繼續(xù)緩存當(dāng)前操作,依照順序發(fā)送線程緩存操作;在出現(xiàn)長(zhǎng)時(shí)故障時(shí),長(zhǎng)時(shí)故障恢復(fù)機(jī)制不再緩存數(shù)據(jù)庫(kù)日志,防止數(shù)據(jù)庫(kù)的緩存被海量數(shù)據(jù)撐爆;在對(duì)長(zhǎng)時(shí)故障進(jìn)行恢復(fù)作業(yè)時(shí),會(huì)獲取全數(shù)據(jù)斷面,為避免出現(xiàn)同步數(shù)據(jù)落后于當(dāng)前數(shù)據(jù)的問(wèn)題需要,在開(kāi)始恢復(fù)作業(yè)時(shí),應(yīng)迅速進(jìn)行緩存操作;由于不同帶寬存在不同限制,在對(duì)全斷面數(shù)據(jù)進(jìn)行發(fā)送時(shí),可首先將數(shù)據(jù)進(jìn)行壓縮,再進(jìn)行傳輸,并緩存全斷面數(shù)據(jù)的同步操作。
為充分解決實(shí)時(shí)數(shù)據(jù)庫(kù)關(guān)鍵業(yè)務(wù)系統(tǒng)的單點(diǎn)故障問(wèn)題,需要首先找到故障發(fā)生位置,故障有可能出現(xiàn)在服務(wù)與通信裝置上;因此,機(jī)制在處理單點(diǎn)故障時(shí),需要切換通信鏈路與服務(wù);為盡快找到故障發(fā)生點(diǎn)并切換鏈路,技術(shù)人員需要在實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)的in proxy與out proxy 雙機(jī)集群之間,借助通信設(shè)備建立通信鏈路,并將檢測(cè)鏈路安裝在out proxy 集群內(nèi)部與in proxy 集群內(nèi)部,借助鏈條反應(yīng)對(duì)各條鏈路上的鏈路狀態(tài)、對(duì)端服務(wù)器進(jìn)行探測(cè)。在日常工作過(guò)程中,需要確保兩臺(tái)服務(wù)器分別處于工作狀態(tài)與備用狀態(tài),保證兩臺(tái)服務(wù)器能夠?qū)﹃?duì)列狀態(tài)進(jìn)行同步緩存,使得備用服務(wù)器在工作服務(wù)器出現(xiàn)故障時(shí),能夠迅速?gòu)闹袛嗖僮魈庨_(kāi)展故障處理工作[2]。
對(duì)于雙向通信模式下的防火墻,out proxy 和in proxy 借助定時(shí)心跳,將通信鏈路狀態(tài)與自身狀態(tài)向?qū)Χ诉M(jìn)行定期發(fā)送;與此同時(shí),依靠out proxy 及時(shí)返回各次數(shù)據(jù)操作結(jié)果,切換故障出現(xiàn)時(shí)的服務(wù)節(jié)點(diǎn)與通信鏈路。對(duì)于單向隔離裝置要做到以下幾點(diǎn):
(1)分別借助正向隔離裝置,由in proxy 向out proxy 發(fā)送心跳,由out proxy 緩存自身狀態(tài),轉(zhuǎn)換為文件,并借助反向隔離裝置,由out proxy 將文件傳遞給in proxy。
(2)實(shí)時(shí)數(shù)據(jù)庫(kù)的單向隔離裝置存在單向隔離屬性,很難及時(shí)發(fā)現(xiàn)通信鏈路與對(duì)端服務(wù)的異常狀況;基于此,發(fā)送操作日志后,應(yīng)緩存日志數(shù)據(jù)信息;在對(duì)端進(jìn)行收到確認(rèn)后,方可刪除相應(yīng)的日志信息。
(3)備用機(jī)不會(huì)發(fā)送in proxy 集群的操作日志,只會(huì)對(duì)值班服務(wù)器的狀態(tài)進(jìn)行檢測(cè);若值班服務(wù)器出現(xiàn)異常,會(huì)發(fā)送未確認(rèn)的緩存隊(duì)列,不存在重復(fù)發(fā)送問(wèn)題;若不涉及其他操作,只開(kāi)展更新操作,in proxy 可以繼續(xù)發(fā)送文件;若涉及到增加操作和刪除操作,需要同步發(fā)斷面操作。
(4)在切換通信鏈路時(shí),需要切換隔離裝置值班機(jī),若出現(xiàn)反復(fù)切換通信鏈路或緩存文件堆積的情況,需要由人工介入對(duì)通信鏈路與緩存文件進(jìn)行檢查,找到具體的故障原因。
跨安全區(qū)實(shí)時(shí)數(shù)據(jù)同步軟件,主要被應(yīng)用于以下系統(tǒng)中:
(1)電力監(jiān)控系統(tǒng)、電力調(diào)度系統(tǒng),電力監(jiān)控系統(tǒng)與電力調(diào)度系統(tǒng)主要依照電力安全規(guī)范,使用單向網(wǎng)閘將各安全區(qū)進(jìn)行隔離,同步軟件在該系統(tǒng)中的應(yīng)用已有數(shù)千個(gè)案例;
(2)新能源多級(jí)監(jiān)控系統(tǒng),現(xiàn)階段,國(guó)內(nèi)各地區(qū)正大力建設(shè)新能源電站,新能源電站具有分布廣的特點(diǎn),這在一定程度上降低了其通信可靠性,但由于新能源電站對(duì)于安全的要求較高,而電站只具備單一的監(jiān)視功能,由上級(jí)集控主站負(fù)責(zé)決策分析,因此,需要依靠跨安全區(qū)實(shí)時(shí)數(shù)據(jù)同步軟件,將電站的相關(guān)文件信息傳遞到集控主站;
(3)地鐵監(jiān)控系統(tǒng),該套系統(tǒng)的特點(diǎn)在于在廣域網(wǎng)條件下,地鐵監(jiān)控系統(tǒng)具有較高的通信故障概率;若系統(tǒng)運(yùn)行正常,則由上級(jí)系統(tǒng)對(duì)其進(jìn)行監(jiān)控;當(dāng)系統(tǒng)出現(xiàn)異常運(yùn)行狀況,則需要下級(jí)系統(tǒng)能夠?qū)崿F(xiàn)綜合監(jiān)控,這需要監(jiān)控系統(tǒng)中的數(shù)據(jù)具有異?;謴?fù)機(jī)制,能夠?qū)崿F(xiàn)多地點(diǎn)的獨(dú)立工作;若依靠傳統(tǒng)的復(fù)制方式,很難有效解決長(zhǎng)時(shí)間故障問(wèn)題,傳統(tǒng)的日志復(fù)制方式會(huì)使得本地監(jiān)視功能出現(xiàn)阻塞,而跨安全區(qū)實(shí)時(shí)數(shù)據(jù)不同步軟件,能夠大幅降低故障,恢復(fù)作業(yè)對(duì)原有的監(jiān)控系統(tǒng)的負(fù)面影響,有著較好的應(yīng)用效果[3]。
綜上所述,跨安全區(qū)實(shí)時(shí)數(shù)據(jù)庫(kù)同步軟件在有效同步數(shù)據(jù)日志庫(kù)的前提下,更好地滿足了場(chǎng)景應(yīng)用需求,解決了雙向通信問(wèn)題,尤其是,解決了其中的狀態(tài)檢測(cè)異步確認(rèn)問(wèn)題;使用不同的恢復(fù)機(jī)制應(yīng)對(duì)短時(shí)故障與長(zhǎng)時(shí)故障,增加了系統(tǒng)的可靠性。