本技術(shù)涉及集群應用故障遷移,特別是涉及一種支持多租戶的多集群應用故障遷移方法及系統(tǒng)。
背景技術(shù):
1、隨著容器化應用越來越普及,大多數(shù)企業(yè)采用kubernetes(google開源的一個容器編排引擎)作為容器編排工具來承載容器的運行。雖然kubernetes集群的高可用性,在一定程度上能夠保障集群上應用的可靠性,但仍不能避免因為網(wǎng)絡故障或主機故障造成的單集群故障。因此,為了使得企業(yè)應用能夠在任何情況下都能夠穩(wěn)定的對外提供服務,需要解決在單kubernetes集群故障的前提下應用故障遷移的問題,提升應用的可靠性。
2、目前,通常是采用多個kubernetes集群構(gòu)成多集群,當某個集群出現(xiàn)故障時,故障集群上運行的應用能夠遷移至其他健康集群。但是這種方法存在著以下問題:
3、(1)點對點遷移。只支持從a集群遷移至b集群,不能靈活調(diào)整,每次調(diào)整都需要重新配置策略。
4、(2)不支持按租戶遷移。目前的集群故障遷移方案中都是針對集群整體遷移或者單個應用的故障遷移,不涉及租戶的概念,不利用對租戶資源計量。
5、(3)一事一議,不支持復用。集群故障遷移配置在集群故障發(fā)生后,隨著集群環(huán)境的變化,需要重新調(diào)整策略從而適應新的集群環(huán)境,靈活性欠佳。
6、(4)配置復雜。為了實現(xiàn)對故障遷移過程的控制,需要用戶配置較多的參數(shù),增加了用戶使用難度和門檻,不利于整體策略的實施。
7、(5)資源浪費多。企業(yè)中既有的kubernetes集群有很多處于相對滿負荷運行的情況下,每個集群剩余了零散資源,卻無法有效利用;而為了滿足應用故障整體遷移,又需要建設新的備份集群容納待遷移應用,造成了大量的資源浪費,增加了企業(yè)成本。
8、綜上,如何提供一種可靈活調(diào)整、支持按租戶遷移和復用、配置簡單、資源利用率高的多集群應用故障遷移方法,是本領(lǐng)域亟待解決的一個技術(shù)問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)的目的是提供一種支持多租戶的多集群應用故障遷移方法及系統(tǒng),不僅支持按租戶遷移和復用,還提高了調(diào)整靈活性,降低了配置復雜度,提升了資源利用率。
2、為實現(xiàn)上述目的,本技術(shù)提供了如下方案:
3、第一方面,本技術(shù)提供了一種支持多租戶的多集群應用故障遷移方法,所述支持多租戶的多集群應用故障遷移方法包括:
4、利用kubernetes應用軟件,創(chuàng)建多集群環(huán)境;所述多集群環(huán)境包括一個管理集群和若干工作集群,所述管理集群用于管理各個所述工作集群,所述工作集群用于部署租戶。
5、針對所述多集群環(huán)境中每一所述工作集群,在所述工作集群內(nèi)創(chuàng)建租戶。每一所述工作集群包括若干所述租戶,所述租戶用于單工作集群場景下的資源隔離,以及多工作集群場景下的跨集群的資源隔離。
6、針對每一所述租戶,在所述租戶內(nèi)部署應用,并配置與所述應用相關(guān)聯(lián)的故障遷移策略;所述應用包括多個組件,所述故障遷移策略包括租戶信息和應用信息,所述應用信息包括應用權(quán)重和應用拓撲,所述應用權(quán)重用于表示所述應用在故障遷移時的優(yōu)先級,所述應用拓撲包括所述應用中每個所述組件在故障遷移后的最大副本數(shù)和最小副本數(shù)。
7、根據(jù)所述故障遷移策略和所述工作集群的狀態(tài)信息,生成資源配額信息表;所述工作集群的狀態(tài)信息包括所述工作集群中每個所述租戶的應用部署信息、應用資源占用信息以及所述工作集群資源整體占用信息,所述資源配額信息表包括每一所述工作集群的總資源信息、各個所述租戶的資源占用信息、資源使用最大值、資源平均占用值和工作集群狀態(tài)。
8、根據(jù)所述資源配額信息表,生成故障遷移方案;所述故障遷移方案用于在某一所述工作集群發(fā)生故障后提供技術(shù)指導,以便于將發(fā)生故障的所述工作集群中可被遷移的所述租戶、所述應用和所述組件遷移到其它未發(fā)生故障的所述工作集群并進行重新部署。
9、可選地,所述管理集群內(nèi)設置有多集群狀態(tài)收集模塊、故障遷移調(diào)度模塊和租戶管理模塊。
10、其中,所述多集群狀態(tài)收集模塊用于在所述管理集群中配置各個所述工作集群的訪問授權(quán)證書,以及通過各個所述工作集群的apiserver,獲取各個所述工作集群的狀態(tài)信息和資源信息。
11、所述故障遷移調(diào)度模塊用于從所述多集群狀態(tài)收集模塊中獲取各個所述工作集群的狀態(tài)信息和資源信息,并根據(jù)所述故障遷移策略,實時生成所述故障遷移方案,并執(zhí)行應用的故障遷移。
12、所述租戶管理模塊用于管理各個所述工作集群內(nèi)的租戶信息。
13、可選地,針對所述多集群環(huán)境中每一所述工作集群,在所述工作集群內(nèi)創(chuàng)建租戶,具體包括:
14、根據(jù)租戶配置信息,在各個所述工作集群內(nèi)創(chuàng)建對應的所述租戶;其中,所述租戶配置信息包括租戶名稱、資源總配額和分配額,所述資源總配額表示所述租戶在整個所述多集群環(huán)境中占有的總cpu額度、總內(nèi)存額度和總存儲額度,所述分配額表示所述租戶在各個所述工作集群分別占有的cpu額度、內(nèi)存額度和存儲額度。
15、為每一所述租戶生成一個識別碼,所述識別碼用于識別所述租戶的身份信息。
16、可選地,所述識別碼為uuid碼。
17、可選地,針對每一所述租戶,在所述租戶內(nèi)部署應用,并配置與所述應用相關(guān)聯(lián)的故障遷移策略,具體包括:
18、采用自動部署工具,對各個所述租戶分別進行應用部署,得到每一租戶對應的租戶信息以及應用信息。
19、根據(jù)每一租戶對應的租戶信息以及應用信息,確定所述故障遷移策略。
20、可選地,所述自動部署工具為argocd。
21、可選地,根據(jù)所述資源配額信息表,生成故障遷移方案,具體包括:
22、根據(jù)所述資源配額信息表,生成初步的故障遷移方案。
23、對所述初步的故障遷移方案進行優(yōu)化,得到優(yōu)化后的故障遷移方案;所述優(yōu)化后的故障遷移方案作為最終生成的所述故障遷移方案。
24、可選地,對所述初步的故障遷移方案進行優(yōu)化,得到優(yōu)化后的故障遷移方案,具體包括:
25、根據(jù)各個所述應用對應的應用權(quán)重,從所述租戶已滿足遷移條件的所有所述應用中確定應用權(quán)重最小的應用。
26、針對所述應用權(quán)重最小的應用中的各個組件,當某一所述組件的最大副本數(shù)大于1時,則從所述初步的故障遷移方案中將該組件的副本數(shù)減少1,按此副本數(shù)消減的方式,對所有應用中所有所述組件的可消減的副本數(shù)進行消減,直至將未滿足遷移條件的所述組件納入到所述初步的故障遷移方案中。
27、當所有可消減的副本數(shù)均消減完畢后,且仍存在不滿足遷移條件的所述應用及其所述組件時,將不滿足遷移條件的所述應用及其所述組件標記為無法遷移的類型,并從所述初步的故障遷移方案中刪除該應用已經(jīng)滿足遷移條件的其它組件,得到所述優(yōu)化后的故障遷移方案。
28、可選地,在對所述初步的故障遷移方案進行優(yōu)化,得到優(yōu)化后的故障遷移方案的步驟之后,所述支持多租戶的多集群應用故障遷移方法還包括:
29、在某一所述工作集群發(fā)生故障后,根據(jù)所述優(yōu)化后的故障遷移方案,對發(fā)生故障的所述工作集群中可被遷移的所述租戶、所述應用和所述組件進行故障遷移,并生成故障遷移報告;所述故障遷移報告包括發(fā)生故障的所述工作集群中每一所述租戶中成功遷移的應用的遷入工作集群信息和遷出工作集群信息,以及無法遷移的應用的名稱和組件。
30、第二方面,本技術(shù)提供了一種支持多租戶的多集群應用故障遷移系統(tǒng),所述支持多租戶的多集群應用故障遷移系統(tǒng)包括存儲器、處理器以及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序以實現(xiàn)第一方面所述的支持多租戶的多集群應用故障遷移方法。
31、根據(jù)本技術(shù)提供的具體實施例,本技術(shù)公開了以下技術(shù)效果:
32、本技術(shù)提供了一種支持多租戶的多集群應用故障遷移方法及系統(tǒng),通過創(chuàng)建多集群環(huán)境,并為租戶部署應用以及配置與應用相關(guān)聯(lián)的故障遷移策略,從而可以根據(jù)故障遷移策略和工作集群的狀態(tài)信息,生成資源配額信息表,進一步根據(jù)資源配額信息表即可自動化生成故障遷移方案,當某一工作集群發(fā)生故障后,可以按照該故障遷移方案,將發(fā)生故障的工作集群中可被遷移的租戶、應用和組件遷移、重新部署到其它正常的工作集群中,不僅支持按租戶遷移和復用,還可以根據(jù)故障遷移策略和工作集群的狀態(tài)信息,靈活調(diào)整資源配額信息表以及故障遷移方案,有效提高了調(diào)整的靈活性,降低了配置復雜度。并且,還可以使租戶、應用及其組件在多集群環(huán)境下自動實施故障遷移,能夠最大限度減少停止服務時間,進而有效提升資源的利用率。