本文作者:kaifamei

一種SCADA系統、主備系統以及主備機服務器切換方法與流程

更新時間:2025-12-25 19:03:32 0條評論

一種SCADA系統、主備系統以及主備機服務器切換方法與流程


一種scada系統、主備系統以及主備機服務器切換方法
技術領域
1.本技術涉及切換控制技術領域,特別涉及一種scada系統、主備系統以及主備機服務器切換方法。


背景技術:



2.scada(supervisory control and data acquisition,數據采集與監視控制)系統是以計算機為基礎的dcs與電力自動化監控系統。在電力系統中,scada系統在遠動系統中占重要地位,可以對現場的運行設備進行監視和控制,以實現數據采集、設備控制、測量、參數調節以及各類信號報警等各項功能。
3.由于scada系統通常設置于偏遠的站端,運維人員無法及時對其出現的故障進行處理,導致監控數據丟失頻發。為了減少監控數據丟失,目前一般通過主機服務器、備機服務器雙機部署方式來避免單點故障,從而保證scada系統的高可用性。
4.現有主、備機服務器的切換主要通過在主機服務器和備機服務器安裝探針服務,定時輪詢各個組件的健康狀態,當組件(如數據庫服務)故障后,觸發故障遷移,將業務層訪問的虛擬ip指向健康的備機服務器,從而提供不間斷的服務。但是,主機服務器與備機服務器之間需要通過專用網絡線路進行通訊,組網復雜,并且通過探針服務觸發故障遷移邏輯,耦合度高,難以維護。


技術實現要素:



