本技術(shù)涉及大數(shù)據(jù)處理,特別是涉及一種集群升級(jí)控制方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
1、軟件系統(tǒng)中通常采用開源軟件實(shí)現(xiàn)緩存功能,如redis集群,redis集群是一種開源的內(nèi)存數(shù)據(jù)存儲(chǔ)系統(tǒng),具備持久化功能,可以廣泛應(yīng)用于緩存、消息隊(duì)列、分布式鎖等系統(tǒng)開發(fā)場景。為滿足使用需求,開源軟件通常會(huì)定期發(fā)布新版本以優(yōu)化升級(jí),但版本升級(jí)過程中一旦出現(xiàn)長時(shí)間停機(jī)、或升級(jí)異常的問題,便會(huì)影響軟件系統(tǒng)的正常運(yùn)行。
2、傳統(tǒng)技術(shù)中,為確保升級(jí)順利進(jìn)行,可以選擇停機(jī)升級(jí),在進(jìn)行數(shù)據(jù)備份后,停止軟件系統(tǒng)的運(yùn)行,再進(jìn)行舊版本卸載和新版本安裝,但停機(jī)升級(jí)會(huì)導(dǎo)致業(yè)務(wù)在升級(jí)過程中斷。若選擇不停機(jī)升級(jí),由于開源軟件(如redis集群)在軟件系統(tǒng)中通常以集群的形式部署,涉及眾多主從節(jié)點(diǎn),導(dǎo)致升級(jí)過程較為復(fù)雜,不停機(jī)升級(jí)時(shí)易發(fā)生異常,一旦發(fā)生異常,也會(huì)導(dǎo)致業(yè)務(wù)中斷。因此,傳統(tǒng)的集群升級(jí)方法,無法確保集群在升級(jí)過程的業(yè)務(wù)連續(xù)性。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問題,提供一種能夠確保集群在升級(jí)過程業(yè)務(wù)連續(xù)性的集群升級(jí)控制方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和計(jì)算機(jī)程序產(chǎn)品。
2、第一方面,本技術(shù)提供了一種集群升級(jí)控制方法,包括:當(dāng)接收到針對(duì)目標(biāo)集群的升級(jí)請求,獲取目標(biāo)集群中的至少一個(gè)主節(jié)點(diǎn)、以及每一主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)從節(jié)點(diǎn),從至少一個(gè)主節(jié)點(diǎn)中確定待升級(jí)的目標(biāo)主節(jié)點(diǎn),對(duì)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)進(jìn)行升級(jí);若目標(biāo)從節(jié)點(diǎn)中存在升級(jí)異常的異常從節(jié)點(diǎn),獲取異常從節(jié)點(diǎn)匹配的目標(biāo)候選節(jié)點(diǎn),將異常從節(jié)點(diǎn)替換為目標(biāo)候選節(jié)點(diǎn)并暫停升級(jí)進(jìn)程,直至檢測到存在已升級(jí)節(jié)點(diǎn)與目標(biāo)主節(jié)點(diǎn)連接,將目標(biāo)候選節(jié)點(diǎn)替換為已升級(jí)節(jié)點(diǎn),并恢復(fù)升級(jí)進(jìn)程;當(dāng)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)均已升級(jí),將目標(biāo)從節(jié)點(diǎn)中的任一個(gè)與目標(biāo)主節(jié)點(diǎn)進(jìn)行主從切換,對(duì)主從切換后的目標(biāo)主節(jié)點(diǎn)進(jìn)行升級(jí),將已升級(jí)的目標(biāo)主節(jié)點(diǎn)切換回主節(jié)點(diǎn)。
3、在其中一個(gè)實(shí)施例中,從至少一個(gè)主節(jié)點(diǎn)中確定待升級(jí)的目標(biāo)主節(jié)點(diǎn),對(duì)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)進(jìn)行升級(jí),包括:確定目標(biāo)集群的主節(jié)點(diǎn)升級(jí)順序;根據(jù)主節(jié)點(diǎn)升級(jí)順序,從至少一個(gè)主節(jié)點(diǎn)中確定待升級(jí)的目標(biāo)主節(jié)點(diǎn),并獲取目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)目標(biāo)從節(jié)點(diǎn)的從節(jié)點(diǎn)升級(jí)順序;根據(jù)從節(jié)點(diǎn)升級(jí)順序,對(duì)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)目標(biāo)從節(jié)點(diǎn)依次進(jìn)行升級(jí)。
4、在其中一個(gè)實(shí)施例中,根據(jù)從節(jié)點(diǎn)升級(jí)順序,對(duì)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)目標(biāo)從節(jié)點(diǎn)依次進(jìn)行升級(jí),包括:根據(jù)從節(jié)點(diǎn)升級(jí)順序,從至少一個(gè)目標(biāo)從節(jié)點(diǎn)中確定待升級(jí)的第一從節(jié)點(diǎn);將第一從節(jié)點(diǎn)與目標(biāo)集群隔離,對(duì)隔離后的第一從節(jié)點(diǎn)進(jìn)行升級(jí);當(dāng)?shù)谝粡墓?jié)點(diǎn)完成升級(jí),將已升級(jí)的第一從節(jié)點(diǎn),作為目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)接入目標(biāo)集群;根據(jù)從節(jié)點(diǎn)升級(jí)順序,從至少一個(gè)目標(biāo)從節(jié)點(diǎn)中確定待升級(jí)的第二從節(jié)點(diǎn),直至至少一個(gè)目標(biāo)從節(jié)點(diǎn)均完成升級(jí)。
5、在其中一個(gè)實(shí)施例中,將目標(biāo)從節(jié)點(diǎn)中的任一個(gè)與目標(biāo)主節(jié)點(diǎn)進(jìn)行主從切換,對(duì)主從切換后的目標(biāo)主節(jié)點(diǎn)進(jìn)行升級(jí),將已升級(jí)的目標(biāo)主節(jié)點(diǎn)切換回主節(jié)點(diǎn),包括:將已升級(jí)的目標(biāo)從節(jié)點(diǎn)中的任一個(gè)與目標(biāo)主節(jié)點(diǎn)進(jìn)行主從切換,并將主從切換后的目標(biāo)主節(jié)點(diǎn)作為臨時(shí)從節(jié)點(diǎn),將主從切換后的目標(biāo)從節(jié)點(diǎn)為臨時(shí)主節(jié)點(diǎn);將臨時(shí)從節(jié)點(diǎn)與目標(biāo)集群隔離,并對(duì)隔離后的臨時(shí)從節(jié)點(diǎn)進(jìn)行升級(jí);當(dāng)臨時(shí)從節(jié)點(diǎn)完成升級(jí),對(duì)臨時(shí)從節(jié)點(diǎn)和臨時(shí)主節(jié)點(diǎn)進(jìn)行主從切換,以使已升級(jí)的目標(biāo)主節(jié)點(diǎn)切換回主節(jié)點(diǎn)。
6、在其中一個(gè)實(shí)施例中,集群升級(jí)控制方法還包括:在目標(biāo)主節(jié)點(diǎn)完成升級(jí)的情況下,根據(jù)目標(biāo)集群的主節(jié)點(diǎn)升級(jí)順序,確定下一目標(biāo)主節(jié)點(diǎn);對(duì)下一目標(biāo)主節(jié)點(diǎn)、以及下一目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)目標(biāo)從節(jié)點(diǎn)進(jìn)行升級(jí),直至目標(biāo)集群中的待升級(jí)的節(jié)點(diǎn)均已升級(jí),得到升級(jí)后的目標(biāo)集群。
7、在其中一個(gè)實(shí)施例中,集群升級(jí)控制方法還包括:將接入目標(biāo)集群的候選節(jié)點(diǎn)與升級(jí)后的目標(biāo)集群隔離。
8、在其中一個(gè)實(shí)施例中,集群升級(jí)控制方法還包括:在控制目標(biāo)集群升級(jí)的過程中,向目標(biāo)集群發(fā)送測試數(shù)據(jù),以使目標(biāo)集群在升級(jí)過程處理測試數(shù)據(jù),并對(duì)目標(biāo)集群中每一節(jié)點(diǎn)因處理測試數(shù)據(jù)產(chǎn)生的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行監(jiān)測;在目標(biāo)集群完成升級(jí)后,比對(duì)目標(biāo)集群中各節(jié)點(diǎn)產(chǎn)生的節(jié)點(diǎn)數(shù)據(jù),得到數(shù)據(jù)一致性比對(duì)結(jié)果;根據(jù)數(shù)據(jù)一致性比對(duì)結(jié)果,確定針對(duì)目標(biāo)集群的升級(jí)過程的可用性檢測結(jié)果。
9、第二方面,本技術(shù)還提供了一種集群升級(jí)控制裝置,包括:待升級(jí)節(jié)點(diǎn)確定模塊,用于當(dāng)接收到針對(duì)目標(biāo)集群的升級(jí)請求,獲取目標(biāo)集群中的至少一個(gè)主節(jié)點(diǎn)、以及每一主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)從節(jié)點(diǎn),從至少一個(gè)主節(jié)點(diǎn)中確定待升級(jí)的目標(biāo)主節(jié)點(diǎn),對(duì)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)進(jìn)行升級(jí);異常從節(jié)點(diǎn)處理模塊,用于若目標(biāo)從節(jié)點(diǎn)中存在升級(jí)異常的異常從節(jié)點(diǎn),獲取異常從節(jié)點(diǎn)匹配的目標(biāo)候選節(jié)點(diǎn),將異常從節(jié)點(diǎn)替換為目標(biāo)候選節(jié)點(diǎn)并暫停升級(jí)進(jìn)程,直至檢測到存在已升級(jí)節(jié)點(diǎn)與目標(biāo)主節(jié)點(diǎn)連接,將目標(biāo)候選節(jié)點(diǎn)替換為已升級(jí)節(jié)點(diǎn),并恢復(fù)升級(jí)進(jìn)程;主節(jié)點(diǎn)升級(jí)處理模塊,用于當(dāng)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)均已升級(jí),將目標(biāo)從節(jié)點(diǎn)中的任一個(gè)與目標(biāo)主節(jié)點(diǎn)進(jìn)行主從切換,對(duì)主從切換后的目標(biāo)主節(jié)點(diǎn)進(jìn)行升級(jí),將已升級(jí)的目標(biāo)主節(jié)點(diǎn)切換回主節(jié)點(diǎn)。
10、在其中一個(gè)實(shí)施例中,待升級(jí)節(jié)點(diǎn)確定模塊包括:主節(jié)點(diǎn)順序確定單元,用于確定目標(biāo)集群的主節(jié)點(diǎn)升級(jí)順序;主節(jié)點(diǎn)升級(jí)處理單元,用于根據(jù)主節(jié)點(diǎn)升級(jí)順序,從至少一個(gè)主節(jié)點(diǎn)中確定待升級(jí)的目標(biāo)主節(jié)點(diǎn),并獲取目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)目標(biāo)從節(jié)點(diǎn)的從節(jié)點(diǎn)升級(jí)順序;從節(jié)點(diǎn)升級(jí)處理單元,用于根據(jù)從節(jié)點(diǎn)升級(jí)順序,對(duì)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)目標(biāo)從節(jié)點(diǎn)依次進(jìn)行升級(jí)。
11、在其中一個(gè)實(shí)施例中,主節(jié)點(diǎn)升級(jí)處理單元,具體用于:根據(jù)從節(jié)點(diǎn)升級(jí)順序,從至少一個(gè)目標(biāo)從節(jié)點(diǎn)中確定待升級(jí)的第一從節(jié)點(diǎn);將第一從節(jié)點(diǎn)與目標(biāo)集群隔離,對(duì)隔離后的第一從節(jié)點(diǎn)進(jìn)行升級(jí);當(dāng)?shù)谝粡墓?jié)點(diǎn)完成升級(jí),將已升級(jí)的第一從節(jié)點(diǎn),作為目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)接入目標(biāo)集群;根據(jù)從節(jié)點(diǎn)升級(jí)順序,從至少一個(gè)目標(biāo)從節(jié)點(diǎn)中確定待升級(jí)的第二從節(jié)點(diǎn),直至至少一個(gè)目標(biāo)從節(jié)點(diǎn)均完成升級(jí)。
12、在其中一個(gè)實(shí)施例中,主節(jié)點(diǎn)升級(jí)處理模塊包括:第一主從切換單元,用于將已升級(jí)的目標(biāo)從節(jié)點(diǎn)中的任一個(gè)與目標(biāo)主節(jié)點(diǎn)進(jìn)行主從切換,并將主從切換后的目標(biāo)主節(jié)點(diǎn)作為臨時(shí)從節(jié)點(diǎn),將主從切換后的目標(biāo)從節(jié)點(diǎn)為臨時(shí)主節(jié)點(diǎn);從節(jié)點(diǎn)隔離升級(jí)單元,用于將臨時(shí)從節(jié)點(diǎn)與目標(biāo)集群隔離,并對(duì)隔離后的臨時(shí)從節(jié)點(diǎn)進(jìn)行升級(jí);第二主從切換單元,用于當(dāng)臨時(shí)從節(jié)點(diǎn)完成升級(jí),對(duì)臨時(shí)從節(jié)點(diǎn)和臨時(shí)主節(jié)點(diǎn)進(jìn)行主從切換,以使已升級(jí)的目標(biāo)主節(jié)點(diǎn)切換回主節(jié)點(diǎn)。
13、在其中一個(gè)實(shí)施例中,集群升級(jí)控制裝置還包括:下一主節(jié)點(diǎn)確定模塊,用于在目標(biāo)主節(jié)點(diǎn)完成升級(jí)的情況下,根據(jù)目標(biāo)集群的主節(jié)點(diǎn)升級(jí)順序,確定下一目標(biāo)主節(jié)點(diǎn);下一主節(jié)點(diǎn)升級(jí)模塊,用于對(duì)下一目標(biāo)主節(jié)點(diǎn)、以及下一目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)目標(biāo)從節(jié)點(diǎn)進(jìn)行升級(jí),直至目標(biāo)集群中的待升級(jí)的節(jié)點(diǎn)均已升級(jí),得到升級(jí)后的目標(biāo)集群。
14、在其中一個(gè)實(shí)施例中,集群升級(jí)控制裝置還包括:候選節(jié)點(diǎn)隔離模塊,用于將接入目標(biāo)集群的候選節(jié)點(diǎn)與升級(jí)后的目標(biāo)集群隔離。
15、在其中一個(gè)實(shí)施例中,集群升級(jí)控制裝置還包括:集群測試模塊,用于在控制目標(biāo)集群升級(jí)的過程中,向目標(biāo)集群發(fā)送測試數(shù)據(jù),以使目標(biāo)集群在升級(jí)過程處理測試數(shù)據(jù),并對(duì)目標(biāo)集群中每一節(jié)點(diǎn)因處理測試數(shù)據(jù)產(chǎn)生的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行監(jiān)測;一致性比對(duì)模塊,用于在目標(biāo)集群完成升級(jí)后,比對(duì)目標(biāo)集群中各節(jié)點(diǎn)產(chǎn)生的節(jié)點(diǎn)數(shù)據(jù),得到數(shù)據(jù)一致性比對(duì)結(jié)果;檢測結(jié)果確定模塊,用于根據(jù)數(shù)據(jù)一致性比對(duì)結(jié)果,確定針對(duì)目標(biāo)集群的升級(jí)過程的可用性檢測結(jié)果。
16、第三方面,本技術(shù)還提供了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,處理器執(zhí)行計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述集群升級(jí)控制方法。
17、第四方面,本技術(shù)還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述集群升級(jí)控制方法。
18、第五方面,本技術(shù)還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述集群升級(jí)控制方法。
19、上述集群升級(jí)控制方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和計(jì)算機(jī)程序產(chǎn)品,先獲取升級(jí)請求所指示目標(biāo)集群中的至少一個(gè)主節(jié)點(diǎn)、以及每一主節(jié)點(diǎn)關(guān)聯(lián)的至少一個(gè)從節(jié)點(diǎn),并從至少一個(gè)主節(jié)點(diǎn)中確定待升級(jí)的目標(biāo)主節(jié)點(diǎn),然后,對(duì)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)進(jìn)行升級(jí)。若目標(biāo)從節(jié)點(diǎn)中存在升級(jí)異常的異常從節(jié)點(diǎn),便獲取異常從節(jié)點(diǎn)匹配的目標(biāo)候選節(jié)點(diǎn),將異常從節(jié)點(diǎn)替換為目標(biāo)候選節(jié)點(diǎn)并暫停升級(jí)進(jìn)程,使得目標(biāo)候選節(jié)點(diǎn)代替異常從節(jié)點(diǎn)維持目標(biāo)集群的正常運(yùn)行,確保升級(jí)過程的業(yè)務(wù)連續(xù),直至檢測到存在已升級(jí)節(jié)點(diǎn)與目標(biāo)主節(jié)點(diǎn)連接,再將目標(biāo)候選節(jié)點(diǎn)替換為已升級(jí)節(jié)點(diǎn),以將目標(biāo)候選節(jié)點(diǎn)替換掉,恢復(fù)目標(biāo)集群的原架構(gòu),并恢復(fù)升級(jí)進(jìn)程。當(dāng)目標(biāo)主節(jié)點(diǎn)關(guān)聯(lián)的目標(biāo)從節(jié)點(diǎn)均已升級(jí),可將目標(biāo)從節(jié)點(diǎn)中的任一個(gè)與目標(biāo)主節(jié)點(diǎn)進(jìn)行主從切換,使得已升級(jí)的目標(biāo)從節(jié)點(diǎn)代替目標(biāo)主節(jié)點(diǎn)維持目標(biāo)集群的正常運(yùn)行,確保升級(jí)過程的業(yè)務(wù)連續(xù),再對(duì)主從切換后的目標(biāo)主節(jié)點(diǎn)進(jìn)行升級(jí),將已升級(jí)的目標(biāo)主節(jié)點(diǎn)切換回主節(jié)點(diǎn)。采用上述方法,可以通過目標(biāo)候選節(jié)點(diǎn)的替換、以及目標(biāo)主節(jié)點(diǎn)與目標(biāo)從節(jié)點(diǎn)之間的主從切換,確保目標(biāo)集群在升級(jí)過程的業(yè)務(wù)連續(xù)性。