本發(fā)明實施例涉及網(wǎng)絡(luò)安全領(lǐng)域,尤其涉及一種實現(xiàn)高可用的方法和裝置。
背景技術(shù):
隨著電腦的廣泛應(yīng)用和網(wǎng)絡(luò)的不斷普及,網(wǎng)絡(luò)流量也越來越大,提高網(wǎng)絡(luò)的安全性也變得越來越重要,對下一代防火墻(NGFW/IPS)轉(zhuǎn)發(fā)性能的要求也越來越高。由于NGFW/IPS采用“轉(zhuǎn)發(fā)引擎并行化”或ATCA分布式技術(shù)來提升轉(zhuǎn)發(fā)性能,因此引發(fā)了軟硬件架構(gòu)的變化。在新的軟硬件架構(gòu)下,需要更強大的高可用性系統(tǒng)與之相匹配,以保證“轉(zhuǎn)發(fā)引擎并行化”或ATCA分布式的高可用性。另外,虛擬防火墻技術(shù)的發(fā)展,也對高可用性技術(shù)提出更高的要求。
現(xiàn)有的高可用性(HA)技術(shù)方案中的高可用性系統(tǒng)只能單獨支持“轉(zhuǎn)發(fā)引擎并行化”架構(gòu)下的下一代防火墻或者ATCA分布式防火墻或者虛擬防火墻;沒有發(fā)現(xiàn)同時兼容“轉(zhuǎn)發(fā)引擎并行化”的NGFW/IPS、ATCA分布式防火墻和虛擬防火墻都支持的高可用性系統(tǒng);如果原本設(shè)備上應(yīng)用的是“轉(zhuǎn)發(fā)引擎并行化”的NGFW/IPS,當(dāng)需要更換為虛擬防火墻時,需要對設(shè)備或者設(shè)備的系統(tǒng)進(jìn)行更改或更換,增加了運行的成本,工作效率下降。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種實現(xiàn)高可用性的方法和裝置,用以解決現(xiàn)有技術(shù)中的高可用性系統(tǒng)只能支持單一架構(gòu)模式的設(shè)備。
本發(fā)明方法包括:
第一監(jiān)控單元獲取第一被監(jiān)控對象的狀態(tài)變化信息;
所述第一監(jiān)控單元將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控單元,并接收所述第二監(jiān)控單元發(fā)送的第二被監(jiān)控對象的狀態(tài)變化信息,所述第二被監(jiān)控對象為所述第一被監(jiān)控對象的主設(shè)備或從設(shè)備;
所述第一監(jiān)控單元在所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,更新所述第一被監(jiān)控對象的主備狀態(tài);所述第一被監(jiān)控對象的主備切換條件和所述第二被監(jiān)控對象的主備切換條件是相同的。
可選地,所述第一監(jiān)控單元包括第一監(jiān)控代理單元和第一監(jiān)控管理單元;
第一監(jiān)控單元獲取第一被監(jiān)控對象的狀態(tài)變化信息,包括:
所述第一監(jiān)控管理單元獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;
所述第一監(jiān)控單元將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控單元,并接收所述第二監(jiān)控單元發(fā)送的第二被監(jiān)控對象的狀態(tài)變化信息,包括:
所述第一監(jiān)控管理單元將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控管理單元,并接收所述第二監(jiān)控管理單元發(fā)送的所述第二被監(jiān)控對象的狀態(tài)變化信息;
所述第一監(jiān)控單元在所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,更新所述第一被監(jiān)控對象的主備狀態(tài),包括:
所述第一監(jiān)控管理單元在所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,確定所述第一被監(jiān)控對象發(fā)生主備切換并通知所述第一監(jiān)控代理單元;
所述第一監(jiān)控代理單元更新所述第一監(jiān)控對象的主備狀態(tài)。
可選地,所述第一監(jiān)控管理單元獲取所述第一被監(jiān)控對象的狀態(tài)變化信息之前,還包括:
所述第一監(jiān)控代理單元接收所述第一被監(jiān)控對象的注冊請求,所述注冊請求中包括所述第一被監(jiān)控對象的標(biāo)識和所述第一被監(jiān)控對象在主備切換切換時的處理函數(shù);
所述第一監(jiān)控代理單元向所述第一監(jiān)控管理單元注冊所述第一被監(jiān)控對象;
所述第一監(jiān)控代理單元更新所述第一監(jiān)控對象的主備狀態(tài)之后,還包括:
所述第一監(jiān)控代理單元根據(jù)所述處理函數(shù)進(jìn)行相應(yīng)的處理。
可選地,所述第一監(jiān)控代理單元向所述第一監(jiān)控管理單元注冊所述第一被監(jiān)控對象,包括:
所述第一監(jiān)控管理單元在所述第一被監(jiān)控對象注冊成功后,為所述第一監(jiān)控代理單元分配同步接口;
所述第一監(jiān)控代理單元通過所述同步接口與所述第二被監(jiān)控對象進(jìn)行數(shù)據(jù)同步。
可選地,還包括:
所述第一監(jiān)控代理單元接收所述第一被監(jiān)控對象的狀態(tài)查詢請求,所述狀態(tài)查詢請求中攜帶所述第一被監(jiān)控對象的標(biāo)識;
所述第一監(jiān)控代理單元根據(jù)所述第一被監(jiān)控對象的標(biāo)識,獲取所述第一被監(jiān)控對象的狀態(tài)查詢結(jié)果并發(fā)送給所述第一被監(jiān)控對象。
可選地,所述第一監(jiān)控管理單元獲取所述第一被監(jiān)控對象的狀態(tài)變化信息,包括:
所述第一被監(jiān)控對象位于根系統(tǒng)下的虛擬容器中,則所述第一監(jiān)控管理單元通過讀取所述第一被監(jiān)控對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或,
所述第一被監(jiān)控對象包括位于根系統(tǒng)下的多個虛擬容器中的第一子對象,則所述第一監(jiān)控管理單元通過讀取各第一子對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或,
所述第一被監(jiān)控對象包括位于根系統(tǒng)下的虛擬容器中的第一子對象及位于根系統(tǒng)下的第二子對象,則所述第一監(jiān)控管理單元通過讀取各第一子對象的文件描述符及監(jiān)控所述第二子對象的狀態(tài)信息,來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息。
可選地,通過如下方式為所述虛擬容器中的第一被監(jiān)控對象設(shè)定文件描述符:
所述第一監(jiān)控管理單元切換命名空間,進(jìn)入所述虛擬容器;
為所述虛擬容器中的第一被監(jiān)控對象建立心跳報文的文件描述符、工作狀態(tài)的文件描述符、免費的ARP報文的文件描述符。
本發(fā)明實施例還提供一種實現(xiàn)高可用的裝置,包括:
第一監(jiān)控管理單元,用于獲取第一被監(jiān)控對象的狀態(tài)變化信息,將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控管理單元,并接收所述第二監(jiān)控管理單元發(fā)送的所述第二被監(jiān)控對象的狀態(tài)變化信息;
所述第一監(jiān)控管理單元,還用于在所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,確定所述第一被監(jiān)控對象發(fā)生主備狀態(tài)切換并通知第一監(jiān)控代理單元;
所述第一監(jiān)控代理單元更新所述第一監(jiān)控對象的主備狀態(tài)。
可選地,包括:
所述第一監(jiān)控代理單元,還用于接收所述第一被監(jiān)控對象的注冊請求,并向所述第一監(jiān)控管理單元注冊所述第一被監(jiān)控對象,所述注冊請求中包括所述第一被監(jiān)控對象的標(biāo)識和所述第一被監(jiān)控對象在主備切換時的處理函數(shù);
所述第一監(jiān)控代理單元,還用于在更新所述第一監(jiān)控對象的主備狀態(tài)后,根據(jù)所述處理函數(shù)進(jìn)行相應(yīng)的處理。
可選地,包括:
所述第一監(jiān)控管理單元,還用于在所述第一被監(jiān)控對象注冊成功后,為所述第一監(jiān)控代理單元分配同步接口;
所述第一監(jiān)控代理單元,還用于通過所述同步接口與所述第二被監(jiān)控對象進(jìn)行數(shù)據(jù)同步。
可選地,包括:
所述第一監(jiān)控代理單元,還用于接收所述第一被監(jiān)控對象的狀態(tài)查詢請求,所述狀態(tài)查詢請求中攜帶所述第一被監(jiān)控對象的標(biāo)識;
所述第一監(jiān)控代理單元,還用于根據(jù)所述第一被監(jiān)控對象的標(biāo)識,獲取所述第一被監(jiān)控對象的狀態(tài)查詢結(jié)果并發(fā)送給所述第一被監(jiān)控對象。
可選地,包括:
所述第一監(jiān)控管理單元,具體用于當(dāng)所述第一被監(jiān)控對象位于根系統(tǒng)下的虛擬容器中時,通過讀取所述第一被監(jiān)控對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或,
當(dāng)所述第一被監(jiān)控對象包括位于根系統(tǒng)下的多個虛擬容器中的第一子對象時,通過讀取各第一子對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或,
當(dāng)所述第一被監(jiān)控對象包括位于根系統(tǒng)下的虛擬容器中的第一子對象及位于根系統(tǒng)下的第二子對象時,通過讀取各第一子對象的文件描述符及監(jiān)控所述第二子對象的狀態(tài)信息,來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息。
可選地,包括,
所述第一監(jiān)控管理單元,具體用于通過切換命名空間,進(jìn)入所述虛擬容器;
為所述虛擬容器中的所述第一被監(jiān)控對象建立心跳報文的文件描述符、工作狀態(tài)的文件描述符、免費的ARP報文的文件描述符。
本發(fā)明實施例中監(jiān)控單元監(jiān)控各自對應(yīng)的被監(jiān)控單元,獲取被監(jiān)控單元的狀態(tài)變化信息,把本監(jiān)控單元的被監(jiān)控單元的狀態(tài)變化信息與同步到的其他監(jiān)控單元對應(yīng)的被監(jiān)控單元的狀態(tài)變化信息進(jìn)行對比判斷,完成主備切換;通過監(jiān)控單元對各自的被監(jiān)控單元的監(jiān)控、主備被監(jiān)控單元的狀態(tài)變化信息的交互及相同的主備切換條件控制各自的被監(jiān)控單元的執(zhí)行,提供了一種高可用的方式,對被監(jiān)控設(shè)備的軟件和硬件設(shè)備都無需進(jìn)行更改或更換,降低了運行成本,提高了工作效率。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種系統(tǒng)架構(gòu)示意圖;
圖2為本發(fā)明實施例提供的一種實現(xiàn)高可用的方法流程示意圖;
圖3為本發(fā)明實施例提供的另一種實現(xiàn)高可用的方法流程示意圖;
圖4為本發(fā)明實施例提供的一種當(dāng)被監(jiān)控對象為網(wǎng)卡時的軟件框架圖;
圖5為本發(fā)明實施例提供的一種實現(xiàn)高可用的裝置結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實施例僅僅是本發(fā)明一部份實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例可以適用于圖1所示的系統(tǒng)架構(gòu),圖1示例性給出了一種實現(xiàn)高可用的系統(tǒng)架構(gòu)示意圖;如圖1所示,包括互為主備的第一被監(jiān)控對象和第二被監(jiān)控對象,第一被監(jiān)控對象和第二被監(jiān)控對象中均有各自的監(jiān)控單元,分別為第一監(jiān)控單元和第二監(jiān)控單元;同時監(jiān)控單元中含有各種功能單元。各監(jiān)控單元監(jiān)控各自對應(yīng)的被監(jiān)控對象,獲取被監(jiān)控對象的狀態(tài)變化信息,把本監(jiān)控單元的被監(jiān)控對象的狀態(tài)變化信息與同步到的其他監(jiān)控單元對應(yīng)的被監(jiān)控單元的狀態(tài)變化信息進(jìn)行對比判斷,完成主備切換。以圖1為例,第一監(jiān)控單元包括第一監(jiān)控代理單元和第一監(jiān)控管理單元,第一監(jiān)控代理單元可位于第一監(jiān)控單元,以便獲取第一監(jiān)控單元的相關(guān)信息。在第一被監(jiān)控單元與第二被監(jiān)控單元之間通過鏈路監(jiān)控單元實現(xiàn)數(shù)據(jù)同步;第一監(jiān)控與第二監(jiān)控單元之間通過鏈路監(jiān)控單元實現(xiàn)監(jiān)控信息的傳遞,即高可用信息。當(dāng)然本發(fā)明實施例中也可以包括多個被監(jiān)控對象。具體來說被監(jiān)控對象可以是軟件應(yīng)用也可以是硬件設(shè)備,如APP、ATCA防火墻、網(wǎng)卡等。
基于圖1的系統(tǒng)架構(gòu),圖2示例性示出了本發(fā)明實施例提供的一種實現(xiàn)高可用的實施方法流程示意圖,包括以下步驟:
步驟201:第一監(jiān)控單元獲取第一被監(jiān)控對象的狀態(tài)變化信息;
步驟202:所述第一監(jiān)控單元將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控單元,并接收所述第二監(jiān)控單元發(fā)送的第二被監(jiān)控對象的狀態(tài)變化信息,所述第二被監(jiān)控對象為所述第一被監(jiān)控對象的主設(shè)備或從設(shè)備;
步驟203:所述第一監(jiān)控單元在所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,更新所述第一被監(jiān)控對象的主備狀態(tài);所述第一被監(jiān)控對象的主備切換條件和所述第二被監(jiān)控對象的主備切換條件是相同的。
如圖2所示,每個監(jiān)控單元可分為監(jiān)控代理單元和監(jiān)控管理單元。在步驟201和步驟202中,所述第一監(jiān)控單元包括第一監(jiān)控代理單元和第一監(jiān)控管理單元;所述第一監(jiān)控管理單元獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;所述第一監(jiān)控管理單元將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控管理單元,并接收所述第二監(jiān)控管理單元發(fā)送的所述第二被監(jiān)控對象的狀態(tài)變化信息;通過第一監(jiān)控管理單元和第二監(jiān)控管理單元消息的同步可以實現(xiàn)狀態(tài)信息的同步,及時判斷是否需要更新設(shè)備的主備狀態(tài),保證通訊的通暢。在步驟203中,所述第一監(jiān)控管理單元在所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,確定所述第一被監(jiān)控對象發(fā)生主備切換,在主設(shè)備需要更新主備狀態(tài)時,及時切換,保證任務(wù)得到及時的處理,保證了設(shè)備工作的效率;第一監(jiān)控管理單元將主備切換事件通知給所述第一監(jiān)控代理單元;所述第一監(jiān)控代理單元更新所述第一監(jiān)控對象的主備狀態(tài)。
可選的,所述第一監(jiān)控管理單元獲取所述第一被監(jiān)控對象的狀態(tài)變化信息之前,還包括:所述第一監(jiān)控代理單元接收所述第一被監(jiān)控對象的注冊請求,所述注冊請求中包括所述第一被監(jiān)控對象的標(biāo)識和所述第一被監(jiān)控對象在主備切換時的處理函數(shù),以使第一被監(jiān)控對象主備切換后執(zhí)行相應(yīng)的處理函數(shù);所述第一監(jiān)控代理單元向所述第一監(jiān)控管理單元注冊所述第一被監(jiān)控對象;在第一被監(jiān)控對象在監(jiān)控管理單元中注冊,有利于監(jiān)控管理單元直接獲取被監(jiān)控對象的狀態(tài)變化信息,方便進(jìn)行主備切換。上述注冊的處理函數(shù)可以根據(jù)實際場景的需要來設(shè)定。
可選的,所述第一監(jiān)控代理單元向所述第一監(jiān)控管理單元注冊所述第一被監(jiān)控對象,包括:所述第一監(jiān)控管理單元在所述第一被監(jiān)控對象注冊成功后,為所述第一監(jiān)控代理單元分配同步接口;所述第一監(jiān)控代理單元通過所述同步接口與所述第二被監(jiān)控對象進(jìn)行數(shù)據(jù)同步;通過接口可以進(jìn)行數(shù)據(jù)同步,保證主備設(shè)備的數(shù)據(jù)一致,有利于主備切換之后備設(shè)備順利完成工作任務(wù)。
可選的,所述第一監(jiān)控代理單元接收所述第一被監(jiān)控對象的狀態(tài)查詢請求,所述狀態(tài)查詢請求中攜帶所述第一被監(jiān)控對象的標(biāo)識;所述第一監(jiān)控代理單元根據(jù)所述第一被監(jiān)控對象的標(biāo)識,獲取所述第一被監(jiān)控對象的狀態(tài)查詢結(jié)果并發(fā)送給所述第一被監(jiān)控對象;第一被監(jiān)控對象查詢自身的高可用狀態(tài),方便第一被監(jiān)控對象進(jìn)行任務(wù)處理。
可選的,所述第一被監(jiān)控對象位于根系統(tǒng)下的虛擬容器中,則所述第一監(jiān)控管理單元通過讀取所述第一被監(jiān)控對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或所述第一被監(jiān)控對象包括位于根系統(tǒng)下的多個虛擬容器中的第一子對象,則所述第一監(jiān)控管理單元通過讀取各第一子對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或所述第一被監(jiān)控對象包括位于根系統(tǒng)下的虛擬容器中的第一子對象及位于根系統(tǒng)下的第二子對象,則所述第一監(jiān)控管理單元通過讀取各第一子對象的文件描述符及監(jiān)控所述第二子對象的狀態(tài)信息,來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;這樣做既可以不用在每個Linux虛擬容器中啟動一個高可用進(jìn)程,節(jié)約系統(tǒng)內(nèi)存資源,又可以靈活的進(jìn)行整個根系統(tǒng)或者單個Linux虛擬容器的主備切換。
可選的,第一監(jiān)控管理單元通過如下方式為所述虛擬容器中的第一被監(jiān)控對象設(shè)定文件描述符:所述第一監(jiān)控管理單元切換命名空間,進(jìn)入所述虛擬容器;為所述虛擬容器中的第一被監(jiān)控對象建立心跳報文的文件描述符、工作狀態(tài)的文件描述符、免費的ARP報文的文件描述符;通過讀取對應(yīng)的文件描述符即可得知Linux虛擬容器中的狀態(tài)變化信息,方便快捷,提高了工作效率。
圖3示例性示出了本發(fā)明實施例提供的另一種實現(xiàn)高可用的實施方法流程示意圖,包括以下步驟:
步驟301:第一監(jiān)控代理單元與第一監(jiān)控管理單元建立通道;
步驟302:第一監(jiān)控代理單元為第一被監(jiān)控對象提供一個接口,并通過心跳機制監(jiān)控第一被監(jiān)控對象的狀態(tài);
步驟303:第一被監(jiān)控對象調(diào)用第一監(jiān)控代理單元提供的接口,向第一監(jiān)控代理單元注冊自身在主備切換時的處理函數(shù),并向第一監(jiān)控代理單元注冊自身的唯一標(biāo)識和配置標(biāo)識;
步驟304:第一監(jiān)控代理單元計算所述第一被監(jiān)控對象的唯一標(biāo)識和配置標(biāo)識的哈希值(hash);
步驟305:向第一監(jiān)控管理單元注冊所述計算得到的第一被監(jiān)控對象的唯一標(biāo)識和配置標(biāo)識的哈希值(hash);比如,若被監(jiān)控對象為ATCA防火墻時,ATCA防火墻向監(jiān)控代理單元注冊自身的主備切換條件、自身的機框標(biāo)識、板卡標(biāo)識、槽位標(biāo)識和模塊標(biāo)識,監(jiān)控代理單元計算出所述ATCA防火墻的機框標(biāo)識、板卡標(biāo)識、槽位標(biāo)識和模塊標(biāo)識的哈希值,并用所述ATCA防火墻的機框標(biāo)識、板卡標(biāo)識、槽位標(biāo)識和模塊標(biāo)識的哈希值向監(jiān)控管理單元注冊所述ATCA防火墻;比如,當(dāng)被監(jiān)控對象為下一代防火墻/入侵防御系統(tǒng)時,下一代防火墻/入侵防御系統(tǒng)向第一監(jiān)控代理單元注冊自身的主備切換條件、自身的唯一標(biāo)識和配置標(biāo)識,監(jiān)控代理單元計算出所述下一代防火墻/入侵防御系統(tǒng)的唯一標(biāo)識和配置標(biāo)識的哈希值,并用所述下一代防火墻/入侵防御系統(tǒng)的唯一標(biāo)識和配置標(biāo)識的哈希值向監(jiān)控管理單元注冊所述下一代防火墻/入侵防御系統(tǒng);
步驟306:判斷注冊是否成功;如果注冊失敗,則進(jìn)行步驟307和208;如果注冊成功,則進(jìn)行步驟309;
步驟307:第一監(jiān)控管理單元向第一監(jiān)控代理單元返回注冊失敗信息;
步驟308:第一監(jiān)控代理單元告知第一被監(jiān)控對象注冊失敗,向第一被監(jiān)控對象發(fā)送系統(tǒng)告警日志;
步驟309:第一監(jiān)控管理單元分配給第一監(jiān)控代理單元一個端口,所述端口可供第一監(jiān)控代理單元與備機的第二監(jiān)控代理單元建立數(shù)據(jù)同步通道;
步驟310:第一監(jiān)控代理單元告知第一被監(jiān)控對象注冊成功;
步驟311:第一監(jiān)控管理單元獲取將所述第一被監(jiān)控對象的狀態(tài)變化信息;
步驟312:將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控管理單元,并接收所述第二監(jiān)控管理單元發(fā)送的所述第二被監(jiān)控對象的狀態(tài)變化信息,
步驟313:第一監(jiān)控管理單元在所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,確定所述第一被監(jiān)控對象發(fā)送主備切換;并執(zhí)行注冊的主備切換時需執(zhí)行的操作;;例如,此次預(yù)設(shè)的主備切換條件為被監(jiān)控對象的工作接口數(shù)多的為主設(shè)備,每一個被監(jiān)控對象的有5個工作接口,第一被監(jiān)控對象因為硬件損壞,有兩個接口不能工作,則第一被監(jiān)控對象的工作接口數(shù)為3,第二被監(jiān)控對象未出現(xiàn)任何問題,則第一監(jiān)控管理單元對比第一被監(jiān)控對象和第二被監(jiān)控對象的工作接口數(shù)之后把第一被監(jiān)控對象從主設(shè)備切換為備設(shè)備,第二監(jiān)控管理單元在對比第一被監(jiān)控對象和第二被監(jiān)控對象的工作接口數(shù)之后把第二被監(jiān)控對象從備設(shè)備切換為主設(shè)備;
步驟314:第一監(jiān)控管理單元將主備切換事件通知第一監(jiān)控代理單元;
步驟315:第一監(jiān)控代理單元根據(jù)注冊的處理函數(shù)進(jìn)行相應(yīng)的處理。
可選的,如果第一被監(jiān)控對象想要知道自身的主備狀態(tài),可以向第一監(jiān)控代理單元提供的接口進(jìn)行查詢;并且第一被監(jiān)控對象如果需要同步數(shù)據(jù),可以調(diào)用第一監(jiān)控代理單元提供的接口發(fā)送所述數(shù)據(jù)給第一監(jiān)控代理單元,第一監(jiān)控代理單元對所述數(shù)據(jù)進(jìn)行封裝加密,通過所述數(shù)據(jù)同步通道發(fā)送給備機的第二監(jiān)控代理單元,備機的第二監(jiān)控代理單元解密解封裝后,還原給備機的第二被監(jiān)控對象。
可選的,實施例中的備機可以有多個,多個備機與主機相連,參與主機預(yù)備的切換,進(jìn)一步保證工作任務(wù)可以順利完成,保證通訊的流暢。
可選的,當(dāng)?shù)谝槐槐O(jiān)控設(shè)備在接收到任務(wù)時,可以調(diào)用所述第一監(jiān)控代理單元提供的端口查詢自身的主備狀態(tài),如果查得自身狀態(tài)為主設(shè)備,則處理所述任務(wù),如果查得自身狀態(tài)為備設(shè)備,則放棄處理所述任務(wù)。
如圖4所示,本發(fā)明實施例提供了針對Linux虛擬容器(lxc)中的網(wǎng)卡為被監(jiān)控對象之一的示例。在根系統(tǒng)下或者運行在根系統(tǒng)中的Linux虛擬容器(lxc)中,根系統(tǒng)中有多個Linux虛擬容器,例如,根系統(tǒng)中含有Linux虛擬容器(lxc-1)、Linux虛擬容器(lxc-2)和Linux虛擬容器(lxc3),網(wǎng)卡eth0在Linux虛擬容器(lxc-1)中,網(wǎng)卡eth1和網(wǎng)卡eth2在Linux虛擬容器(lxc-2)中,網(wǎng)卡eth4在根系統(tǒng)中;如果網(wǎng)卡是運行在根系統(tǒng)下的,則所述網(wǎng)卡直接向監(jiān)控管理單元注冊;如果網(wǎng)卡是運行在根系統(tǒng)中的Linux虛擬容器中的,則監(jiān)控管理單元切換命名空間,逐個進(jìn)入Linux虛擬容器,針對每個在Linux虛擬容器網(wǎng)卡,建立三個接口(socket),分別用于①HA心跳報文的接收/發(fā)送,獲得相應(yīng)的文件描述符fd1;②網(wǎng)卡up/down狀態(tài)的監(jiān)控,獲得相應(yīng)的文件描述符fd1;③免費ARP報文的發(fā)送,獲得相應(yīng)的文件描述符fd1;監(jiān)控管理管理單元保存三個socket相應(yīng)的文件描述符fd1、fd2和fd3的信息;監(jiān)控管理單元直接通過讀寫所述保存的三個socket相應(yīng)的文件描述符fd1、fd2和fd3的信息,獲取每一個網(wǎng)卡的狀態(tài)變化信息,監(jiān)控管理單元收集每一個網(wǎng)卡的狀態(tài)變化信息后可以得知整個根系統(tǒng)的狀態(tài)變化信息。通過文件描述符的方式不用在每個Linux虛擬容器啟動一個監(jiān)控進(jìn)程,節(jié)約系統(tǒng)內(nèi)存資源,而且能過靈活的做整個根系統(tǒng)或者單個Linux虛擬容器的主備狀態(tài)切換。
在圖4所示的示例中,被監(jiān)控對象可以是單個虛擬容器中的網(wǎng)卡,例如,Linux虛擬容器1中網(wǎng)卡的為主單元,Linux虛擬容器2中網(wǎng)卡的為備單元,第一高可用管理單元對比Linux虛擬容器1和Linux虛擬容器2中網(wǎng)卡的狀態(tài)變化信息,如果Linux虛擬容器1和Linux虛擬容器2中網(wǎng)卡的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,則更新Linux虛擬容器1中網(wǎng)卡的主備狀態(tài)。被監(jiān)控單元也可以是多個虛擬容器中的網(wǎng)卡,也可以是包括虛擬容器中的網(wǎng)卡和位于根系統(tǒng)下的網(wǎng)卡等,實現(xiàn)原理是相同的。相應(yīng)的,在進(jìn)行主備切換時,第一監(jiān)控管理單元通過對比同一根系統(tǒng)下不同Linux虛擬容器的狀態(tài)變化信息后,完成單個Linux虛擬容器的主備切換;例如,lxc-1為主單元,lxc-2為備單元,第一高可用管理單元對比lxc-1和lxc-2的狀態(tài)變化信息,如果lxc-1和lxc-2的狀態(tài)變化信息滿足預(yù)設(shè)的主備切換條件時,則更新lxc-1的主備狀態(tài);或者第一監(jiān)控管理單元通過對比主機和備機根系統(tǒng)下網(wǎng)卡的工作數(shù)量,進(jìn)行主機和備機的主備切換,如果主機根系統(tǒng)下工作的網(wǎng)卡數(shù)量少于備機根系統(tǒng)下工作的網(wǎng)卡數(shù)量時,切換主機的狀態(tài)為備設(shè)備,切換備機的狀態(tài)為主設(shè)備。可選的,當(dāng)被監(jiān)控對象為虛擬防火墻時,也可通過與網(wǎng)卡一樣的方式,實現(xiàn)虛擬防火墻的主備狀態(tài)切換,實現(xiàn)虛擬防墻的高可用性,同時針對不同的網(wǎng)絡(luò)部署場景,提供不同的鏈路/網(wǎng)口監(jiān)控,例如,虛擬線高可用性單元,而成高可用性單元,虛擬路由冗余單元,以實現(xiàn)在不同網(wǎng)絡(luò)部署場景下不同設(shè)備的高可用性和同步功能。
針對上述方法流程,本發(fā)明實施例還提供一種實現(xiàn)高可用的裝置,該實現(xiàn)高可用的裝置的具體內(nèi)容可以參照上述方法實施。
基于相同構(gòu)思,圖5為本發(fā)明實施例提供的一種實現(xiàn)高可用的裝置結(jié)構(gòu)示意圖。如圖5所示,該實現(xiàn)高可用的裝置包括:
第一監(jiān)控管理單元501,用于獲取第一被監(jiān)控對象的狀態(tài)變化信息,將所述第一被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第二監(jiān)控管理單元,并接收所述第二監(jiān)控管理單元發(fā)送的所述第二被監(jiān)控對象的狀態(tài)變化信息;根據(jù)所述第一被監(jiān)控對象的狀態(tài)變化信息和所述第二被監(jiān)控對象的狀態(tài)變化信息確定是否發(fā)送主備切換。
第一監(jiān)控代理單元502,用于在接收到第一監(jiān)控管理單元501的主備切換通知時,更新所述第一被監(jiān)控對象的主備狀態(tài)。
第二監(jiān)控管理單元503,用于獲取所述第二被監(jiān)控對象的狀態(tài)變化信息,并將所述第二被監(jiān)控對象的狀態(tài)變化信息發(fā)送給第一監(jiān)控管理單元,并接收所述第一監(jiān)控管理單元發(fā)送的所述第一被監(jiān)控對象的狀態(tài)變化信息;并根據(jù)所述第二被監(jiān)控對象的狀態(tài)變化信息和所述第一被監(jiān)控對象的狀態(tài)變化信息確定是否滿足預(yù)設(shè)的主備切換條件。
第二監(jiān)控代理單元504,用于在接收到第二監(jiān)控管理單元503的主備切換通知時,更新所述第二被監(jiān)控對象的主備狀態(tài);在運行時與所述第一監(jiān)控代理單元進(jìn)行數(shù)據(jù)同步。
較佳地,所述第一監(jiān)控代理單元,還用于接收所述第一被監(jiān)控對象的注冊請求,并向所述第一監(jiān)控管理單元注冊所述第一被監(jiān)控對象,所述注冊請求中包括所述第一被監(jiān)控對象的標(biāo)識和所述第一被監(jiān)控對象在主備切換時的處理函數(shù)。
較佳地,所述第一監(jiān)控管理單元,還用于在所述第一被監(jiān)控對象注冊成功后,為所述第一監(jiān)控代理單元分配同步接口;
所述第一監(jiān)控代理單元,還用于通過所述同步接口與所述第二被監(jiān)控對象進(jìn)行數(shù)據(jù)同步。
較佳地,所述第一監(jiān)控代理單元,還用于接收所述第一被監(jiān)控對象的狀態(tài)查詢請求,所述狀態(tài)查詢請求中攜帶所述第一被監(jiān)控對象的標(biāo)識;
所述第一監(jiān)控代理單元,還用于根據(jù)所述第一被監(jiān)控對象的標(biāo)識,獲取所述第一被監(jiān)控對象的狀態(tài)查詢結(jié)果并發(fā)送給所述第一被監(jiān)控對象。
較佳地,所述第一監(jiān)控管理單元,具體用于當(dāng)所述第一被監(jiān)控對象位于根系統(tǒng)下的虛擬容器中時,通過讀取所述第一被監(jiān)控對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或,
當(dāng)所述第一被監(jiān)控對象包括位于根系統(tǒng)下的多個虛擬容器中的第一子對象時,通過讀取各第一子對象的文件描述符來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息;或,
當(dāng)所述第一被監(jiān)控對象包括位于根系統(tǒng)下的虛擬容器中的第一子對象及位于根系統(tǒng)下的第二子對象時,通過讀取各第一子對象的文件描述符及監(jiān)控所述第二子對象的狀態(tài)信息,來獲取所述第一被監(jiān)控對象的狀態(tài)變化信息。
較佳地,所述第一監(jiān)控管理單元,具體用于通過切換命名空間,進(jìn)入所述虛擬容器;為所述虛擬容器中的所述第一被監(jiān)控對象建立心跳報文的文件描述符、工作狀態(tài)的文件描述符、免費的ARP報文的文件描述符。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。