5.基于上述現有技術的不足,本技術提供了一種scada系統、主備系統以及主備機服務器切換方法,以解決現有方案中主機服務器與備機服務器之間需要通過專用網絡進行通訊,組網復雜以及基于探針服務觸發故障遷移,耦合程度高,難以維護的問題。
6.為了實現上述目的,本技術提供了以下技術方案:
7.本技術第一方面提供了一種scada系統的主備系統,所述主備系統中的主機服務器和備機服務器內均設有對應的預設存儲文檔,用于存儲通過對應探針獲取到的各個組件的健康狀態信息以及自身服務器的靜態信息;
8.所述主機服務器與所述備機服務器之間通過預設傳輸協議,實現兩者自身中預設存儲文檔的互相訪問,并基于所述預設存儲文檔觸發所述主備系統的主備機服務器切換邏輯。
9.可選地,在上述的scada系統的主備系統中,所述探針與對應組件之間的安裝方式為插拔式安裝。
10.可選地,在上述的scada系統的主備系統中所述預設存儲文檔為txt文本。
11.可選地,在上述的scada系統的主備系統中所述預設傳輸協議為超文本傳輸協議。
12.本技術第二方面提供了一種scada系統,包括:業務層系統以及如第一方面公開的任一項所述的scada系統的主備系統;其中:
13.所述業務層系統用于獲取所述主備系統的文檔存儲信息,并對所述文檔存儲信息
進行解析,得到所述主備系統的健康狀態;所述文檔存儲信息是所述主備系統中主機服務器和備機服務器的預設存儲文檔中所存儲的信息。
14.可選地,在上述的scada系統中,所述業務層系統用于獲取所述主備系統的文檔存儲信息,具體為:
15.分別向所述主機服務器和所述備機服務器發起文檔獲取請求;其中,所述主機服務器和所述備機服務器在接收到所述文檔獲取請求之后,將自身預設存儲文檔中存儲的信息進行打包發送;
16.接收所述主機服務器和所述備機服務器下發的打包信息,得到所述主備系統的文檔存儲信息。
17.本技術第三方面提供了一種主備機服務器的切換方法,應用于如第一方面公開的任一項所述的scada系統的主備系統,所述方法包括:
18.判斷所述主備系統中當前參與服務提供的服務器是否出現異常;
19.若判斷出所述主備系統中當前參與服務提供的服務器出現異常,則切換至所述主備系統中當前未參與服務提供的服務器繼續提供服務。
20.可選地,在上述的主備機服務器的切換方法中,判斷所述主備系統中當前參與服務提供的服務器是否出現異常,包括:
21.獲取所述主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量;
22.判斷所述組件數量是否大于零;
23.若判斷出所述組件數量大于零,則判定所述主備系統中當前參與服務提供的服務器出現異常;
24.若判斷出所述組件數量不大于零,則判定所述主備系統中當前參與服務提供的服務器是未出現異常。
25.可選地,在上述的主備機服務器的切換方法中,若判斷出所述主備系統中當前參與服務提供的服務器出現異常,則還包括:
26.判斷所述主備系統中當前未參與服務提供的服務器是否出現異常;
27.若判斷出所述主備系統中當前未參與服務提供的服務器未出現異常,則執行切換至所述主備系統中當前未參與服務提供的服務器繼續提供服務的步驟。
28.可選地,在上述的主備機服務器的切換方法中,判斷所述主備系統中當前未參與服務提供的服務器是否出現異常,包括:
29.獲取所述主備系統中當前未參與服務提供的服務器中處于down狀態組件的組件數量;
30.判斷所述組件數量是否大于零;
31.若判斷出所述組件數量大于零,則判定所述主備系統中當前未參與服務提供的服務器出現異常;
32.若判斷出所述組件數量不大于零,則判定所述主備系統中當前未參與服務提供的服務器是未出現異常。
33.可選地,在上述的主備機服務器的切換方法中,若判斷出主備系統中當前未參與服務提供的服務器未出現異常,則還包括:
34.判斷所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位,是否與當前狀態相匹配;
35.若判斷所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位,與當前狀態不匹配,則分別將所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位調整至與所述當前狀態相匹配;
36.其中,所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位與當前狀態相匹配包括:所述當前參與服務提供的服務器的激活標志位為真,所述當前未參與服務提供的服務器的激活標志位為假。
37.本技術提供了一種scada系統的主備系統,該主備系統中的主機服務器和備機服務器內均設有對應的預設存儲文檔,用于存儲通過對應探針獲取到的各個組件的健康狀態信息以及自身的靜態信息;主機服務器與所述備機服務器之間通過預設傳輸協議,實現兩者自身中預設存儲文檔的互相訪問,并基于預設存儲文檔觸發主備系統的主備機服務器切換,也即,本技術可以通過預設傳輸協議實現主機服務器和備機服務器中預設存儲文檔的互訪,無需搭建專用通訊網絡,避免了現有方案中主機服務器與備機服務器之間需要通過專用網絡進行通訊,組網復雜的問題;并且,該系統可直接基于預設存儲文檔觸發主備系統的主備機服務器切換,避免了現有基于探針服務觸發故障遷移,耦合程度高,難以維護的問題。
附圖說明
38.為了更清楚地說明本技術實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本技術的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
39.圖1為本技術實施例提供的一種探針服務模式下的工作模式示意圖;
40.圖2為本技術實施例提供的一種主備機服務器的切換方法的流程圖;
41.圖3為本技術實施例提供的一種當前參與服務提供的服務器的異常判定流程圖;
42.圖4本技術另一實施例提供的一種主備機服務器的切換方法的流程圖;
43.圖5本技術另一實施例提供的當前未參與服務提供的服務器的異常判定流程圖;
44.圖6為本技術另一實施例提供的一種主備機服務器的切換方法的流程圖。
具體實施方式
45.下面將結合本技術實施例中的附圖,對本技術實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本技術一部分實施例,而不是全部的實施例?;诒炯夹g中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本技術保護的范圍。
46.本技術提供了一種scada系統的主備系統,以解決現有方案中主機服務器與備機服務器之間需要通過專用網絡進行通訊,組網復雜以及基于探針服務觸發故障遷移,耦合程度高,難以維護的問題。
47.該scada系統的主備系統主要包括:主機服務器和備機服務器。其中,主機服務器和備機服務器內均設有對應的預設存儲文檔,用于存儲通過對應探針獲取到的各個組件的健康狀態信息以及自身服務器的靜態信息。
48.主機服務器和備機服務器之間通過預設傳輸協議,實現兩者自身中預設存儲文檔的互相訪問,并基于預設存儲文檔觸發主備系統的主備機服務器切換。
49.其中,預設存儲文檔可以是txt文本;當然,并不僅限于此,還可視具體應用環境和用戶需求確定,本技術對預設存儲文檔的具體類型不作限定,只需能夠保存對應探針獲取到的各個組件的健康狀態信息以及自身服務器的靜態信息即可,均在本技術的保護范圍之內。
50.實際應用中,預設傳輸協議可以是超文本傳輸協議,當然,并不僅限于此,還可以是其他現有協議,本技術對其不作具體限定,均在本技術的保護范圍之內。
51.需要說明的是,在安裝主機服務器和備機服務器時,可以在約定目錄下新建一個txt文本文件,以用來保存自身服務器的靜態信息以及各個組件的健康狀態信息。其中,新建的txt文本文件格式具體如下:
52.#/path/scada_status.txt文本文件路徑
53.#當前機器是否激活為運行態
54.active:true
55.#附件信息
56.key1:value1
57.key1:value2
58.…
59.key_n:value_n
60.#安裝時定的靜態角
61.static_role:master
62.#主機監控信息
63.master_ip:xxx.xxx.xxx.xxx
64.master:mysql:up
65.master:kafka:up
66.master:redis:up
67.master:組件名稱:up
68.#預留行可以擴展增加監控項
69.#備機監控信息
70.slave_ip:xxx.xxx.xxx.xxx
71.slave:mysql:up
72.slave:kafka:up
73.slave:redis:up
74.slave:組件名稱:up
75.#預留行可以擴展增加監控項
76.具體的,在txt文本文件下主機服務器和備機服務器中組件各自對應的探針服務,
可以自由擴展或者移除,注冊成服務,設置為開啟自啟動,探針服務將檢測結果實時寫入到txt文本文件對應的行中。如果某個組件正常工作,那么修改對應行的字符串為[角名]:[組件名]:[標記],如master:mysql:up表示主機服務器master上運行的mysql組件當前處于up健康狀態;若某個組件異常,那么可以修改對應行字符串為master:mysql:down,表示主機服務器master上運行的mysql組件當前處于down故障狀態。此處巧妙利用了linux下自帶的sed命令,可以簡單高效的處理字符串。
[0077]
能夠理解的是,每個組件的探針服務將各自健康狀態記錄在預設存儲文本的指定行中,最終形成一個完整的狀態文本文件。該文件記錄了本機服務器中各個組件的健康狀態以及本系統中各個服務器的額外信息,如虛擬ip、安裝時的靜態角,激活標志位等等;當然,并不僅限于此,還可根據業務需要進行擴展。
[0078]
還需要說明的是,探針服務在整個系統中的工作模式如圖1所示。雖然,主機服務器和備機服務器中都擁有記錄自身運行狀態的txt文本文件,但仍然需要獲取對方服務器的運行狀態,為了讓主機服務器和備機服務器能夠實時交互自身的信息,可以搭建一個http服務器。在linux系統中,可以通過curl命令方便的發起http請求,來獲取對方的狀態txt文本文件。為了不依賴第三方插件,盡可能的簡單高效輕量的搭建http服務器,巧妙使用python搭建簡單的http服務器。
[0079]
由于linux系統通常已經自帶了python環境,只需一個簡短命令就可以啟動一個http服務,命令示例可以如下:
[0080]
#啟動http服務
[0081]
python-m simplehttpserver 8000&
[0082]
#獲取狀態文件
[0083]
curl-s http://master:8000/scada_status.txt
[0084]
基于上述能夠理解的是,主機服務器與備機服務器之間通過超文本傳輸協議(http)進行實時數據交互,并且,由于主機服務器與備機服務器之間能夠獲取彼此的狀態信息,因此,可以基于讀取到的txt文本文件中的信息,觸發主備系統的主備機服務器切換邏輯。
[0085]
需要說明的是,主備機服務器切換邏輯的具體過程可參加下述對應實施例,此處不再一一贅述。
[0086]
基于上述原理,本實施例提供的scada系統的主備系統,該主備系統中的主機服務器和備機服務器內均設有對應的預設存儲文檔,用于存儲通過對應探針獲取到的各個組件的健康狀態信息以及自身的靜態信息;主機服務器與備機服務器之間通過預設傳輸協議,實現兩者自身中預設存儲文檔的互相訪問,并基于預設存儲文檔觸發主備系統的主備機服務器切換,也即,本技術可以通過預設傳輸協議實現主機服務器和備機服務器中預設存儲文檔的互訪,組網簡單,無需搭建專用通訊網絡,避免了現有方案中主機服務器與備機服務器之間需要通過專用網絡進行通訊,組網復雜的問題;并且,該系統可直接基于預設存儲文檔觸發主備系統的主備機服務器切換,探針服務可專注于檢測組件的運行狀態,避免了現有通過探針服務觸發故障遷移,耦合程度高,難以維護的問題。
[0087]
并且,通過預設傳輸協議實現主機服務器和備機服務器的數據互訪,僅需要搭建一個http服務器,即可通過curl命令發起http請求,獲取對方的狀態txt文本文件;相較于
傳統使用web服務,如tomcat,實現數據互訪的方法,本技術能夠減少系統復雜性。
[0088]
此外,現有方式一般將主機服務器和備機服務器信息保存于內存中,宕機時容易丟失,而本技術可以在主機服務器和備機服務器內增設預設存儲文檔進行數據存儲,可有效避免宕機引起的數據丟失;并且,存儲于預設存儲文檔的信息,可以利用linux系統自帶的vim工具,或者,其他操作系統自帶工具,即可實現狀態的修改、查詢、增加、刪除,能夠簡單、輕量、高效實現主機服務器和備機服務器的健康狀態信息持久化。
[0089]
實際應用中,現有的主備系統中主機服務器和備機服務器僅能夠通過簡單的ping通方式激活,導致scada系統中業務層系統無法獲取主機服務器和備機服務器上的信息,導致運維困難。
[0090]
對此,本技術另一實施例還提供了一種scada系統,主要包括:業務層系統以及如上述任一實施例所述的scada系統的主備系統。
[0091]
其中,業務層系統用于獲取主備系統的文檔存儲信息,并對文檔存儲信息進行解析,得到主備系統的健康狀態;文檔存儲信息是主備系統中主機服務器和備機服務器的預設存儲文檔中所存儲的信息。
[0092]
實際應用中,業務層系統用于獲取主備系統的文檔存儲信息的具體過程可以為:
[0093]
步驟1:分別向主機服務器和備機服務器發起文檔獲取請求。
[0094]
其中,主機服務器和備機服務器在接收到文檔獲取請求之后,將自身預設存儲文檔中存儲的信息進行打包發送。
[0095]
步驟2:接收主機服務器和備機服務器下發的打包信息,得到主備系統的文檔存儲信息。
[0096]
需要說明的是,文檔獲取請求可以是http請求,當然,并不僅限于此,還可以是其他請求,本技術對其不作具體限定,均在本技術的保護范圍之內。
[0097]
具體的,業務層系統可以通過http協議的api接口,向主備系統發起文檔獲取請求,從而輕松獲取到當前主備系統的文檔存儲信息。
[0098]
還需要說明的是,業務層系統獲取到主備系統的存儲文檔信息之后,可以通過解析文檔信息中每一行內容,通過可視化界面來展示當前主備系統的詳細健康狀態,從而及時處理故障恢復工作。
[0099]
在本實施例提供的scada系統中,主備系統可以通過http服務,將自身中主機服務器和備機服務器內的預設存儲文檔以http接口的方式暴露出去,使業務層系統可以直接通過http協議獲得,從而展示至運維管理界面中,讓主備服務器的切換實現了可視化,同時不僅豐富了業務層系統的運維管理手段,還使scada系統運維更加便捷。
[0100]
可選地,本技術另一實施例還提供了一種主備機服務器的切換方法,可應用于如上述任一實施例提供的scada系統的主備系統,請參見圖2,該方法可以包括:
[0101]
s101、判斷主備系統中當前參與服務提供的服務器是否出現異常。
[0102]
實際應用中,執行步驟s101、判斷主備系統中當前參與服務提供的服務器是否出現異常的具體過程可如圖3所示,主要包括:
[0103]
s201、獲取主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量。
[0104]
其中,可以通過先獲取主備系統中當前參與服務提供的服務器中預設存儲文檔的
存儲信息,然后再基于該存儲信息確定出處于down狀態組件的組件數量。
[0105]
當然,獲取主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量并不僅限于上述,還可通過其他現有方式獲取,本技術對其不作限定,均在本技術的保護范圍之內。
[0106]
s202、判斷組件數量是否大于零。
[0107]
實際應用中,當獲取到主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量之后,可以判斷該組件數量是否大于零,若判斷出組件數量大于零,則可以執行步驟s203。若判斷出組件數量不大于零,則可以執行步驟s204。
[0108]
s203、判定主備系統中當前參與服務提供的服務器出現異常。
[0109]
實際應用中,若判斷出主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量大于零,則說明該服務器中存在組件故障,可以判定備系統中當前參與服務提供的服務器出現異常。
[0110]
s204、判定主備系統中當前參與服務提供的服務器是未出現異常。
[0111]
實際應用中,若判斷出主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量不大于零,則說明該服務器中不存在組件故障,可以判定主備系統中當前參與服務提供的服務器未出現異常。
[0112]
需要說明的是,判斷主備系統中當前參與服務提供的服務器是否出現異常的具體方式并不僅限于上述,還可以通過其他現有方式進行判斷,本技術對判斷方式不作具體限定,均在本技術的保護范圍之內。
[0113]
若判斷出主備系統中當前參與服務提供的服務器出現異常,則可以執行步驟s102。
[0114]
s102、切換至主備系統中當前未參與服務提供的服務器繼續提供服務。
[0115]
假設主備系統中當前參與服務提供的服務器為主機服務器,當前未參與服務提供的服務器為備機服務器,可以在主機服務器出現異常時,切換至備機服務器繼續提供服務。
[0116]
同理,若假設主備系統中當前參與服務提供的服務器為備機服務器,當前未參與服務提供的服務器為主機服務器,可以在備機服務器出現異常時,切換至主機服務器繼續提供服務。
[0117]
需要說明的是,在實際執行步驟s101、判斷主備系統中當前參與服務提供的服務器是否出現異常之前,還可以先判斷當前參與服務提供的服務器是否可以ping通當前未參與服務提供的服務器,若判斷結果為否,則繼續保持主備系統中當前參與服務提供的服務器繼續提供服務,若判斷結果為是,則可以認為主備系統中各個服務器內預設存儲文檔所存儲的信息是可信的,可以執行判斷主備系統中當前參與服務提供的服務器是否出現異常的步驟。
[0118]
基于上述原理,本實施例提供的主備機服務器的切換方法可以在當前參與服務提供的服務器出現異常時及時切換主備系統中當前未參與服務提供的服務器繼續提供服務,保證了scada系統的主備系統能夠提供不間斷服務,減少監控數據丟失;并且,本技術的切換邏輯是基于服務器自身內的預設存儲文檔的存儲信息實現的,使得故障遷移的邏輯與探針服務之間解耦。
[0119]
可選地,本技術提供的另一實施例中,在執行步驟s101、判斷主備系統中當前參與
服務提供的服務器是否出現異常之后,若判斷出主備系統中當前參與服務提供的服務器出現異常,請參見圖4,該主備機服務器的切換方法還可以包括:
[0120]
s301、判斷主備系統中當前未參與服務提供的服務器是否出現異常。
[0121]
實際應用中,判斷主備系統中當前未參與服務提供的服務器是否出現異常的具體過程可以如圖5所示,主要包括:
[0122]
s401、獲取主備系統中當前未參與服務提供的服務器中處于down狀態組件的組件數量。
[0123]
其中,可以通過先獲取主備系統中當前未參與服務提供的服務器中預設存儲文檔的存儲信息,然后再基于該存儲信息確定出處于down狀態組件的組件數量。
[0124]
當然,獲取主備系統中當前未參與服務提供的服務器中處于down狀態組件的組件數量并不僅限于上述,還可通過其他現有方式獲取,本技術對其不作限定,均在本技術的保護范圍之內。
[0125]
s402、判斷組件數量是否大于零。
[0126]
實際應用中,當獲取到主備系統中當前未參與服務提供的服務器中處于down狀態組件的組件數量之后,可以判斷該組件數量是否大于零,若判斷出組件數量大于零,則可以執行步驟s403。若判斷出組件數量不大于零,則可以執行步驟s404。
[0127]
s403、判定主備系統中當前未參與服務提供的服務器出現異常。
[0128]
實際應用中,若判斷出主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量大于零,則說明該服務器中存在組件故障,可以判定備系統中當前未參與服務提供的服務器出現異常。
[0129]
s404、判定主備系統中當前未參與服務提供的服務器未出現異常。
[0130]
需要說明的是,判斷主備系統中當前未參與服務提供的服務器是否出現異常的具體方式并不僅限于上述,還可以通過其他現有方式判斷,本技術對判斷方式不作具體限定,均在本技術的保護范圍之內。
[0131]
若判斷出主備系統中當前未參與服務提供的服務器未出現異常,則可以執行切換至主備系統中當前未參與服務提供的服務器繼續提供服務的步驟,也即步驟s102;若判斷出主備系統中當前未參與服務提供的服務器出現異常,則說明主備系統中的主機服務器和備機服務器均處于異常狀態,則可以將主機服務器和備機服務器均切換至不參與服務提供,以避免主備系統啟動時或宕機后停電后重啟,導致雙主機易出現的情況。
[0132]
在本實施例中,可以先判斷出主備系統中當前未參與服務提供的服務器未出現異常之后,再切換至主備系統中當前未參與服務提供的服務器繼續提供服務的方式,能夠預先保證將要切換至的服務器狀態正常,避免無效切換。
[0133]
可選地,在本技術提供的另一實施例中,在執行步驟s301、判斷主備系統中當前未參與服務提供的服務器是否出現異常之后,若判斷出主備系統中當前未參與服務提供的服務器未出現異常,請參見圖6,該主備機服務器的切換方法還可以包括:
[0134]
s501、判斷當前參與服務提供的服務器的激活標志位和當前未參與服務提供的服務器的激活標志位,是否與當前狀態相匹配。
[0135]
其中,當前參與服務提供的服務器的激活標志位和當前未參與服務提供的服務器的激活標志位,與當前狀態相匹配包括:當前參與服務提供的服務器的激活標志位為真,當
前未參與服務提供的服務器的激活標志位為假。
[0136]
需要說明的是,激活標志位用于標識服務器是否處于運行狀態。正常情況下,參與服務提供的服務器的標志位應表示處于運行狀態,未參與服務提供的服務器的標志位應表示處于非運行狀態。具體的,若服務器處于運行狀態,其激活標志位可以表示為“真”;若服務器處于未運行狀態,其激活標志位可以表示為“假”。
[0137]
還需要說明的是,當前參與服務提供的服務器的激活標志位和當前未參與服務提供的服務器的激活標志位,與當前狀態不相匹配的情形可以如下:
[0138]
情形1:當前參與服務提供的服務器的激活標志位和當前未參與服務提供的服務器的激活標志位均為真。
[0139]
情形2:當前參與服務提供的服務器的激活標志位和當前未參與服務提供的服務器的激活標志位均為假。
[0140]
情形3:當前參與服務提供的服務器的激活標志位為假、當前未參與服務提供的服務器的激活標志位為真。
[0141]
若判斷當前參與服務提供的服務器的激活標志位和當前未參與服務提供的服務器的激活標志位,與當前狀態不匹配,則可以執行步驟s502。
[0142]
s502、分別將當前參與服務提供的服務器的激活標志位和當前未參與服務提供的服務器的激活標志位調整至與當前狀態相匹配。
[0143]
實際應用中,可以在確定出主備系統中的主機服務器和備機服務均未出現異常之后,通過交互彼此的激活標志位,判斷激活標志位與自身狀態是否對應,以在激活標志位與自身狀態不匹配時,及時對自身激活標志位進行更改,使得激活標志位與自身狀態相匹配,能夠在一定程度上避免主備系統中出現雙主機的情況,提高了主備機服務器的切換方法的穩定性。
[0144]
基于上述實施例提供的主備機服務器的切換方法,在該主備機服務器的切換方法應用于linux系統時,則可以通過linux系統中的switch服務實現。為了方便描述,假設scada系統的主備系統在安裝時,約定的主機服務器為“master”、備機服務器為“slave”,在執行一次主備機服務器的切換方法過程中,被選舉成運行服務器為“切換active”,被選舉成為未運行服務器為“切換inactive”,若當前對象服務器角為master,則該方法具體實施步驟如下:
[0145]
step1:首先看是否能夠ping通對方,如果不通,切換active。
[0146]
step2:在ping通的前提下可認為txt文本中的信息是可信的,通過sed命令統計txt文本中,主機服務器和備機服務器處于down狀態的組件數量n,如果n》0說明對應的服務器異常,否則說明是健康的。
[0147]
step3:如果master健康slave異常,那么master切換active。
[0148]
step4:如果master異常slave健康,那么master切換inactive。
[0149]
step5:如果主備都健康,需要交互彼此的激活標志位,如果雙方active標志位是一true,一false,一切不變,屬于正常情況,如果都是true就出現了雙主機現象,按照約定,主機狀態不變,保持為active;如果都是false,那么master按照約定切換為active。
[0150]
step6:如果主備都異常,一般發生在機器剛啟動的時候,或者宕機后停電后重啟,此時立即切為inactive,防止啟動穩定后出現雙主機情況。
[0151]
若當前對象服務器角為slave,則該方法具體實施步驟如下:
[0152]
step1:首先看是否能夠ping通對方,如果不通,切換active。
[0153]
step2:在ping通的前提下可認為txt文本中信息是可信的,通過sed命令統計txt文本中,主機服務器和備機服務器處于down狀態的組件數量n,如果n》0說明對應的服務器異常,否則說明是健康的。
[0154]
step3:如果master健康slave異常,那么slave切換inactive。
[0155]
step4:如果master異常slave健康,slave切換active。
[0156]
step5:如果主備都健康,需要交互彼此的激活標志位,如果雙方active標志位是一true,一false,一切不變,屬于正常情況,如果都是true就出現了雙主機現象,按照約定,讓備機切換成inactive;如果都是false,那么當前slave機器保持inactive狀態。
[0157]
step6:如果主備都異常,一般發生在機器剛啟動的時候,或者宕機后停電后重啟,此時立即切為inactive,防止啟動穩定后出現雙主機情況。
[0158]
能夠理解的是,可以通過約定大于配置的方式,也即優先以安裝時指定靜態角進行服務提供,在異常出現后再按照約定進行服務提供,從而解決了通訊中斷后容易出現雙主機的現象。
[0159]
需要說明的是,上述實例僅僅是本發明提供的一個具體應用實例,但實際應用中的應用實例并不僅限于上述,還可以根據應用環境和用戶需求進行變形,只要實現方式與本技術提供的原理、思路相同,均在本技術的保護范圍內。
[0160]
專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本技術的范圍。
[0161]
在本技術中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個
……”
限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0162]
對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本技術。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本技術的精神或范圍的情況下,在其它實施例中實現。因此,本技術將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。

