決的技術(shù)問題是:針對(duì)現(xiàn)有技術(shù)中的高可用集群系統(tǒng),用戶只能通過主節(jié)點(diǎn)查閱高可用集群類告警信息,而無法通過從節(jié)點(diǎn)查閱該類告警信息,靈活性差,可操作差;另外,在主節(jié)點(diǎn)或者主節(jié)點(diǎn)的數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),用戶則徹底無法查閱高可用集群系統(tǒng)的高可用集群類告警信息,從而不能及時(shí)依據(jù)高可用集群類告警信息采取相應(yīng)的應(yīng)對(duì)措施,有可能造成重大損失。為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種高可用集群系統(tǒng)。
[0054]如圖1所示,是本發(fā)明實(shí)施例高可用集群系統(tǒng)的結(jié)構(gòu)示意圖。本實(shí)施例的高可用集群系統(tǒng)包括主節(jié)點(diǎn)(也稱為主控節(jié)點(diǎn))和至少一個(gè)從節(jié)點(diǎn),主節(jié)點(diǎn)與每個(gè)從節(jié)點(diǎn)連接。其中,主節(jié)點(diǎn)包括第一主數(shù)據(jù)庫(kù)和第一輔助數(shù)據(jù)庫(kù),每個(gè)從節(jié)點(diǎn)分別包括一個(gè)第二輔助數(shù)據(jù)庫(kù)。第一主數(shù)據(jù)庫(kù)、第一輔助數(shù)據(jù)庫(kù)和各個(gè)第二輔助數(shù)據(jù)庫(kù)都用于存儲(chǔ)各類告警信息。
[0055]具體地,第一主數(shù)據(jù)庫(kù)采用Postgresql數(shù)據(jù)庫(kù),第一輔助數(shù)據(jù)庫(kù)及第二輔助數(shù)據(jù)庫(kù)均選用輕量級(jí)的SQLite數(shù)據(jù)庫(kù)。高可用集群系統(tǒng)的各個(gè)節(jié)點(diǎn)(主節(jié)點(diǎn)或者從節(jié)點(diǎn))通過web接口將告警信息發(fā)送至主節(jié)點(diǎn)的第一主數(shù)據(jù)庫(kù)和第一輔助數(shù)據(jù)庫(kù),同時(shí)開啟輔助數(shù)據(jù)庫(kù)存儲(chǔ)線程,并利用SQLite DBSync實(shí)現(xiàn)各個(gè)第二輔助數(shù)據(jù)庫(kù)之間的數(shù)據(jù)同步分發(fā)。此夕卜,高可用集群內(nèi)的主節(jié)點(diǎn)和從節(jié)點(diǎn)均提供相關(guān)web服務(wù),用戶可登錄各節(jié)點(diǎn)的web頁面(即安裝在各節(jié)點(diǎn)上的集群軟件的頁面),對(duì)集群進(jìn)行有效管理。
[0056]可以看出,應(yīng)用本實(shí)施例的高可用集群系統(tǒng),告警信息同時(shí)存儲(chǔ)在第一主數(shù)據(jù)庫(kù)、第一輔助數(shù)據(jù)庫(kù)和各個(gè)第二輔助數(shù)據(jù)庫(kù)中。在未發(fā)生數(shù)據(jù)庫(kù)連接故障的情況下,上述各個(gè)數(shù)據(jù)庫(kù)中存儲(chǔ)的告警信息是一致的。因此,無論用戶當(dāng)前訪問(登錄)的是主節(jié)點(diǎn)還是任意一個(gè)從節(jié)點(diǎn),都可以從當(dāng)前訪問的節(jié)點(diǎn)的數(shù)據(jù)庫(kù)中獲取告警信息。即便是在主節(jié)點(diǎn)或者主節(jié)點(diǎn)的數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),用戶也可以從任意一個(gè)從節(jié)點(diǎn)的第二輔助數(shù)據(jù)庫(kù)中獲取到告警信息,從而能夠及時(shí)依據(jù)獲取的告警信息采取相應(yīng)的應(yīng)對(duì)措施,保證了高可用集群系統(tǒng)的正常運(yùn)行,有效避免了由于未及時(shí)采取采取應(yīng)對(duì)措施而造成的損失,大大提高了高可用集群系統(tǒng)的系統(tǒng)性能。
[0057]相應(yīng)地,本發(fā)明實(shí)施例還提供了一種基于上述高可用集群系統(tǒng)的告警方法。
[0058]如圖2所示,是本發(fā)明實(shí)施例基于高可用集群系統(tǒng)的告警方法的流程示意圖。本實(shí)施例所述的告警方法,主要包括以下步驟:
[0059]步驟101:監(jiān)測(cè)高可用集群系統(tǒng)的運(yùn)行狀態(tài)。
[0060]具體地,監(jiān)測(cè)高可用集群系統(tǒng)的運(yùn)行狀態(tài)具體涉及監(jiān)測(cè)高可用集群系統(tǒng)是否出現(xiàn)高可用集群類故障或者普通監(jiān)控類故障。這里,高可用集群類故障包括心跳類故障、資源類故障和節(jié)點(diǎn)類故障。普通監(jiān)控類故障包括操作系統(tǒng)負(fù)載類故障和數(shù)據(jù)庫(kù)類故障。在具體實(shí)施例過程中,針對(duì)不同種類的故障,需要編寫相應(yīng)的監(jiān)測(cè)腳本,例如心跳監(jiān)測(cè)腳本、資源監(jiān)測(cè)腳本、節(jié)點(diǎn)監(jiān)測(cè)腳本、操作系統(tǒng)負(fù)載監(jiān)測(cè)腳本和數(shù)據(jù)庫(kù)監(jiān)測(cè)腳本。
[0061]步驟102:監(jiān)測(cè)到高可用集群系統(tǒng)出現(xiàn)高可用集群類故障時(shí),生成高可用集群類告警信息。
[0062]具體地,針對(duì)心跳監(jiān)測(cè)告警部分,首先利用corosync-cfgtool-s命令獲取故障心跳信息,并與歷史數(shù)據(jù)相比較,如果故障心跳與歷史數(shù)據(jù)不同,立即組裝其相應(yīng)的告警信息(即生成心跳類告警信息,其包括告警時(shí)間、告警類別、告警級(jí)別、告警詳情等),并把該心跳類告警信息輸出到高可用集群內(nèi)所有節(jié)點(diǎn)的本地告警信息日志文件中。
[0063]針對(duì)資源監(jiān)測(cè)告警部分,編寫Crm_m0n_alarm.sh腳本,啟動(dòng)高可用集群服務(wù)后,后臺(tái)執(zhí)行crm_mon-d-E/usr/bin/c;rm_mon_ala;rm.sh,利用crm_mon獲取的高可用集群運(yùn)行資源狀態(tài),并將資源運(yùn)行狀態(tài)參數(shù)傳遞給crm_mon_alarm.sh腳本,該腳本負(fù)責(zé)分析相關(guān)參數(shù),如果發(fā)現(xiàn)異常數(shù)據(jù),則立即組裝資源失敗的告警信息(即生成資源類告警信息),并把該資源類告警信息輸出到高可用集群內(nèi)所有節(jié)點(diǎn)的本地告警信息日志文件中。
[0064]針對(duì)節(jié)點(diǎn)類告警信息,系統(tǒng)首先利用crm_node-l命令獲取節(jié)點(diǎn)丟失信息,并與歷史數(shù)據(jù)相比較,如果丟失節(jié)點(diǎn)與歷史數(shù)據(jù)不同,則立即組裝其相應(yīng)的告警信息(即生成節(jié)點(diǎn)類告警信息,其包括告警時(shí)間、告警類別、告警級(jí)別、告警詳情等,并把該節(jié)點(diǎn)類告警信息輸出到高可用集群內(nèi)所有節(jié)點(diǎn)的本地告警信息日志文件中。
[0065]上述心跳類告警信息、資源類告警信息和節(jié)點(diǎn)類告警信息均屬于高可用集群類告警信息。
[0066]步驟103:將高可用集群類告警信息分別寫入第一主數(shù)據(jù)庫(kù)和第一輔助數(shù)據(jù)庫(kù)。
[0067]步驟104:將第一輔助數(shù)據(jù)庫(kù)中的高可用集群類告警信息同步到各個(gè)第二輔助數(shù)據(jù)庫(kù)中。
[0068]具體地,如果未監(jiān)測(cè)到高可用集群系統(tǒng)出現(xiàn)第一主數(shù)據(jù)庫(kù)類故障(即高可用集群系統(tǒng)的主節(jié)點(diǎn)或者從節(jié)點(diǎn)與第一主數(shù)據(jù)庫(kù)的連接異常),則通過web接口將高可用集群類告警信息發(fā)送到主節(jié)點(diǎn)的第一主數(shù)據(jù)庫(kù)和第一輔助數(shù)據(jù)庫(kù)中。然后通過同步機(jī)制將第一輔助數(shù)據(jù)庫(kù)中的高可用集群告警信息同步到高可用集群系統(tǒng)的所有從節(jié)點(diǎn)的第二輔助數(shù)據(jù)庫(kù)中。
[0069]應(yīng)用本實(shí)施例所述的告警方法,監(jiān)測(cè)到高可用集群系統(tǒng)出現(xiàn)高可用集群類故障時(shí),將生成的高可用集群類告警信息分別寫入主節(jié)點(diǎn)的兩個(gè)數(shù)據(jù)庫(kù)中,然后通過同步機(jī)制將該信息同步到各個(gè)節(jié)點(diǎn)的數(shù)據(jù)庫(kù)中。在未發(fā)生數(shù)據(jù)庫(kù)連接故障的情況下,上述各個(gè)數(shù)據(jù)庫(kù)中存儲(chǔ)的告警信息是一致的。因此,無論用戶當(dāng)前訪問(登錄)的是主節(jié)點(diǎn)還是任意一個(gè)從節(jié)點(diǎn),都可以從當(dāng)前訪問的節(jié)點(diǎn)的數(shù)據(jù)庫(kù)中獲取告警信息。即便是在主節(jié)點(diǎn)或者主節(jié)點(diǎn)的數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),用戶也可以從任意一個(gè)從節(jié)點(diǎn)的第二輔助數(shù)據(jù)庫(kù)中獲取到告警信息,從而能夠及時(shí)依據(jù)獲取的告警信息采取相應(yīng)的應(yīng)對(duì)措施,保證了高可用集群系統(tǒng)的正常運(yùn)行,有效避免了由于未及時(shí)采取采取應(yīng)對(duì)措施而造成的損失,大大提高了高可用集群系統(tǒng)的系統(tǒng)性能。
[0070]在現(xiàn)有技術(shù)中,高可用集群系統(tǒng)的集群軟件采用郵件告警的方式將告警信息發(fā)送給預(yù)設(shè)的告警聯(lián)系人。當(dāng)集群軟件探測(cè)到系統(tǒng)出現(xiàn)高可用集群類故障時(shí),首先利用預(yù)先配置的告警模板生成告警信息,然后將告警信息發(fā)送到告警聯(lián)系人的郵件中??梢钥闯?,現(xiàn)有技術(shù)中的高可用集群系統(tǒng)的集群軟件采用的郵件告警方式將告警信息呈現(xiàn)給用戶的缺陷在于:(1)當(dāng)用戶欲查閱告警信息時(shí),用戶無法通過集群軟件的管理界面直接查閱告警信息,而是需要先登錄告警聯(lián)系人的郵件系統(tǒng),然后再通過郵件查閱,過程相對(duì)繁瑣,不具有及時(shí)性。(2)由于告警信息的不可預(yù)知性,用戶可能由于沒有及時(shí)登錄郵件系統(tǒng),導(dǎo)致無法及時(shí)查閱最新告警信息,從而沒有及時(shí)采取相應(yīng)的應(yīng)對(duì)措施,有可能造成較大損失。
[0071]為了解決現(xiàn)有技術(shù)中的高可用集群系統(tǒng)的集群軟件采用郵件告警方式的將高可用集群類告警信息呈現(xiàn)給用戶導(dǎo)致的技術(shù)缺陷,在本發(fā)明一優(yōu)選的實(shí)施例中,上述告警方法還包括:將高可用集群類告警信息呈現(xiàn)在高可用集群系統(tǒng)的集群軟件的頁面上,其中高可用集群類告警信息包括均與高可用集群類故障相對(duì)應(yīng)的故障標(biāo)識(shí)和嚴(yán)重級(jí)別標(biāo)識(shí)。
[0072]具體地,心跳類故障對(duì)應(yīng)的心跳類告警信息包括故障標(biāo)識(shí)H(H為Heartbeat的簡(jiǎn)寫)和嚴(yán)重級(jí)別標(biāo)識(shí)。資源類故障對(duì)應(yīng)的資源類告警信息包括故障標(biāo)識(shí)R(R為Resorce的簡(jiǎn)寫)和嚴(yán)重級(jí)別標(biāo)識(shí)。節(jié)點(diǎn)類故障對(duì)應(yīng)的節(jié)點(diǎn)類告警信息包括故障標(biāo)識(shí)N(N為Node的簡(jiǎn)寫)和嚴(yán)重級(jí)別標(biāo)識(shí)。
[0073]本實(shí)施例根據(jù)告警信息的安全級(jí)別,將其分為嚴(yán)重級(jí)和普通級(jí)兩類。為了使前端界面獲得較好的顯示效果,其告警圖標(biāo)結(jié)合故障標(biāo)識(shí)、后綴數(shù)字和顏色的設(shè)計(jì)模式。告警圖標(biāo)采用紅色來表示嚴(yán)重級(jí),用黃色表示普通級(jí)。由后綴數(shù)字“O”表示的嚴(yán)重級(jí)別標(biāo)識(shí)代表嚴(yán)重級(jí)告警信息,由后綴數(shù)字“I”表示的嚴(yán)重級(jí)別標(biāo)識(shí)代表普通級(jí)告警信息。以節(jié)點(diǎn)類告警信息為例,故障標(biāo)識(shí)為“N”,然后根據(jù)節(jié)點(diǎn)類告警信息形成的原因,自定義其嚴(yán)重級(jí)別標(biāo)識(shí)。比如當(dāng)前節(jié)點(diǎn)類故障的嚴(yán)重級(jí)別為嚴(yán)重級(jí),則該故障對(duì)應(yīng)的嚴(yán)重級(jí)別標(biāo)識(shí)為0,則最終呈現(xiàn)在用戶界面上的圖標(biāo)為紅色字體的“NO”。其它類告警信息類似,不再做詳細(xì)說明。
[0074]應(yīng)用本實(shí)施例,采用簡(jiǎn)單明了的圖標(biāo)將高可用集群類告警信息直觀地呈現(xiàn)在用戶界面上,使得用戶能夠在第一時(shí)間了解系統(tǒng)的運(yùn)行狀態(tài)。并且,用戶能夠及時(shí)根據(jù)快速獲知的告警信息采用相應(yīng)的應(yīng)對(duì)措施,最大程度地減少或避免了可能造成的損失。
[0075]進(jìn)一步地,被存儲(chǔ)在高可用集群系統(tǒng)的各個(gè)數(shù)據(jù)庫(kù)的高可用集群類告警信息除了上述均與高可用集群類故障相對(duì)應(yīng)的故障標(biāo)識(shí)和嚴(yán)重級(jí)別標(biāo)識(shí)外,還包括故障來源標(biāo)識(shí)。具體地,針對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)的告警信息level字段,高可用集群系統(tǒng)采用統(tǒng)一格式編碼,即采用三個(gè)有效字符的字符串來表示。其第一位表示故障來源標(biāo)識(shí),“I”表示高可用集群類告警信息,而“O”表示諸如操作系統(tǒng)負(fù)載類告警信息或者數(shù)據(jù)庫(kù)類告警信息的普通監(jiān)控