本發(fā)明涉及共享存儲式文件系統(tǒng)集群通信領(lǐng)域,尤其涉及一種共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信的監(jiān)控方法及監(jiān)控節(jié)點(diǎn)。
背景技術(shù):
如圖1-圖6所示,共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)間通信模塊采用corosync(Corosync是集群管理套件的一部分,它在傳遞信息的時(shí)候可以通過一個(gè)簡單的配置文件來定義信息傳遞的方式和協(xié)議等),其底層通信實(shí)現(xiàn)依據(jù)totem協(xié)議,通過組播的方式傳遞節(jié)點(diǎn)信息,并以單播token的形式確保消息的可靠接收,實(shí)現(xiàn)集群內(nèi)節(jié)點(diǎn)變化的同步。
在組播消息丟失時(shí),會通過token循環(huán)識別并重播,直至丟失消息節(jié)點(diǎn)收到該消息或者token循環(huán)次數(shù)達(dá)到最大值,Safe Order要求廣播的消息每個(gè)節(jié)點(diǎn)的都要收到對于應(yīng)用需要廣播的消息才會轉(zhuǎn)發(fā)應(yīng)用處理,對于有Safe Order的要求的消息接收失敗會引發(fā)不斷的重播,引起消息處理延時(shí)。且Operational狀態(tài)是集群穩(wěn)定的工作狀態(tài),具有穩(wěn)定的ring,而Gather,Commit態(tài)是集群判斷節(jié)點(diǎn)狀態(tài)的過程,通過反復(fù)廣播自身成員,直到各節(jié)點(diǎn)成員均達(dá)到一致狀態(tài),對于被確認(rèn)為leave的節(jié)點(diǎn),集群還需要隔離這個(gè)問題節(jié)點(diǎn),這個(gè)過程可能需要很長的時(shí)間,而且這個(gè)過程集群不會處理應(yīng)用的消息,這樣的狀態(tài)會導(dǎo)致集群的消息處理延遲以及集群不穩(wěn)定性增加,存在不能實(shí)時(shí)了解集群文件系統(tǒng)運(yùn)行狀態(tài),難以及時(shí)對運(yùn)行狀態(tài)做出調(diào)控的問題。
隨著共享存儲式集群文件系統(tǒng)中集群規(guī)模的增大,會導(dǎo)致時(shí)延增加,存在不能動態(tài)調(diào)整集群節(jié)點(diǎn)的參數(shù)來適應(yīng)業(yè)務(wù)量的需要的問題,難以根據(jù)實(shí)際情況調(diào)整發(fā)揮自身優(yōu)勢。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述問題,本發(fā)明提供共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信的監(jiān)控方法及監(jiān)控節(jié)點(diǎn)來解決共享存儲式集群文件系統(tǒng)中存在的不能實(shí)時(shí)了解集群文件系統(tǒng)運(yùn)行狀態(tài),難以及時(shí)對運(yùn)行狀態(tài)做出調(diào)控的問題。
為了解決上述技術(shù)問題,本發(fā)明實(shí)施例采用如下技術(shù)方案:
一種共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信的監(jiān)控方法,應(yīng)用于共享存儲式集群文件系統(tǒng)中的監(jiān)控節(jié)點(diǎn),包括:接收所述集群文件系統(tǒng)中集群節(jié)點(diǎn)的組播消息,所述監(jiān)控節(jié)點(diǎn)與所述集群節(jié)點(diǎn)都位于所述集群文件系統(tǒng)中;獲取所述組播消息的消息類型及與所述消息類型相對應(yīng)的消息參數(shù);根據(jù)所述消息參數(shù),查詢存儲表中與所述組播消息相對應(yīng)的存儲記錄;在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)所述存儲表中與所述組播消息相對應(yīng)的存儲記錄,獲取所述集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)。
可選地,所述獲取所述組播消息的消息類型及與所述消息類型相對應(yīng)的消息參數(shù),具體包括:獲取所述組播消息的消息類型;當(dāng)所述消息類型為應(yīng)用層消息類型時(shí),獲取所述組播消息的第一消息參數(shù),所述第一消息參數(shù)至少包括:所述組播消息對應(yīng)的應(yīng)用層消息的消息編號、組播所述組播消息的節(jié)點(diǎn)所在的第一環(huán)的第一環(huán)標(biāo)號和組播所述組播消息的節(jié)點(diǎn)在所述第一環(huán)中的第一發(fā)送者地址;當(dāng)所述消息類型為節(jié)點(diǎn)加入消息類型時(shí),獲取所述組播消息的第二消息參數(shù),所述第二消息參數(shù)至少包括:組播所述組播消息的節(jié)點(diǎn)所在的第二環(huán)的第二環(huán)標(biāo)號、組播所述組播消息的節(jié)點(diǎn)在所述第二環(huán)中的第二發(fā)送者地址和組播所述組播消息的節(jié)點(diǎn)自身記錄的節(jié)點(diǎn)成員列表。
可選地,所述根據(jù)所述消息參數(shù),查詢存儲表中與所述組播消息相對應(yīng)的存儲記錄,具體包括:當(dāng)所述組播消息為應(yīng)用層消息類型時(shí),根據(jù)所述消息編號及所述第一環(huán)標(biāo)號,判斷所述存儲表的應(yīng)用層消息表中是否存在具有所述消息編號及所述第一環(huán)標(biāo)號的第一存儲記錄;當(dāng)所述應(yīng)用層消息表中不存在所述第一存儲記錄時(shí),存儲所述組播消息的第一消息參數(shù)至所述應(yīng)用層消息表;當(dāng)所述應(yīng)用層消息表中存在所述第一存儲記錄時(shí),判斷結(jié)果為所述第一環(huán)中與所述第一發(fā)送者地址相對應(yīng)的節(jié)點(diǎn)的上一節(jié)點(diǎn)存在消息丟失,得出所述上一節(jié)點(diǎn)為疑似問題節(jié)點(diǎn),并存儲所述疑似問題節(jié)點(diǎn)的參數(shù)至所述存儲表中的疑似問題節(jié)點(diǎn)表。
可選地,所述得出所述上一節(jié)點(diǎn)為疑似問題節(jié)點(diǎn),并存儲所述疑似問題節(jié)點(diǎn)的參數(shù)至所述存儲表中的疑似問題節(jié)點(diǎn)表,具體包括:根據(jù)所述第一發(fā)送者地址,獲取所述疑似問題節(jié)點(diǎn)在所述第一環(huán)中的第一節(jié)點(diǎn)地址;根據(jù)所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號,判斷所述疑似問題節(jié)點(diǎn)表中是否存在具有所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號的第二存儲記錄;當(dāng)所述疑似問題節(jié)點(diǎn)表中存在所述第二存儲記錄時(shí),增加所述疑似問題節(jié)點(diǎn)的消息記錄次數(shù);當(dāng)所述疑似問題節(jié)點(diǎn)表中不存在所述第二存儲記錄時(shí),存儲包括所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號的第一參數(shù)至所述疑似問題節(jié)點(diǎn)表。
可選地,所述根據(jù)所述消息參數(shù),查詢存儲表中與所述組播消息相對應(yīng)的存儲記錄,具體包括:當(dāng)所述組播消息為節(jié)點(diǎn)加入消息類型時(shí),根據(jù)所述第二環(huán)標(biāo)記與所述第二發(fā)送者地址,判斷所述存儲表中的節(jié)點(diǎn)加入消息表中是否存在具有所述第二環(huán)標(biāo)號及所述第二發(fā)送者地址的第三存儲記錄;當(dāng)所述節(jié)點(diǎn)加入消息表中不存在所述第三存儲記錄時(shí),存儲所述組播消息的第二消息參數(shù)至所述節(jié)點(diǎn)加入消息表;當(dāng)所述節(jié)點(diǎn)加入消息表中存在所述第三存儲記錄時(shí),根據(jù)所述節(jié)點(diǎn)成員列表,判斷與所述第三存儲記錄相比,所述組播消息的節(jié)點(diǎn)成員列表中是否存在增加或減少的節(jié)點(diǎn)成員;當(dāng)所述組播消息的節(jié)點(diǎn)成員列表中存在減少的節(jié)點(diǎn)成員時(shí),獲取所述減少的節(jié)點(diǎn)成員的第二節(jié)點(diǎn)地址,根據(jù)所述第二節(jié)點(diǎn)地址及所述第二發(fā)送者地址,判斷所述存儲表的離開節(jié)點(diǎn)表中是否存在具有所述第二節(jié)點(diǎn)地址及所述第二發(fā)送者地址的第四存儲記錄;當(dāng)所述離開節(jié)點(diǎn)表中存在所述第四存儲記錄時(shí),增加所述減少的節(jié)點(diǎn)成員的消息記錄次數(shù);當(dāng)所述離開節(jié)點(diǎn)表中不存在所述第四存儲信息時(shí),存儲包括所述第二節(jié)點(diǎn)地址、所述第二發(fā)送者地址的第二參數(shù)至所述離開節(jié)點(diǎn)表;當(dāng)所述組播消息的節(jié)點(diǎn)成員列表中存在增加的節(jié)點(diǎn)成員時(shí),獲取所述增加的節(jié)點(diǎn)成員的第三節(jié)點(diǎn)地址,根據(jù)所述第三節(jié)點(diǎn)地址及所述第二發(fā)送者地址,判斷所述離開節(jié)點(diǎn)表中是否存在具有所述第三節(jié)點(diǎn)地址及所述第二發(fā)送者地址的第五存儲記錄;當(dāng)所述離開節(jié)點(diǎn)表中存在所述第五存儲記錄時(shí),刪除所述第五存儲記錄。
可選地,所述在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)所述存儲表中與所述組播消息相對應(yīng)的存儲記錄,獲取所述集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài),具體包 括:所述疑似問題節(jié)點(diǎn)表中,當(dāng)所述疑似問題節(jié)點(diǎn)中存在有消息記錄次數(shù)達(dá)到預(yù)設(shè)最大值的特別疑似問題節(jié)點(diǎn)時(shí),判斷所述預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)是否相同;當(dāng)預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)相同時(shí),判斷所述集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài);當(dāng)預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)不同時(shí),判斷所述特別疑似問題節(jié)點(diǎn)為所述問題節(jié)點(diǎn)。
可選地,所述在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)所述存儲表中與所述組播消息相對應(yīng)的存儲記錄,獲取所述集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài),具體包括:判斷所述離開節(jié)點(diǎn)表是否為空;當(dāng)所述離開節(jié)點(diǎn)表不為空,且所述離開節(jié)點(diǎn)表中,存在多個(gè)具有相同的所述第二節(jié)點(diǎn)地址的存儲記錄時(shí),判斷與所述相同的所述第二節(jié)點(diǎn)地址相對應(yīng)的節(jié)點(diǎn)為所述問題節(jié)點(diǎn);當(dāng)所述離開節(jié)點(diǎn)表為空,判斷所述節(jié)點(diǎn)加入消息表中,具有所述第二環(huán)中最小的所述第二發(fā)送者地址的存儲記錄的數(shù)量是否達(dá)到預(yù)設(shè)值;當(dāng)所述節(jié)點(diǎn)加入消息表中,具有所述第二環(huán)中最小的所述第二發(fā)送者地址的存儲記錄的數(shù)量達(dá)到預(yù)設(shè)值時(shí),判斷所述集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)。
可選地,所述監(jiān)控方法還包括:根據(jù)所述問題節(jié)點(diǎn)和集群狀態(tài)獲取對應(yīng)的調(diào)整參數(shù);將所述調(diào)整參數(shù)組播至所述集群節(jié)點(diǎn),以使所述集群節(jié)點(diǎn)根據(jù)所述調(diào)整參數(shù)調(diào)整當(dāng)前自身配置。
可選地,所述根據(jù)所述問題節(jié)點(diǎn)和集群狀態(tài)獲取對應(yīng)的調(diào)整參數(shù),具體包括:當(dāng)所述集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài)時(shí),按照第一預(yù)設(shè)的倍率調(diào)大當(dāng)前消息傳輸窗口值為一新消息傳輸窗口值,按照第二預(yù)設(shè)的倍率縮小每個(gè)所述集群節(jié)點(diǎn)的當(dāng)前最大可傳輸信息值為一新的最大可傳輸信息值;當(dāng)所述集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)時(shí),按照第三預(yù)設(shè)的倍率調(diào)大所述集群節(jié)點(diǎn)的令牌超時(shí)時(shí)間為一新的令牌超時(shí)時(shí)間。
一種共享存儲式集群文件系統(tǒng)中的監(jiān)控節(jié)點(diǎn),包括:
第一接收模塊,用于接收所述集群文件系統(tǒng)中集群節(jié)點(diǎn)的組播消息,所述監(jiān)控節(jié)點(diǎn)與所述集群節(jié)點(diǎn)都位于所述集群文件系統(tǒng)中;第一獲取模塊,用于獲取所述組播消息的消息類型及與所述消息類型相對應(yīng)的消息參數(shù);查詢模塊,用于根據(jù)所述消息參數(shù),查詢存儲表中與所述組播消息相對應(yīng)的存儲記錄;第 二獲取模塊,用于在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)所述存儲表中與所述組播消息相對應(yīng)的存儲記錄,獲取所述集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)。
可選地,所述第一獲取模塊具體用于:獲取所述組播消息的消息類型;當(dāng)所述消息類型為應(yīng)用層消息類型時(shí),獲取所述組播消息的第一消息參數(shù),所述第一消息參數(shù)至少包括:所述組播消息對應(yīng)的應(yīng)用層消息的消息編號、組播所述組播消息的節(jié)點(diǎn)所在的第一環(huán)的第一環(huán)標(biāo)號和組播所述組播消息的節(jié)點(diǎn)在所述第一環(huán)中的第一發(fā)送者地址;當(dāng)所述消息類型為節(jié)點(diǎn)加入消息類型時(shí),獲取所述組播消息的第二消息參數(shù),所述第二消息參數(shù)至少包括:組播所述組播消息的節(jié)點(diǎn)所在的第二環(huán)的第二環(huán)標(biāo)號、組播所述組播消息的節(jié)點(diǎn)在所述第二環(huán)中的第二發(fā)送者地址和組播所述組播消息的節(jié)點(diǎn)自身記錄的節(jié)點(diǎn)成員列表。
可選地,所述查詢模塊具體包括:
第一判斷子模塊,用于當(dāng)所述組播消息為應(yīng)用層消息類型時(shí),根據(jù)所述消息編號及所述第一環(huán)標(biāo)號,判斷所述存儲表的應(yīng)用層消息表中是否存在具有所述消息編號及所述第一環(huán)標(biāo)號的第一存儲記錄;第一存儲子模塊,用于當(dāng)所述應(yīng)用層消息表中不存在所述第一存儲記錄時(shí),存儲所述組播消息的第一消息參數(shù)至所述應(yīng)用層消息表;第二存儲子模塊,用于當(dāng)所述應(yīng)用層消息表中存在所述第一存儲記錄時(shí),判斷結(jié)果為所述第一環(huán)中與所述第一發(fā)送者地址相對應(yīng)的節(jié)點(diǎn)的上一節(jié)點(diǎn)存在消息丟失,得出所述上一節(jié)點(diǎn)為疑似問題節(jié)點(diǎn),并存儲所述疑似問題節(jié)點(diǎn)的參數(shù)至所述存儲表中的疑似問題節(jié)點(diǎn)表。
可選地,所述第二存儲子模塊具體包括:獲取單元,用于根據(jù)所述第一發(fā)送者地址,獲取所述疑似問題節(jié)點(diǎn)在所述第一環(huán)中的第一節(jié)點(diǎn)地址;判斷單元,用于根據(jù)所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號,判斷所述疑似問題節(jié)點(diǎn)表中是否存在具有所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號的第二存儲記錄;記錄單元,用于當(dāng)所述疑似問題節(jié)點(diǎn)表中存在所述第二存儲記錄時(shí),增加所述疑似問題節(jié)點(diǎn)的消息記錄次數(shù);存儲單元,用于當(dāng)所述疑似問題節(jié)點(diǎn)表中不存在所述第二存儲記錄時(shí),存儲包括所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號的第一參數(shù)至所述疑似問題節(jié)點(diǎn)表。
可選地,所述查詢模塊具體包括:
第二判斷子模塊,用于當(dāng)所述組播消息為節(jié)點(diǎn)加入消息類型時(shí),根據(jù)所述 第二環(huán)標(biāo)記與所述第二發(fā)送者地址,判斷所述存儲表中的節(jié)點(diǎn)加入消息表中是否存在具有所述第二環(huán)標(biāo)號及所述第二發(fā)送者地址的第三存儲記錄;第三存儲子模塊,用于當(dāng)所述節(jié)點(diǎn)加入消息表中不存在所述第三存儲記錄時(shí),存儲所述組播消息的第二消息參數(shù)至所述節(jié)點(diǎn)加入消息表;第三判斷子模塊,用于當(dāng)所述節(jié)點(diǎn)加入消息表中存在所述第三存儲記錄時(shí),根據(jù)所述節(jié)點(diǎn)成員列表,判斷與所述第三存儲記錄相比,所述組播消息的節(jié)點(diǎn)成員列表中是否存在增加或減少的節(jié)點(diǎn)成員;第四判斷子模塊,用于當(dāng)所述組播消息的節(jié)點(diǎn)成員列表中存在減少的節(jié)點(diǎn)成員時(shí),獲取所述減少的節(jié)點(diǎn)成員的第二節(jié)點(diǎn)地址,根據(jù)所述第二節(jié)點(diǎn)地址及所述第二發(fā)送者地址,判斷所述存儲表的離開節(jié)點(diǎn)表中是否存在具有所述第二節(jié)點(diǎn)地址及所述第二發(fā)送者地址的第四存儲記錄;記錄子模塊,用于當(dāng)所述離開節(jié)點(diǎn)表中存在所述第四存儲記錄時(shí),增加所述減少的節(jié)點(diǎn)成員的消息記錄次數(shù);第四存儲子模塊,用于當(dāng)所述離開節(jié)點(diǎn)表中不存在所述第四存儲信息時(shí),存儲包括所述第二節(jié)點(diǎn)地址、所述第二發(fā)送者地址的第二參數(shù)至所述離開節(jié)點(diǎn)表;第五判斷子模塊,用于當(dāng)所述組播消息的節(jié)點(diǎn)成員列表中存在增加的節(jié)點(diǎn)成員時(shí),獲取所述增加的節(jié)點(diǎn)成員的第三節(jié)點(diǎn)地址,根據(jù)所述第三節(jié)點(diǎn)地址及所述第二發(fā)送者地址,判斷所述離開節(jié)點(diǎn)表中是否存在具有所述第三節(jié)點(diǎn)地址及所述第二發(fā)送者地址的第五存儲記錄;刪除子模塊,用于當(dāng)所述離開節(jié)點(diǎn)表中存在所述第五存儲記錄時(shí),刪除所述第五存儲記錄。
可選地,所述第二獲取模塊,具體包括:
第六判斷子模塊,用于所述疑似問題節(jié)點(diǎn)表中,當(dāng)所述疑似問題節(jié)點(diǎn)中存在有消息記錄次數(shù)達(dá)到預(yù)設(shè)最大值的特別疑似問題節(jié)點(diǎn)時(shí),判斷所述預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)是否相同,當(dāng)預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)相同時(shí),判斷所述集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài);第七判斷子模塊,用于當(dāng)預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)不同時(shí),判斷所述特別疑似問題節(jié)點(diǎn)為所述問題節(jié)點(diǎn)。
可選地,所述第二獲取模塊,具體包括:
第八判斷子模塊,用于判斷所述離開節(jié)點(diǎn)表是否為空;第九判斷子模塊,用于當(dāng)所述離開節(jié)點(diǎn)表不為空,且所述離開節(jié)點(diǎn)表中,存在多個(gè)具有相同的所 述第二節(jié)點(diǎn)地址的存儲記錄時(shí),判斷與所述相同的所述第二節(jié)點(diǎn)地址相對應(yīng)的節(jié)點(diǎn)為所述問題節(jié)點(diǎn);第十判斷子模塊,用于當(dāng)所述離開節(jié)點(diǎn)表為空,判斷所述節(jié)點(diǎn)加入消息表中,具有所述第二環(huán)中最小的所述第二發(fā)送者地址的存儲記錄的數(shù)量是否達(dá)到預(yù)設(shè)值;第十一判斷子模塊,用于當(dāng)所述節(jié)點(diǎn)加入消息表中,具有所述第二環(huán)中最小的所述第二發(fā)送者地址的存儲記錄的數(shù)量達(dá)到預(yù)設(shè)值時(shí),判斷所述集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)。
可選地,所述監(jiān)控節(jié)點(diǎn)還包括:
第三獲取模塊,用于根據(jù)所述問題節(jié)點(diǎn)和集群狀態(tài)獲取對應(yīng)的調(diào)整參數(shù);組播模塊,用于將所述調(diào)整參數(shù)組播至所述集群節(jié)點(diǎn),以使所述集群節(jié)點(diǎn)根據(jù)所述調(diào)整參數(shù)調(diào)整當(dāng)前自身配置。
可選地,所述第三獲取模塊,具體用于:
當(dāng)所述集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài)時(shí),按照第一預(yù)設(shè)的倍率調(diào)大當(dāng)前消息傳輸窗口值為一新消息傳輸窗口值,按照第二預(yù)設(shè)的倍率縮小每個(gè)所述集群節(jié)點(diǎn)的當(dāng)前最大可傳輸信息值為一新的最大可傳輸信息值;當(dāng)所述集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)時(shí),按照第三預(yù)設(shè)的倍率調(diào)大所述集群節(jié)點(diǎn)的令牌超時(shí)時(shí)間為一新的令牌超時(shí)時(shí)間。
本發(fā)明的有益效果是:
上述方案,通過收集組播消息來監(jiān)控集群運(yùn)行狀況,并根據(jù)每個(gè)節(jié)點(diǎn)的組播消息統(tǒng)計(jì)分析節(jié)點(diǎn)狀態(tài),對集群狀態(tài)和問題節(jié)點(diǎn)給出統(tǒng)計(jì)判斷,提高其通信業(yè)務(wù)處理能力及穩(wěn)定性,且能夠第一時(shí)間獲取設(shè)備故障通知,使管理人員對整個(gè)集群通信狀況有了直觀觀察效果,能夠及時(shí)了解設(shè)備狀況、定位故障目標(biāo)、提高工作效率,進(jìn)而提高集群文件系統(tǒng)整體性能。
附圖說明
圖1為節(jié)點(diǎn)P1上的corosync接受該節(jié)點(diǎn)上的應(yīng)用A1消息M1M2M3,在集群中組播的消息示意圖;
圖2為節(jié)點(diǎn)組播消息后,令牌token由節(jié)點(diǎn)P1傳到P2中的示意圖;
圖3為P2收到token確認(rèn)接收消息后,繼續(xù)傳遞token到P3的示意圖;
圖4為集群中加入節(jié)點(diǎn)后該節(jié)點(diǎn)廣播節(jié)點(diǎn)加入消息joinmsg示意圖;
圖5為集群其他節(jié)點(diǎn)收到j(luò)oinmsg后廣播自身成員集合示意圖;
圖6為節(jié)點(diǎn)未收到其他節(jié)點(diǎn)joinmsg從而未實(shí)現(xiàn)consensus的示意圖;
圖7為集群中增加監(jiān)控節(jié)點(diǎn)示意圖;
圖8為本發(fā)明第一實(shí)施例中方法流程圖;
圖9為本發(fā)明第二實(shí)施例中方法流程圖;
圖10為本發(fā)明第三實(shí)施例中方法流程圖;
圖11為本發(fā)明第四實(shí)施例中方法流程圖;
圖12為本發(fā)明第五實(shí)施例中方法流程圖;
圖13為本發(fā)明第六實(shí)施例中方法流程圖一;
圖14為本發(fā)明第六實(shí)施例中方法流程圖二;
圖15為本發(fā)明第七實(shí)施例中方法流程圖一;
圖16為本發(fā)明第七實(shí)施例中方法流程圖二;
圖17為本發(fā)明第九實(shí)施例中整體結(jié)構(gòu)框圖;
圖18為本發(fā)明第九實(shí)施例中詳細(xì)結(jié)構(gòu)框圖;
圖19為本發(fā)明中方法的整體流程示意圖一;
圖20為本發(fā)明中方法的整體流程示意圖二。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
第一實(shí)施例
如圖7、圖8所示,本發(fā)明提供一種共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信的監(jiān)控方法,應(yīng)用于共享存儲式集群文件系統(tǒng)中的監(jiān)控節(jié)點(diǎn),該方法包括:
步驟101:接收所述集群文件系統(tǒng)中集群節(jié)點(diǎn)的組播消息。
這里可以將監(jiān)控節(jié)點(diǎn)加入集群文件系統(tǒng)的集群組播組中,使得該監(jiān)控節(jié)點(diǎn)與上述集群節(jié)點(diǎn)都位于集群文件系統(tǒng)中,其中該監(jiān)控節(jié)點(diǎn)可以是與集群節(jié)點(diǎn)相同的主機(jī)或者刀片服務(wù)器或者其他服務(wù)器。
步驟102:獲取所述組播消息的消息類型及與所述消息類型相對應(yīng)的消息參數(shù)。
在步驟101中接收到組播消息之后,便獲取該組播消息對應(yīng)的消息類型,進(jìn)而根據(jù)該消息類型獲取與不同的消息類型對應(yīng)的不同的消息參數(shù)。
步驟103:根據(jù)所述消息參數(shù),查詢存儲表中與所述組播消息相對應(yīng)的存儲記錄。
根據(jù)步驟102中獲取的消息參數(shù),從存儲表中查詢與消息參數(shù)相對應(yīng)的關(guān)于組播消息的相關(guān)存儲記錄,與步驟101相對應(yīng)地,該存儲表對集群各節(jié)點(diǎn)每一次的組播消息可都進(jìn)行收集及統(tǒng)計(jì)。
步驟104:在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)所述存儲表中與所述組播消息相對應(yīng)的存儲記錄,獲取所述集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)。
存儲表會在一段時(shí)間內(nèi)對集群文件系統(tǒng)中的組播消息進(jìn)行采集與記錄,在預(yù)設(shè)定的時(shí)間間隔到達(dá)時(shí),根據(jù)存儲表中在該時(shí)間段內(nèi)的存儲記錄來判斷并獲取集群文件系統(tǒng)的集群狀態(tài)是怎么樣的及是否有相關(guān)的問題節(jié)點(diǎn)出現(xiàn)。
該監(jiān)控方法是在現(xiàn)有集群中增加一節(jié)點(diǎn),該節(jié)點(diǎn)配置集群組播地址,能夠接收集群廣播消息。通過接收集群文件系統(tǒng)中各節(jié)點(diǎn)的組播消息,根據(jù)組播消息的類型及與組播消息相對應(yīng)的消息參數(shù),查詢存儲表中關(guān)于對組播消息的存儲記錄,來獲知集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài),在共享存儲式集群文件系統(tǒng)中利用組播通信消息分析節(jié)點(diǎn)運(yùn)行狀態(tài),克服了現(xiàn)有技術(shù)中存在共享存儲式集群文件系統(tǒng)的對等式架構(gòu)中,集群處理能力、節(jié)點(diǎn)故障缺乏統(tǒng)計(jì)分析匯總及集群參數(shù)不能動態(tài)調(diào)整的問題和缺陷。
第二實(shí)施例
具體地,如圖9所示,在第一實(shí)施例基礎(chǔ)上,步驟102中的獲取組播消息的消息類型及與所述消息類型相對應(yīng)的消息參數(shù),具體包括:
步驟1021:獲取所述組播消息的消息類型。
步驟1022:當(dāng)所述消息類型為應(yīng)用層消息類型時(shí),獲取所述組播消息的第一消息參數(shù)。
該第一消息參數(shù)至少包括:該組播消息對應(yīng)的應(yīng)用層消息的消息編號、組播該組播消息的節(jié)點(diǎn)所在的第一環(huán)的第一環(huán)標(biāo)號和組播該組播消息的節(jié)點(diǎn)在 該第一環(huán)中的第一發(fā)送者地址。
步驟1023:當(dāng)所述消息類型為節(jié)點(diǎn)加入消息類型時(shí),獲取所述組播消息的第二消息參數(shù)。
該第二消息參數(shù)至少包括:組播該組播消息的節(jié)點(diǎn)所在的第二環(huán)的第二環(huán)標(biāo)號、組播該組播消息的節(jié)點(diǎn)在該第二環(huán)中的第二發(fā)送者地址和組播該組播消息的節(jié)點(diǎn)自身記錄的節(jié)點(diǎn)成員列表。
接收到組播消息,獲取該組播消息的消息類型,這里的消息類型主要分為兩類,一類是應(yīng)用層消息類型,一類是節(jié)點(diǎn)加入消息joinmsg類型,其中應(yīng)用層消息類型是指組播環(huán)中有應(yīng)用層發(fā)來的消息時(shí),將應(yīng)用層發(fā)來的應(yīng)用層消息組播至集群中其他各節(jié)點(diǎn)時(shí)的消息類型,其中節(jié)點(diǎn)加入消息類型是指在組播環(huán)中有節(jié)點(diǎn)加入時(shí),各節(jié)點(diǎn)之間組播的關(guān)于該節(jié)點(diǎn)加入及自身記錄的節(jié)點(diǎn)成員集合的消息類型。當(dāng)該組播消息是應(yīng)用層消息類型時(shí),獲取的參數(shù)要至少包括:該組播消息對應(yīng)的應(yīng)用層消息的消息編號seq、組播該組播消息的節(jié)點(diǎn)所在的環(huán)的環(huán)標(biāo)號,即第一環(huán)的第一環(huán)標(biāo)號ring_id1和組播該組播消息的節(jié)點(diǎn)在環(huán)中的地址,即第一環(huán)中的第一發(fā)送者地址sender_id1;當(dāng)消息類型為節(jié)點(diǎn)加入消息類型時(shí),獲取的參數(shù)至少包括:組播該組播消息的節(jié)點(diǎn)所在的環(huán)的環(huán)標(biāo)號,即第二環(huán)的第二環(huán)標(biāo)號ring_id2、組播該組播消息的節(jié)點(diǎn)在環(huán)中的地址,即第二環(huán)中的第二發(fā)送者地址sender_id2和組播該組播消息的節(jié)點(diǎn)自身記錄的節(jié)點(diǎn)成員的成員集合,即節(jié)點(diǎn)成員列表proc_list。對以上參數(shù)的獲取以便于對組播消息表達(dá)出的集群狀態(tài)做出判斷。
第三實(shí)施例
進(jìn)一步地,如圖10所示,在第一實(shí)施例與第二實(shí)施例的基礎(chǔ)上,當(dāng)組播消息為應(yīng)用層消息類型時(shí),步驟103中根據(jù)所述消息參數(shù),查詢存儲表中與組播消息相對應(yīng)的存儲記錄,具體包括:
步驟1031:當(dāng)組播消息為應(yīng)用層消息類型時(shí),根據(jù)所述消息編號及所述第一環(huán)標(biāo)號,判斷所述存儲表的應(yīng)用層消息表中是否存在具有所述消息編號及所述第一環(huán)標(biāo)號的第一存儲記錄。
這里,該存儲表中存儲有對集群節(jié)點(diǎn)的組播消息及該組播消息的相關(guān)參數(shù)的記錄,其中存儲表包括應(yīng)用層消息表,該應(yīng)用層消息表對應(yīng)存儲的是關(guān)于組 播消息為應(yīng)用層消息類型時(shí)的相關(guān)記錄。當(dāng)組播消息為應(yīng)用層消息類型時(shí),根據(jù)與該組播消息對應(yīng)的seq及ring_id1,判斷該應(yīng)用層消息表中是否已經(jīng)存在有與該組播消息為同一環(huán)中對相同應(yīng)用層消息的組播記錄,即上述的第一存儲記錄。
步驟1032:當(dāng)所述應(yīng)用層消息表中不存在所述第一存儲記錄時(shí),存儲所述組播消息的第一消息參數(shù)至所述應(yīng)用層消息表。
根據(jù)步驟1031中的判斷,當(dāng)判斷結(jié)果是應(yīng)用層消息表中不存在第一存儲記錄時(shí),就將該組播消息存儲進(jìn)應(yīng)用層消息表,存儲時(shí)至少將與該組播消息對應(yīng)的第一消息參數(shù)存儲進(jìn)應(yīng)用層消息表。
步驟1033:當(dāng)所述應(yīng)用層消息表中存在所述第一存儲記錄時(shí),判斷結(jié)果為所述第一環(huán)中與所述第一發(fā)送者地址相對應(yīng)的節(jié)點(diǎn)的上一節(jié)點(diǎn)存在消息丟失,得出所述上一節(jié)點(diǎn)為疑似問題節(jié)點(diǎn),并存儲所述疑似問題節(jié)點(diǎn)的參數(shù)至所述存儲表中的疑似問題節(jié)點(diǎn)表。
該存儲表中還包括疑似問題節(jié)點(diǎn)表,根據(jù)步驟1031中的判斷,當(dāng)判斷結(jié)果是應(yīng)用層消息表中存在第一存儲記錄時(shí),表明同一環(huán)上對相同的應(yīng)用層消息出現(xiàn)了重復(fù)組播的情況,可以由此得出該環(huán)上有節(jié)點(diǎn)存在消息丟失引發(fā)了該重復(fù)組播的情況,結(jié)合共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信過程中,組播環(huán)內(nèi)token令牌的消息確認(rèn)過程,判斷重發(fā)消息節(jié)點(diǎn)為Pn,根據(jù)token令牌傳遞的順序推測當(dāng)前成員列表中的Pn-1節(jié)點(diǎn)為丟失消息節(jié)點(diǎn),將其列為疑似問題節(jié)點(diǎn),得知與該組播消息中的sender_id1相對應(yīng)的節(jié)點(diǎn)的上一節(jié)點(diǎn)存在消息丟失,進(jìn)而判斷該上一節(jié)點(diǎn)處可能出現(xiàn)了問題,即為疑似問題節(jié)點(diǎn),將該疑似問題節(jié)點(diǎn)及相應(yīng)參數(shù)存儲至疑似問題節(jié)點(diǎn)表。
第四實(shí)施例
進(jìn)一步地,如圖11所示,在第三實(shí)施例基礎(chǔ)上,步驟1033中得出上一節(jié)點(diǎn)為疑似問題節(jié)點(diǎn),并存儲所述疑似問題節(jié)點(diǎn)的參數(shù)至所述存儲表中的疑似問題節(jié)點(diǎn)表,具體包括:
步驟10331:根據(jù)第一發(fā)送者地址,獲取所述疑似問題節(jié)點(diǎn)在所述第一環(huán)中的第一節(jié)點(diǎn)地址。
結(jié)合共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信過程中,組播環(huán)內(nèi)token令牌的消 息確認(rèn)過程,得知與該組播消息中的sender_id1相對應(yīng)的節(jié)點(diǎn)的上一節(jié)點(diǎn)存在消息丟失,進(jìn)而判斷該上一節(jié)點(diǎn)處可能出現(xiàn)了問題,而該第一發(fā)送者地址為組播該組播消息的節(jié)點(diǎn)在第一環(huán)中的地址,組播環(huán)中的節(jié)點(diǎn)地址是按序號從小到大的順序編排,可以根據(jù)該第一發(fā)送者地址sender_id1得知該節(jié)點(diǎn)上一節(jié)點(diǎn)在第一環(huán)中的地址,即上述的第一節(jié)點(diǎn)地址nodeid1。
步驟10332:根據(jù)所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號,判斷所述疑似問題節(jié)點(diǎn)表中是否存在具有所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號的第二存儲記錄。
在步驟10331中獲取了nodeid1,根據(jù)該nodeid1、seq及ring_id1,判斷疑似問題節(jié)點(diǎn)表中存儲的記錄里是否存在同一環(huán)中同一節(jié)點(diǎn)丟失相同應(yīng)用層消息的記錄,即該第二存儲記錄。
步驟10333:當(dāng)所述疑似問題節(jié)點(diǎn)表中存在所述第二存儲記錄時(shí),增加所述疑似問題節(jié)點(diǎn)的消息記錄次數(shù)。
當(dāng)步驟10332中的判斷結(jié)果為疑似問題節(jié)點(diǎn)表中已存在有第二存儲記錄時(shí),此時(shí)增加對該疑似問題節(jié)點(diǎn)在同一環(huán)中丟失相同應(yīng)用層消息的記錄次數(shù),也就是增加同一環(huán)中由該疑似問題節(jié)點(diǎn)存在消息的丟失而引起的其他節(jié)點(diǎn)重復(fù)組播的次數(shù)。
步驟10334:當(dāng)所述疑似問題節(jié)點(diǎn)表中不存在所述第二存儲記錄時(shí),存儲包括所述第一節(jié)點(diǎn)地址、所述消息編號及所述第一環(huán)標(biāo)號的第一參數(shù)至所述疑似問題節(jié)點(diǎn)表。
當(dāng)步驟10332中的判斷結(jié)果為疑似問題節(jié)點(diǎn)表中不存在有第二存儲記錄時(shí),至少將nodeid1、seq及ring_id1等參數(shù)存儲至疑似問題節(jié)點(diǎn)表,記錄下哪個(gè)環(huán)中哪個(gè)節(jié)點(diǎn)存在丟失哪個(gè)應(yīng)用層消息的情況的發(fā)生。
第五實(shí)施例
如圖12所示,在第一實(shí)施例及第二實(shí)施例的基礎(chǔ)上,當(dāng)組播消息為節(jié)點(diǎn)加入消息類型時(shí),步驟103中根據(jù)所述消息參數(shù),查詢存儲表中與所述組播消息相對應(yīng)的存儲記錄,具體包括:
步驟1034:當(dāng)所述組播消息為節(jié)點(diǎn)加入消息類型時(shí),根據(jù)所述第二環(huán)標(biāo)記與所述第二發(fā)送者地址,判斷所述存儲表中的節(jié)點(diǎn)加入消息表中是否存在具 有所述第二環(huán)標(biāo)號及所述第二發(fā)送者地址的第三存儲記錄。
存儲表中還包括節(jié)點(diǎn)加入消息表,當(dāng)該組播消息為節(jié)點(diǎn)加入消息時(shí),根據(jù)ring_id2、sender_id2,判斷該節(jié)點(diǎn)加入消息表中是否存儲有與該組播消息為在同一環(huán)中同一節(jié)點(diǎn)發(fā)送的節(jié)點(diǎn)加入消息類型的消息記錄,即上述的第三存儲記錄。
步驟1035:當(dāng)所述節(jié)點(diǎn)加入消息表中不存在所述第三存儲記錄時(shí),存儲所述組播消息的第二消息參數(shù)至所述節(jié)點(diǎn)加入消息表。
當(dāng)節(jié)點(diǎn)加入消息表中不存在對同一環(huán)中同一節(jié)點(diǎn)組播的節(jié)點(diǎn)加入消息類型的消息的記錄即第三存儲記錄時(shí),就將該組播消息存儲至節(jié)點(diǎn)加入消息表,存儲時(shí)至少將與該組播消息對應(yīng)的第二消息參數(shù)存儲進(jìn)應(yīng)用層消息表。
步驟1036:當(dāng)所述節(jié)點(diǎn)加入消息表中存在所述第三存儲記錄時(shí),根據(jù)所述節(jié)點(diǎn)成員列表,判斷與所述第三存儲記錄相比,所述組播消息的節(jié)點(diǎn)成員列表中是否存在增加或減少的節(jié)點(diǎn)成員。
當(dāng)節(jié)點(diǎn)加入消息表中存在第三存儲記錄時(shí),表明該節(jié)點(diǎn)加入消息表中存儲有與該組播消息為在同一環(huán)中同一節(jié)點(diǎn)發(fā)送的節(jié)點(diǎn)加入消息類型的消息記錄,根據(jù)與組播消息相對應(yīng)的第二消息參數(shù)中的proc_list,與該第三存儲記錄中存在的節(jié)點(diǎn)成員列表參數(shù)做比較,判斷該組播消息的proc_list中是否存在增加或減少的節(jié)點(diǎn)成員,即判斷該組播消息組播的關(guān)于當(dāng)前環(huán)中節(jié)點(diǎn)離開或加入的相關(guān)情況。
步驟1037:當(dāng)所述組播消息的節(jié)點(diǎn)成員列表中存在減少的節(jié)點(diǎn)成員時(shí),獲取所述減少的節(jié)點(diǎn)成員的第二節(jié)點(diǎn)地址,根據(jù)所述第二節(jié)點(diǎn)地址及所述第二發(fā)送者地址,判斷所述存儲表的離開節(jié)點(diǎn)表中是否存在具有所述第二節(jié)點(diǎn)地址及所述第二發(fā)送者地址的第四存儲記錄。
存儲表中還包括離開節(jié)點(diǎn)表(leave表),當(dāng)步驟1036的判斷結(jié)果為組播消息的節(jié)點(diǎn)成員列表中存在減少的節(jié)點(diǎn)成員,即環(huán)中存在與該減少的節(jié)點(diǎn)成員對應(yīng)的離開的節(jié)點(diǎn),則獲取該減少的節(jié)點(diǎn)成員在第二環(huán)中的第二節(jié)點(diǎn)地址nodeid2,根據(jù)nodeid2、sender_id2判斷該離開節(jié)點(diǎn)表中是否存儲有同一節(jié)點(diǎn)發(fā)送的具有同一減少的節(jié)點(diǎn)的消息記錄,即上述第四存儲記錄。
步驟1038:當(dāng)所述離開節(jié)點(diǎn)表中存在所述第四存儲記錄時(shí),增加所述減 少的節(jié)點(diǎn)成員的消息記錄次數(shù)。
當(dāng)步驟1037中判斷結(jié)果為離開節(jié)點(diǎn)表中存在第四存儲記錄時(shí),表明該減少的節(jié)點(diǎn)成員已被同一節(jié)點(diǎn)向其他集群節(jié)點(diǎn)組播過相應(yīng)的消息,此時(shí)增加相應(yīng)的消息記錄次數(shù),即增加對該減少的節(jié)點(diǎn)成員的離開次數(shù)的記錄。
步驟1039:當(dāng)所述離開節(jié)點(diǎn)表中不存在所述第四存儲信息時(shí),存儲包括所述第二節(jié)點(diǎn)地址、所述第二發(fā)送者地址的第二參數(shù)至所述離開節(jié)點(diǎn)表。
當(dāng)步驟1037中判斷結(jié)果為離開節(jié)點(diǎn)表中不存在第四存儲記錄時(shí),就對相應(yīng)參數(shù)進(jìn)行存儲,存儲時(shí)至少將第二節(jié)點(diǎn)地址、第二發(fā)送者地址等參數(shù)存儲進(jìn)該離開節(jié)點(diǎn)表。
步驟10310:當(dāng)所述組播消息的節(jié)點(diǎn)成員列表中存在增加的節(jié)點(diǎn)成員時(shí),獲取所述增加的節(jié)點(diǎn)成員的第三節(jié)點(diǎn)地址,根據(jù)所述第三節(jié)點(diǎn)地址及所述第二發(fā)送者地址,判斷所述離開節(jié)點(diǎn)表中是否存在具有所述第三節(jié)點(diǎn)地址及所述第二發(fā)送者地址的第五存儲記錄。
當(dāng)步驟1036的判斷結(jié)果為組播消息的節(jié)點(diǎn)成員列表中存在增加的節(jié)點(diǎn)成員,即環(huán)中存在與該增加的節(jié)點(diǎn)成員對應(yīng)的加入的節(jié)點(diǎn),則獲取該增加的節(jié)點(diǎn)成員在第二環(huán)中的第三節(jié)點(diǎn)地址nodeid3,根據(jù)nodeid3、sender_id2判斷該離開節(jié)點(diǎn)表中是否存儲有關(guān)于此次增加的節(jié)點(diǎn)成員的由同一節(jié)點(diǎn)發(fā)送的對該節(jié)點(diǎn)之前離開的消息的記錄,即上述第五存儲記錄。
步驟10311:當(dāng)所述離開節(jié)點(diǎn)表中存在所述第五存儲記錄時(shí),刪除所述第五存儲記錄。
當(dāng)離開節(jié)點(diǎn)表中存在與此次增加的節(jié)點(diǎn)成員由同一發(fā)送節(jié)點(diǎn)發(fā)送的該成員之前離開的記錄,則刪除該記錄。
上述的步驟1034至步驟10311中,對當(dāng)組播消息為節(jié)點(diǎn)加入消息類型時(shí),根據(jù)獲取與該消息類型相對應(yīng)的消息參數(shù),查詢存儲表中與組播消息相對應(yīng)的存儲記錄的過程及中間涉及的相關(guān)參數(shù)的使用和進(jìn)行的條件判斷做出了描述,通過利用獲取的組播消息的參數(shù)對存儲表中的節(jié)點(diǎn)加入消息表、離開節(jié)點(diǎn)表中的已有數(shù)據(jù)做出比較判斷,最終根據(jù)相關(guān)結(jié)果對相應(yīng)的參數(shù)進(jìn)行存儲或累加或刪除的相應(yīng)操作,達(dá)到對集群文件系統(tǒng)狀態(tài)信息的實(shí)時(shí)收集與監(jiān)控。
第六實(shí)施例
本實(shí)施例中將針對組播消息的不同消息類型,對如何獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)做出描述。
如圖13所示,一方面,當(dāng)組播消息的消息類型為應(yīng)用層消息類型時(shí),基于第一實(shí)施例和第三實(shí)施例,步驟104中在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)存儲表中與組播消息相對應(yīng)的存儲記錄,獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài),具體包括:
步驟1041:所述疑似問題節(jié)點(diǎn)表中,當(dāng)所述疑似問題節(jié)點(diǎn)中存在有消息記錄次數(shù)達(dá)到預(yù)設(shè)最大值的特別疑似問題節(jié)點(diǎn)時(shí),判斷所述預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)是否相同。
步驟1042:當(dāng)預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)相同時(shí),判斷所述集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài)。
步驟1043:當(dāng)預(yù)設(shè)最大值與除所述特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)不同時(shí),判斷所述特別疑似問題節(jié)點(diǎn)為所述問題節(jié)點(diǎn)。
當(dāng)組播消息的消息類型為應(yīng)用層消息類型時(shí),且預(yù)定時(shí)間間隔到達(dá),在判斷集群文件系統(tǒng)中是否有問題節(jié)點(diǎn)及當(dāng)前的集群狀態(tài)時(shí),需要對疑似問題節(jié)點(diǎn)表中的數(shù)據(jù)進(jìn)行判斷與分析,當(dāng)疑似問題節(jié)點(diǎn)表中存儲的疑似問題節(jié)點(diǎn)中有消息記錄的累計(jì)次數(shù)達(dá)到預(yù)設(shè)最大值的節(jié)點(diǎn)出現(xiàn),即出現(xiàn)特別疑似問題節(jié)點(diǎn)時(shí),需要判斷該特別疑似問題節(jié)點(diǎn)在預(yù)定時(shí)間間隔內(nèi)的消息記錄次數(shù)達(dá)到的該最大值是否與疑似問題節(jié)點(diǎn)表中記錄的其他疑似問題節(jié)點(diǎn)的消息記錄次數(shù)是否相同,如果相同,那就可以認(rèn)為此時(shí)的集群節(jié)點(diǎn)中的疑似問題節(jié)點(diǎn)都出現(xiàn)了同樣多的消息丟失,則判斷集群文件系統(tǒng)處于集群業(yè)務(wù)繁忙狀態(tài),如果不相同,那就可以認(rèn)為達(dá)到消息記錄次數(shù)最大值的該特別疑似問題節(jié)點(diǎn)存在頻繁的消息丟失情況,即可判斷該節(jié)點(diǎn)為問題節(jié)點(diǎn)。
如圖14所示,另一方面,當(dāng)該組播消息的消息類型為節(jié)點(diǎn)加入消息類型時(shí),基于第一實(shí)施例與第五實(shí)施例,步驟104中在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)存儲表中與組播消息相對應(yīng)的存儲記錄,獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài),具體包括:
步驟1044:判斷所述離開節(jié)點(diǎn)表是否為空。
步驟1045:當(dāng)所述離開節(jié)點(diǎn)表不為空,且所述離開節(jié)點(diǎn)表中,存在多個(gè) 具有相同的所述第二節(jié)點(diǎn)地址的存儲記錄時(shí),判斷與所述相同的所述第二節(jié)點(diǎn)地址相對應(yīng)的節(jié)點(diǎn)為所述問題節(jié)點(diǎn)。
當(dāng)組播消息的消息類型為節(jié)點(diǎn)加入消息類型,獲取集群文件系統(tǒng)中的問題節(jié)點(diǎn)和集群狀態(tài)時(shí),要先對離開節(jié)點(diǎn)表中收集并存儲的數(shù)據(jù)進(jìn)行判斷與分析,當(dāng)離開節(jié)點(diǎn)表中有記錄存在,即不為空時(shí),且在離開節(jié)點(diǎn)表的存儲記錄中,存在有多個(gè)記錄中都包含有相同的nodeid2這一參數(shù)時(shí),則可獲知不同的存儲記錄中對應(yīng)的有對相同的減少節(jié)點(diǎn)的記錄,可以得知與該nodeid2相對應(yīng)的節(jié)點(diǎn)出現(xiàn)多次退出即離開組播環(huán)的情況發(fā)生,則此時(shí)判斷與該nodeid2相對應(yīng)的節(jié)點(diǎn)為問題節(jié)點(diǎn)。
步驟1046:當(dāng)所述離開節(jié)點(diǎn)表為空,判斷所述節(jié)點(diǎn)加入消息表中,具有所述第二環(huán)中最小的所述第二發(fā)送者地址的存儲記錄的數(shù)量是否達(dá)到預(yù)設(shè)值。
步驟1047:當(dāng)所述節(jié)點(diǎn)加入消息表中,具有所述第二環(huán)中最小的所述第二發(fā)送者地址的存儲記錄的數(shù)量達(dá)到預(yù)設(shè)值時(shí),判斷所述集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)。
這里,最小的第二發(fā)送者地址是指在組播環(huán)里按順序編排的節(jié)點(diǎn)地址中,向其他節(jié)點(diǎn)發(fā)送組播消息的節(jié)點(diǎn)的地址在該環(huán)的節(jié)點(diǎn)地址中為最小。當(dāng)離開節(jié)點(diǎn)表中沒有記錄存在,即為空時(shí),需要判斷存儲表中的節(jié)點(diǎn)加入消息表的存儲記錄中,具有該最小的第二發(fā)送者地址參數(shù)的存儲記錄的數(shù)量有沒有達(dá)到預(yù)設(shè)值,即由與該最小的第二發(fā)送者地址相對應(yīng)的節(jié)點(diǎn)組播的組播消息的數(shù)量是否達(dá)到預(yù)設(shè)值,該預(yù)設(shè)值一般為預(yù)設(shè)的在允許范圍內(nèi)的最大值,當(dāng)達(dá)到預(yù)設(shè)值時(shí),說明與該最小的第二發(fā)送者地址相對應(yīng)的節(jié)點(diǎn)在預(yù)設(shè)時(shí)間間隔內(nèi)頻繁發(fā)送組播消息,引起該頻繁發(fā)送操作的原因一般為發(fā)送組播消息給其他節(jié)點(diǎn)之后,token令牌沒有及時(shí)的被其他節(jié)點(diǎn)接收響應(yīng),因此引起了頻繁的重發(fā),則在此時(shí)判斷該集群文件系統(tǒng)處于令牌超時(shí)頻繁狀態(tài)。
上述根據(jù)組播消息的類型在存儲表中進(jìn)行不同的查詢及判斷過程中,通過縱向節(jié)點(diǎn)本身的累積計(jì)數(shù)及橫向節(jié)點(diǎn)間的比較,判斷集群狀態(tài)及問題節(jié)點(diǎn),及時(shí)有效的對集群文件系統(tǒng)的狀態(tài)做出檢測與判斷。
第七實(shí)施例
在第一實(shí)施例中介紹了如何實(shí)時(shí)監(jiān)測并獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和 集群狀態(tài),如圖15所示,在本實(shí)施例中將對監(jiān)測并獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)之后,如何解決集群文件系統(tǒng)中的問題進(jìn)行描述,相應(yīng)地,該監(jiān)控方法還包括:
步驟105:根據(jù)所述問題節(jié)點(diǎn)和集群狀態(tài)獲取對應(yīng)的調(diào)整參數(shù)。
步驟106:將所述調(diào)整參數(shù)組播至所述集群節(jié)點(diǎn),以使所述集群節(jié)點(diǎn)根據(jù)所述調(diào)整參數(shù)調(diào)整當(dāng)前自身配置。
在當(dāng)步驟104獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)之后,根據(jù)該問題節(jié)點(diǎn)及集群狀態(tài)提供相對應(yīng)的應(yīng)對策略,此時(shí)通過獲取有針對性的調(diào)整參數(shù),并將該調(diào)整參數(shù)組播至集群節(jié)點(diǎn),使其他節(jié)點(diǎn)根據(jù)該調(diào)整參數(shù)及時(shí)調(diào)整自身配置來解決系統(tǒng)問題。
進(jìn)一步地,如圖16所示,上述步驟105中根據(jù)問題節(jié)點(diǎn)和集群狀態(tài)獲取對應(yīng)的調(diào)整參數(shù),具體包括:
步驟1051:當(dāng)所述集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài)時(shí),按照第一預(yù)設(shè)的倍率調(diào)大當(dāng)前消息傳輸窗口值為一新消息傳輸窗口值,按照第二預(yù)設(shè)的倍率縮小每個(gè)所述集群節(jié)點(diǎn)的當(dāng)前最大可傳輸信息值為一新的最大可傳輸信息值。
這里的第一預(yù)設(shè)的倍率優(yōu)選為1.2的倍率,第二預(yù)設(shè)的倍率優(yōu)選為0.9的倍率。根據(jù)集群出現(xiàn)的具體問題分情況處理,在集群業(yè)務(wù)繁忙的狀態(tài)下,每個(gè)節(jié)點(diǎn)都有組播消息丟失,此時(shí)按照1.2的倍率調(diào)大消息傳輸窗口值window_size,按照0.9的倍率縮小每個(gè)集群節(jié)點(diǎn)組播消息時(shí)的最大可傳輸信息值max_messages,以實(shí)現(xiàn)緩解集群繁忙狀態(tài),減少消息丟失情況。
步驟1052:當(dāng)所述集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)時(shí),按照第三預(yù)設(shè)的倍率調(diào)大所述集群節(jié)點(diǎn)的令牌超時(shí)時(shí)間為一新的令牌超時(shí)時(shí)間。
這里的第三預(yù)設(shè)的倍率優(yōu)選為1.2的倍率,對于token令牌超時(shí)頻繁問題,按照1.2的倍率調(diào)大集群中每個(gè)節(jié)點(diǎn)的令牌超時(shí)時(shí)間,以減少集群系統(tǒng)中因令牌超時(shí)造成的消息重發(fā)。
相應(yīng)地,獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)之后,可對包括出現(xiàn)問題節(jié)點(diǎn)、token令牌超時(shí)頻繁、集群業(yè)務(wù)繁忙在內(nèi)的每種結(jié)果及與各種結(jié)果相 對應(yīng)的調(diào)整參數(shù)進(jìn)行輸出提示。
進(jìn)一步地,集群管理套件中的corosync作為集群通信的核心組件,分布在集群每個(gè)節(jié)點(diǎn)上,corosync的參數(shù)配置在每個(gè)集群節(jié)點(diǎn)相同,它能夠?qū)⒈竟?jié)點(diǎn)的應(yīng)用消息廣播到集群中,并接收其他節(jié)點(diǎn)的組播消息,以此達(dá)到整個(gè)集群狀態(tài)的同步,并通過令牌的傳遞,實(shí)現(xiàn)消息的可靠傳送,集群成員變化檢測,從而維持整個(gè)集群穩(wěn)定。本發(fā)明中提到的方法中,可在集群中除監(jiān)控節(jié)點(diǎn)外的其他節(jié)點(diǎn)corosync的通信層增加調(diào)節(jié)參數(shù)消息,corosync接收該消息后,進(jìn)行corosync的totem配置修改。由其他集群節(jié)點(diǎn)中的集群管理套件中的corosync接收參數(shù)調(diào)整消息解析并對相關(guān)配置進(jìn)行修改。
第八實(shí)施例
為使本發(fā)明目的、技術(shù)方案優(yōu)點(diǎn)更加清楚,本實(shí)施例將進(jìn)一步結(jié)合具體實(shí)現(xiàn)場景進(jìn)行說明。
第一步:監(jiān)控節(jié)點(diǎn)加入組播組,準(zhǔn)備接收組播消息。
第二步:接收到組播消息,解析組播消息,至少獲取消息類型及與消息類型相應(yīng)的參數(shù)數(shù)據(jù),并將該些數(shù)據(jù)進(jìn)行保存。
第三步:根據(jù)參數(shù)數(shù)據(jù)的查詢結(jié)果,存儲相應(yīng)數(shù)據(jù),判斷節(jié)點(diǎn)狀態(tài)。
第四步:定時(shí)進(jìn)行統(tǒng)計(jì)分析,查詢問題節(jié)點(diǎn)表和離開節(jié)點(diǎn)表,判斷可能的問題節(jié)點(diǎn)、集群狀態(tài),按照當(dāng)前配置調(diào)整參數(shù),輸出統(tǒng)計(jì)結(jié)果和排查建議。
第五步:將調(diào)整參數(shù)在集群中進(jìn)行廣播。
第六步:集群節(jié)點(diǎn)收到關(guān)于調(diào)整參數(shù)的消息,根據(jù)調(diào)整參數(shù)更新配置。
采用本發(fā)明公開的方法,與現(xiàn)有技術(shù)相比,實(shí)現(xiàn)集群和各集群分節(jié)點(diǎn)處理能力的直觀的觀測效果,根據(jù)集群業(yè)務(wù)需求動態(tài)調(diào)整配置參數(shù),提高了集群的可靠性和穩(wěn)定性,改善了集群通信的觀測手段,方便開發(fā)人員分析。
其中,存儲表具體包括以下幾部分:
應(yīng)用層消息表,可以為包含列sender_id1,seq,srpaddr,ring_id1,timestamp。
疑似問題節(jié)點(diǎn)表,可以為包含nodeid1,seq,ring_id1,timestamp。
節(jié)點(diǎn)加入消息表,可以為包含列sender_id2,ring_id2,proc_list,timestamp。
leave表,可以為包含sender_id2,timestamp及未在proc_list中存在的nodeid2。
其中srpaddr列用于記錄組播消息發(fā)送節(jié)點(diǎn)的物理地址,timestamp列用于記錄組播消息的相關(guān)時(shí)間,用于對時(shí)間的記錄,以便于進(jìn)行在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)存儲表中的存儲記錄,獲取集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài),也可以通過計(jì)時(shí)實(shí)現(xiàn)在一預(yù)設(shè)時(shí)間段到達(dá)時(shí),對存儲表中的數(shù)據(jù)進(jìn)行定期清除。
進(jìn)一步地,這里將結(jié)合圖19對共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信的監(jiān)控方法中,接收集群文件系統(tǒng)中集群節(jié)點(diǎn)的組播消息,獲取組播消息的消息類型及與消息類型相對應(yīng)的消息參數(shù),根據(jù)該消息參數(shù),查詢存儲表中與該組播消息相對應(yīng)的存儲記錄的過程做出整體描述。
當(dāng)進(jìn)程開始后,接收集群文件系統(tǒng)中集群節(jié)點(diǎn)的組播消息,來判斷該組播消息的消息類型是否為應(yīng)用層消息類型,若是,則解析獲取該組播消息的seq、sender_id1、ring_id1,以seq和ring_id1為查詢條件查詢存儲表的應(yīng)用層消息表中是否存在相關(guān)記錄,若應(yīng)用層消息表中不存在相關(guān)記錄,就將該消息存儲至應(yīng)用層消息表中,若應(yīng)用層消息表中存在相關(guān)記錄,就根據(jù)該相關(guān)記錄中的消息發(fā)送者地址,判斷與該消息發(fā)送者地址相對應(yīng)的節(jié)點(diǎn)Pn在環(huán)中的上一節(jié)點(diǎn)Pn-1為疑似問題節(jié)點(diǎn),此時(shí)再判斷疑似問題節(jié)點(diǎn)表中是否存在具有節(jié)點(diǎn)Pn-1的節(jié)點(diǎn)地址nodeid及具有相同的seq、ring_id1的相關(guān)記錄,若存在,則更新該具有Pn-1的節(jié)點(diǎn)地址nodeid的相關(guān)記錄的記錄次數(shù),即更新該nodeid對應(yīng)的Pn-1節(jié)點(diǎn)的消息丟失造成的未收消息次數(shù),若不存在,則保存Pn-1的nodeid、seq、ring_id1至存儲表中的疑似問題節(jié)點(diǎn)表;若該組播消息不為應(yīng)用層消息類型時(shí),判斷該組播消息是否為joinmsg消息類型,若是,則獲取該組播消息的sender_id2、ring_id2、proc_list參數(shù),以sender_id2和ring_id2為條件查詢存儲表中的節(jié)點(diǎn)加入消息表是否存儲有相同記錄,如果有則比較組播消息與該相同記錄中的proc_list,當(dāng)該組播消息的proc_list中有減少的節(jié)點(diǎn),獲取該減少的節(jié)點(diǎn)的節(jié)點(diǎn)地址nodeid,此時(shí)再以參數(shù)sender_id2、該減少的節(jié)點(diǎn)的節(jié)點(diǎn)地址nodeid、ring_id2查詢leave表中是否存在相關(guān)記錄,如果leave表中存在相關(guān)記錄,則累加該nodeid對應(yīng)的節(jié)點(diǎn)的記錄次數(shù),即累加該nodeid對應(yīng)的節(jié)點(diǎn)的leave次數(shù),若leave表中不存在相關(guān)記錄,則在leave表中增加對該nodeid對應(yīng)的減少的節(jié)點(diǎn)的消息的記錄;當(dāng)組播消息既不為應(yīng)用層消息類型也不為joinmsg消息類型,則丟棄該組播消息。
相應(yīng)地,這里將結(jié)合圖20對共享存儲式集群文件系統(tǒng)節(jié)點(diǎn)通信的監(jiān)控方法中,根據(jù)與組播消息的消息類型相對應(yīng)的消息參數(shù),查詢存儲表中與組播消息相對應(yīng)的存儲記錄;在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)存儲表中與組播消息相對應(yīng)的存儲記錄,獲取該集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)的過程做出整體描述。
當(dāng)預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),檢查疑似問題節(jié)點(diǎn)表,統(tǒng)計(jì)每個(gè)疑似問題節(jié)點(diǎn)的記錄次數(shù),即每個(gè)疑似問題節(jié)點(diǎn)的出現(xiàn)錯(cuò)誤的次數(shù),判斷疑似問題節(jié)點(diǎn)中是否有節(jié)點(diǎn)的消息記錄次數(shù)達(dá)到了預(yù)設(shè)的最大值,如果有,將該節(jié)點(diǎn)的消息記錄次數(shù)與其他疑似問題節(jié)點(diǎn)的消息記錄次數(shù)作比較,當(dāng)其他疑似問題節(jié)點(diǎn)的消息記錄次數(shù)與消息記錄次數(shù)達(dá)到預(yù)設(shè)的最大值的節(jié)點(diǎn)的記錄次數(shù)相同,則判斷集群業(yè)務(wù)繁忙,若不相同,則判斷消息記錄次數(shù)達(dá)到預(yù)設(shè)的最大值的節(jié)點(diǎn)存在問題;當(dāng)疑似問題節(jié)點(diǎn)中不存在有節(jié)點(diǎn)的消息記錄次數(shù)達(dá)到預(yù)設(shè)最大值,則查詢leave表,判斷l(xiāng)eave表中是否有記錄存在,若leave表中有節(jié)點(diǎn)存在,判斷該leave表的記錄中是否存在多個(gè)具有相同的節(jié)點(diǎn)地址的存儲記錄,即leave表中的記錄是否為對同一節(jié)點(diǎn)離開的消息記錄,若是,則表明與該相同的節(jié)點(diǎn)地址對應(yīng)的節(jié)點(diǎn)存在問題,需要等待集群裁決處理;當(dāng)leave表中沒有記錄存在,則判斷節(jié)點(diǎn)加入消息表中關(guān)于具有環(huán)中最小地址的節(jié)點(diǎn)的消息記錄是否達(dá)到預(yù)設(shè)值,若是,則判斷集群中存在token超時(shí)頻繁,若不是,則不對該情況進(jìn)行處理。
本發(fā)明通過接收和分析集群各節(jié)點(diǎn)組播消息來監(jiān)控集群和節(jié)點(diǎn)狀態(tài),及對集群繁忙,token超時(shí)情況通過組播來對各節(jié)點(diǎn)參數(shù)進(jìn)行調(diào)整以適應(yīng)集群處理能力,加入組播組的監(jiān)控節(jié)點(diǎn)上不設(shè)corosync通信模塊,為進(jìn)行參數(shù)調(diào)節(jié),需要在集群節(jié)點(diǎn)通訊模塊中增加一調(diào)節(jié)參數(shù)消息處理,但不影響現(xiàn)有集群規(guī)模,該監(jiān)控節(jié)點(diǎn)不參與具體業(yè)務(wù),通過收集組播消息來監(jiān)控集群運(yùn)行狀況,并根據(jù)每個(gè)節(jié)點(diǎn)的組播消息統(tǒng)計(jì)分析節(jié)點(diǎn)狀態(tài),對集群狀態(tài)和問題節(jié)點(diǎn)給出統(tǒng)計(jì)判斷,并適時(shí)調(diào)整集群參數(shù),提高其通信業(yè)務(wù)處理能力及穩(wěn)定性,對整個(gè)集群通信狀況有了直觀觀察效果,能夠第一時(shí)間獲取設(shè)備故障通知,使管理人員能夠及時(shí)了解設(shè)備狀況、定位故障目標(biāo)、提高工作效率。
第九實(shí)施例
如圖7、圖17所示,本發(fā)明還公開了一種共享存儲式集群文件系統(tǒng)中的監(jiān)控節(jié)點(diǎn),該監(jiān)控節(jié)點(diǎn)包括:第一接收模塊2100、第一獲取模塊2200、查詢模塊2300、第二獲取模塊2400。
其中,第一接收模塊2100,用于接收集群文件系統(tǒng)中集群節(jié)點(diǎn)的組播消息,該監(jiān)控節(jié)點(diǎn)與集群節(jié)點(diǎn)都位于集群文件系統(tǒng)中;第一獲取模塊2200,用于獲取該組播消息的消息類型及與該消息類型相對應(yīng)的消息參數(shù);查詢模塊2300,用于根據(jù)該消息參數(shù),查詢存儲表中與該組播消息相對應(yīng)的存儲記錄;第二獲取模塊2400,用于在一預(yù)設(shè)時(shí)間間隔到達(dá)時(shí),根據(jù)該存儲表中與該組播消息相對應(yīng)的存儲記錄,獲取該集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài)。
上述監(jiān)控節(jié)點(diǎn)是在現(xiàn)有集群中增加的節(jié)點(diǎn),該節(jié)點(diǎn)配置集群組播地址,能夠接收集群廣播消息。通過接收集群文件系統(tǒng)中各節(jié)點(diǎn)的組播消息,根據(jù)組播消息的類型及與組播消息相對應(yīng)的消息參數(shù),查詢存儲表中關(guān)于對組播消息的存儲記錄,來獲知集群文件系統(tǒng)的問題節(jié)點(diǎn)和集群狀態(tài),在共享存儲式集群文件系統(tǒng)中利用組播通信消息分析節(jié)點(diǎn)運(yùn)行狀態(tài),克服了現(xiàn)有技術(shù)中存在共享存儲式集群文件系統(tǒng)的對等式架構(gòu)中,集群處理能力、節(jié)點(diǎn)故障缺乏統(tǒng)計(jì)分析匯總及集群參數(shù)不能動態(tài)調(diào)整的問題和缺陷。
具體地,第一獲取模塊2200具體用于:獲取該組播消息的消息類型;當(dāng)該消息類型為應(yīng)用層消息類型時(shí),獲取該組播消息的第一消息參數(shù),該第一消息參數(shù)至少包括:該組播消息對應(yīng)的應(yīng)用層消息的消息編號、組播該組播消息的節(jié)點(diǎn)所在的第一環(huán)的第一環(huán)標(biāo)號和組播該組播消息的節(jié)點(diǎn)在該第一環(huán)中的第一發(fā)送者地址;當(dāng)該消息類型為節(jié)點(diǎn)加入消息類型時(shí),獲取該組播消息的第二消息參數(shù),該第二消息參數(shù)至少包括:組播該組播消息的節(jié)點(diǎn)所在的第二環(huán)的第二環(huán)標(biāo)號、組播該組播消息的節(jié)點(diǎn)在該第二環(huán)中的第二發(fā)送者地址和組播該組播消息的節(jié)點(diǎn)自身記錄的節(jié)點(diǎn)成員列表。
當(dāng)?shù)谝唤邮漳K2100接收到組播消息之后,第一獲取模塊2200獲取該組播消息的消息類型,這里的消息類型主要分為兩類,一類是應(yīng)用層消息類型,一類是節(jié)點(diǎn)加入消息類型。
當(dāng)該組播消息是應(yīng)用層消息類型時(shí),獲取的參數(shù)要至少包括:該組播消息對應(yīng)的應(yīng)用層消息的消息編號seq、組播該組播消息的節(jié)點(diǎn)所在的環(huán)的環(huán)標(biāo)號, 即第一環(huán)的第一環(huán)標(biāo)號ring_id1和組播該組播消息的節(jié)點(diǎn)在環(huán)中的地址,即第一環(huán)中的第一發(fā)送者地址sender_id1;當(dāng)消息類型為節(jié)點(diǎn)加入消息類型時(shí),獲取的參數(shù)至少包括:組播該組播消息的節(jié)點(diǎn)所在的環(huán)的環(huán)標(biāo)號,即第二環(huán)的第二環(huán)標(biāo)號ring_id2、組播該組播消息的節(jié)點(diǎn)在環(huán)中的地址,即第二環(huán)中的第二發(fā)送者地址sender_id2和組播該組播消息的節(jié)點(diǎn)自身記錄的節(jié)點(diǎn)成員的成員集合,即節(jié)點(diǎn)成員列表proc_list。對以上參數(shù)的獲取以便于對組播消息表達(dá)出的集群狀態(tài)做出判斷。
其中,如圖17所示,查詢模塊2300具體包括:第一判斷子模塊2310、第一存儲子模塊2320、第二存儲子模塊2330。
具體地,第一判斷子模塊2310,用于當(dāng)該組播消息為應(yīng)用層消息類型時(shí),根據(jù)該消息編號及該第一環(huán)標(biāo)號,判斷該存儲表的應(yīng)用層消息表中是否存在具有該消息編號及該第一環(huán)標(biāo)號的第一存儲記錄;第一存儲子模塊2320,用于當(dāng)該應(yīng)用層消息表中不存在該第一存儲記錄時(shí),存儲該組播消息的第一消息參數(shù)至該應(yīng)用層消息表;第二存儲子模塊2330,用于當(dāng)該應(yīng)用層消息表中存在該第一存儲記錄時(shí),判斷結(jié)果為該第一環(huán)中與該第一發(fā)送者地址相對應(yīng)的節(jié)點(diǎn)的上一節(jié)點(diǎn)存在消息丟失,得出該上一節(jié)點(diǎn)為疑似問題節(jié)點(diǎn),并存儲該疑似問題節(jié)點(diǎn)的參數(shù)至該存儲表中的疑似問題節(jié)點(diǎn)表。
上述查詢模塊2300中具體包括的第一判斷子模塊2310、第一存儲子模塊2320、第二存儲子模塊2330,實(shí)現(xiàn)了在當(dāng)組播消息為應(yīng)用層消息類型時(shí),通過利用獲取的組播消息的參數(shù)對存儲表中的應(yīng)用層消息表、疑似問題節(jié)點(diǎn)表中的已有數(shù)據(jù)做出比較判斷,最終根據(jù)相關(guān)結(jié)果對相應(yīng)的參數(shù)進(jìn)行存儲或累加或刪除的相應(yīng)操作,達(dá)到對集群文件系統(tǒng)狀態(tài)信息的實(shí)時(shí)收集與監(jiān)控。
進(jìn)一步地,第二存儲子模塊2330具體包括:獲取單元2331、判斷單元2331、記錄單元2333、存儲單元2334。
其中,獲取單元2331,用于根據(jù)第一發(fā)送者地址,獲取該疑似問題節(jié)點(diǎn)在該第一環(huán)中的第一節(jié)點(diǎn)地址;判斷單元2331,用于根據(jù)該第一節(jié)點(diǎn)地址、該消息編號及該第一環(huán)標(biāo)號,判斷該疑似問題節(jié)點(diǎn)表中是否存在具有該第一節(jié)點(diǎn)地址、該消息編號及該第一環(huán)標(biāo)號的第二存儲記錄;記錄單元2333,用于當(dāng)該疑似問題節(jié)點(diǎn)表中存在該第二存儲記錄時(shí),增加該疑似問題節(jié)點(diǎn)的消息記 錄次數(shù);存儲單元2334,用于當(dāng)該疑似問題節(jié)點(diǎn)表中不存在該第二存儲記錄時(shí),存儲包括該第一節(jié)點(diǎn)地址、該消息編號及該第一環(huán)標(biāo)號的第一參數(shù)至該疑似問題節(jié)點(diǎn)表。
進(jìn)一步地,查詢模塊2300具體包括:第二判斷子模塊2340、第三存儲子模塊2350、第三判斷子模塊2360、第四判斷子模塊2370、記錄子模塊2380、第四存儲子模塊2390、第五判斷子模塊23100、刪除子模塊23110。
其中,第二判斷子模塊2340,用于當(dāng)該組播消息為節(jié)點(diǎn)加入消息類型時(shí),根據(jù)該第二環(huán)標(biāo)記與該第二發(fā)送者地址,判斷該存儲表中的節(jié)點(diǎn)加入消息表中是否存在具有該第二環(huán)標(biāo)號及該第二發(fā)送者地址的第三存儲記錄;第三存儲子模塊2350,用于當(dāng)該節(jié)點(diǎn)加入消息表中不存在該第三存儲記錄時(shí),存儲該組播消息的第二消息參數(shù)至該節(jié)點(diǎn)加入消息表;第三判斷子模塊2360,用于當(dāng)該節(jié)點(diǎn)加入消息表中存在該第三存儲記錄時(shí),根據(jù)該節(jié)點(diǎn)成員列表,判斷與該第三存儲記錄相比,該組播消息的節(jié)點(diǎn)成員列表中是否存在增加或減少的節(jié)點(diǎn)成員;第四判斷子模塊2370,用于當(dāng)該組播消息的節(jié)點(diǎn)成員列表中存在減少的節(jié)點(diǎn)成員時(shí),獲取該減少的節(jié)點(diǎn)成員的第二節(jié)點(diǎn)地址,根據(jù)該第二節(jié)點(diǎn)地址及該第二發(fā)送者地址,判斷該存儲表的離開節(jié)點(diǎn)表中是否存在具有該第二節(jié)點(diǎn)地址及該第二發(fā)送者地址的第四存儲記錄;記錄子模塊2380,用于當(dāng)該離開節(jié)點(diǎn)表中存在該第四存儲記錄時(shí),增加該減少的節(jié)點(diǎn)成員的消息記錄次數(shù);第四存儲子模塊2390,用于當(dāng)該離開節(jié)點(diǎn)表中不存在該第四存儲信息時(shí),存儲包括該第二節(jié)點(diǎn)地址、該第二發(fā)送者地址的第二參數(shù)至該離開節(jié)點(diǎn)表;第五判斷子模塊23100,用于當(dāng)該組播消息的節(jié)點(diǎn)成員列表中存在增加的節(jié)點(diǎn)成員時(shí),獲取該增加的節(jié)點(diǎn)成員的第三節(jié)點(diǎn)地址,根據(jù)該第三節(jié)點(diǎn)地址及該第二發(fā)送者地址,判斷該離開節(jié)點(diǎn)表中是否存在具有該第三節(jié)點(diǎn)地址及該第二發(fā)送者地址的第五存儲記錄;刪除子模塊23110,用于當(dāng)該離開節(jié)點(diǎn)表中存在該第五存儲記錄時(shí),刪除該第五存儲記錄。
上述查詢模塊2300中具體包括的第二判斷子模塊2340至刪除子模塊23110實(shí)現(xiàn)了在當(dāng)組播消息為節(jié)點(diǎn)加入消息類型時(shí),通過利用獲取的組播消息的參數(shù)對存儲表中的節(jié)點(diǎn)加入消息表、離開節(jié)點(diǎn)表中的已有數(shù)據(jù)做出比較判斷,最終根據(jù)相關(guān)結(jié)果對相應(yīng)的參數(shù)進(jìn)行存儲或累加或刪除的相應(yīng)操作,達(dá)到對集 群文件系統(tǒng)狀態(tài)信息的實(shí)時(shí)收集與監(jiān)控。
具體地,當(dāng)組播消息為應(yīng)用層消息類型時(shí),第二獲取模塊2400具體包括:第六判斷子模塊2410、第七判斷子模塊2420。
其中,第六判斷子模塊2410,用于該疑似問題節(jié)點(diǎn)表中,當(dāng)該疑似問題節(jié)點(diǎn)中存在有消息記錄次數(shù)達(dá)到預(yù)設(shè)最大值的特別疑似問題節(jié)點(diǎn)時(shí),判斷該預(yù)設(shè)最大值與除該特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)是否相同,當(dāng)預(yù)設(shè)最大值與除該特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)相同時(shí),判斷該集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài);第七判斷子模塊2420,用于當(dāng)預(yù)設(shè)最大值與除該特別疑似問題節(jié)點(diǎn)外的其他節(jié)點(diǎn)的消息記錄次數(shù)不同時(shí),判斷該特別疑似問題節(jié)點(diǎn)為該問題節(jié)點(diǎn)。
相應(yīng)地,當(dāng)組播消息為節(jié)點(diǎn)加入消息類型時(shí),第二獲取模塊2400,具體包括:第八判斷子模塊2430、第九判斷子模塊2440、第十判斷子模塊2450、第十一判斷子模塊2460。
其中,第八判斷子模塊2430,用于判斷該離開節(jié)點(diǎn)表是否為空;第九判斷子模塊2440,用于當(dāng)該離開節(jié)點(diǎn)表不為空,且該離開節(jié)點(diǎn)表中,存在多個(gè)具有相同的該第二節(jié)點(diǎn)地址的存儲記錄時(shí),判斷與該相同的該第二節(jié)點(diǎn)地址相對應(yīng)的節(jié)點(diǎn)為該問題節(jié)點(diǎn);第十判斷子模塊2450,用于當(dāng)該離開節(jié)點(diǎn)表為空,判斷該節(jié)點(diǎn)加入消息表中,具有該第二環(huán)中最小的該第二發(fā)送者地址的存儲記錄的數(shù)量是否達(dá)到預(yù)設(shè)值;第十一判斷子模塊2460,用于當(dāng)該節(jié)點(diǎn)加入消息表中,具有該第二環(huán)中最小的該第二發(fā)送者地址的存儲記錄的數(shù)量達(dá)到預(yù)設(shè)值時(shí),判斷該集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)。
上述的各判斷模塊及各判斷子模塊,在根據(jù)組播消息的類型在存儲表中進(jìn)行不同的查詢及判斷過程中,通過縱向節(jié)點(diǎn)本身的累積計(jì)數(shù)及橫向節(jié)點(diǎn)間的比較,判斷集群狀態(tài)及問題節(jié)點(diǎn),及時(shí)有效的對集群文件系統(tǒng)的狀態(tài)做出檢測與判斷。
更進(jìn)一步地,監(jiān)控節(jié)點(diǎn)還包括:
第三獲取模塊2500,用于根據(jù)該問題節(jié)點(diǎn)和集群狀態(tài)獲取對應(yīng)的調(diào)整參數(shù)。
組播模塊2600,用于將該調(diào)整參數(shù)組播至該集群節(jié)點(diǎn),以使該集群節(jié)點(diǎn) 根據(jù)該調(diào)整參數(shù)調(diào)整當(dāng)前自身配置。
相應(yīng)地,第三獲取模塊2500具體用于:
當(dāng)該集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為集群業(yè)務(wù)繁忙狀態(tài)時(shí),按照第一預(yù)設(shè)的倍率調(diào)大當(dāng)前消息傳輸窗口值為一新消息傳輸窗口值,按照第二預(yù)設(shè)的倍率縮小每個(gè)該集群節(jié)點(diǎn)的當(dāng)前最大可傳輸信息值為一新的最大可傳輸信息值;當(dāng)該集群節(jié)點(diǎn)所處的集群文件系統(tǒng)為令牌超時(shí)頻繁狀態(tài)時(shí),按照第三預(yù)設(shè)的倍率調(diào)大該集群節(jié)點(diǎn)的令牌超時(shí)時(shí)間為一新的令牌超時(shí)時(shí)間。
本發(fā)明提供的增加在集群文件系統(tǒng)中的監(jiān)控節(jié)點(diǎn),克服了現(xiàn)有技術(shù)中存在于共享存儲式集群文件系統(tǒng)的對等式架構(gòu)中,集群處理能力、節(jié)點(diǎn)故障缺乏統(tǒng)計(jì)分析匯總及集群參數(shù)不能動態(tài)調(diào)整的問題和缺陷,實(shí)現(xiàn)了對集群文件系統(tǒng)問題的及時(shí)檢測、發(fā)現(xiàn)與解決。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
盡管已描述了本發(fā)明實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明實(shí)施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
以上所述的是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出對于本技術(shù)領(lǐng)域的普通人員來說,在不脫離本發(fā)明所述的原理前提下還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也在本發(fā)明的保護(hù)范圍內(nèi)。