技術特征:


1.一種scada系統的主備系統,其特征在于,所述主備系統中的主機服務器和備機服務器內均設有對應的預設存儲文檔,用于存儲通過對應探針獲取到的各個組件的健康狀態信息以及自身服務器的靜態信息;所述主機服務器與所述備機服務器之間通過預設傳輸協議,實現兩者自身中預設存儲文檔的互相訪問,并基于所述預設存儲文檔觸發所述主備系統的主備機服務器切換邏輯。2.根據權利要求1所述的scada系統的主備系統,其特征在于,所述探針與對應組件之間的安裝方式為插拔式安裝。3.根據權利要求1所述的scada系統的主備系統,其特征在于,所述預設存儲文檔為txt文本。4.根據權利要求1所述的scada系統的主備系統,其特征在于,所述預設傳輸協議為超文本傳輸協議。5.一種scada系統,其特征在于,包括:業務層系統以及如權利要求1-4任一項所述的scada系統的主備系統;其中:所述業務層系統用于獲取所述主備系統的文檔存儲信息,并對所述文檔存儲信息進行解析,得到所述主備系統的健康狀態;所述文檔存儲信息是所述主備系統中主機服務器和備機服務器的預設存儲文檔中所存儲的信息。6.根據權利要求5所述的scada系統,其特征在于,所述業務層系統用于獲取所述主備系統的文檔存儲信息,具體為:分別向所述主機服務器和所述備機服務器發起文檔獲取請求;其中,所述主機服務器和所述備機服務器在接收到所述文檔獲取請求之后,將自身預設存儲文檔中存儲的信息進行打包發送;接收所述主機服務器和所述備機服務器下發的打包信息,得到所述主備系統的文檔存儲信息。7.一種主備機服務器的切換方法,其特征在于,應用于如權利要求1-4任一項所述的scada系統的主備系統,所述方法包括:判斷所述主備系統中當前參與服務提供的服務器是否出現異常;若判斷出所述主備系統中當前參與服務提供的服務器出現異常,則切換至所述主備系統中當前未參與服務提供的服務器繼續提供服務。8.根據權利要求7所述的主備機服務器的切換方法,其特征在于,判斷所述主備系統中當前參與服務提供的服務器是否出現異常,包括:獲取所述主備系統中當前參與服務提供的服務器中處于down狀態組件的組件數量;判斷所述組件數量是否大于零;若判斷出所述組件數量大于零,則判定所述主備系統中當前參與服務提供的服務器出現異常;若判斷出所述組件數量不大于零,則判定所述主備系統中當前參與服務提供的服務器是未出現異常。9.根據權利要求7所述的主備機服務器的切換方法,其特征在于,若判斷出所述主備系統中當前參與服務提供的服務器出現異常,則還包括:判斷所述主備系統中當前未參與服務提供的服務器是否出現異常;
若判斷出所述主備系統中當前未參與服務提供的服務器未出現異常,則執行切換至所述主備系統中當前未參與服務提供的服務器繼續提供服務的步驟。10.根據權利要求9所述的主備機服務器的切換方法,其特征在于,判斷所述主備系統中當前未參與服務提供的服務器是否出現異常,包括:獲取所述主備系統中當前未參與服務提供的服務器中處于down狀態組件的組件數量;判斷所述組件數量是否大于零;若判斷出所述組件數量大于零,則判定所述主備系統中當前未參與服務提供的服務器出現異常;若判斷出所述組件數量不大于零,則判定所述主備系統中當前未參與服務提供的服務器是未出現異常。11.根據權利要求9所述的主備機服務器的切換方法,其特征在于,若判斷出主備系統中當前未參與服務提供的服務器未出現異常,則還包括:判斷所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位,是否與當前狀態相匹配;若判斷所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位,與當前狀態不匹配,則分別將所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位調整至與所述當前狀態相匹配;其中,所述當前參與服務提供的服務器的激活標志位和所述當前未參與服務提供的服務器的激活標志位與當前狀態相匹配包括:所述當前參與服務提供的服務器的激活標志位為真,所述當前未參與服務提供的服務器的激活標志位為假。

技術總結


本申請公開了一種SCADA系統、主備系統以及主備機服務器切換方法,該主備系統中的主機服務器和備機服務器內均設有對應的預設存儲文檔,用于存儲通過對應探針獲取到的各個組件的健康狀態信息以及自身的靜態信息;主機服務器與備機服務器之間通過預設傳輸協議,實現兩者自身中預設存儲文檔的互相訪問,并基于預設存儲文檔觸發主備系統的主備機服務器切換,解決了現有方案中主機服務器與備機服務器之間需要通過專用網絡進行通訊,組網復雜以及基于探針服務觸發故障遷移,耦合程度高,難以維護的問題。的問題。的問題。


技術研發人員:

唐積益

受保護的技術使用者:

陽光電源(南京)有限公司

技術研發日:

2022.10.18

技術公布日:

2023/1/19


文章投稿或轉載聲明

本文鏈接:http://m.newhan.cn/zhuanli/patent-1-87634-0.html

來源:專利查詢檢索下載-實用文體寫作網版權所有,轉載請保留出處。本站文章發布于 2023-01-29 19:01:41

發表評論

驗證碼:
用戶名: 密碼: 匿名發表
評論列表 (有 條評論
2人圍觀
參與討論