雙活集群系統(tǒng)中容災(zāi)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種雙活集群系統(tǒng)中容災(zāi)的方法及裝置。
【背景技術(shù)】
[0002]AA(Active-Active,雙活)主要應(yīng)用于雙活集群系統(tǒng)中數(shù)據(jù)的容災(zāi)備份,雙活集群系統(tǒng)包括主機(jī)集群、若干個(gè)存儲(chǔ)陣列和仲裁服務(wù)器。以若干個(gè)存儲(chǔ)陣列包括存儲(chǔ)陣列A、存儲(chǔ)陣列B為例,在雙活集群系統(tǒng)正常運(yùn)行時(shí),主機(jī)集群可同時(shí)對(duì)存儲(chǔ)陣列A、存儲(chǔ)陣列B下發(fā)讀寫(xiě)業(yè)務(wù),當(dāng)主機(jī)集群需要對(duì)存儲(chǔ)陣列A下發(fā)寫(xiě)業(yè)務(wù)時(shí),首先集群系統(tǒng)中主機(jī)向存儲(chǔ)陣列A下發(fā)寫(xiě)數(shù)據(jù),然后存儲(chǔ)陣列A將下發(fā)數(shù)據(jù)同時(shí)寫(xiě)到存儲(chǔ)陣列A和存儲(chǔ)陣列B,在存儲(chǔ)陣列A和存儲(chǔ)陣列B的寫(xiě)數(shù)據(jù)均完成后,存儲(chǔ)陣列A返回主機(jī)數(shù)據(jù)寫(xiě)完成,主機(jī)集群對(duì)存儲(chǔ)陣列B的寫(xiě)數(shù)據(jù)過(guò)程與上述基本流程類似。當(dāng)存儲(chǔ)陣列A和存儲(chǔ)陣列B腦裂,即存儲(chǔ)陣列A和存儲(chǔ)陣列B之間發(fā)生通信故障時(shí),雙活集群系統(tǒng)中的一個(gè)存儲(chǔ)陣列可以自動(dòng)接管業(yè)務(wù),避免出現(xiàn)業(yè)務(wù)宕機(jī)時(shí)間和數(shù)據(jù)丟失的情況,例如,主機(jī)對(duì)存儲(chǔ)陣列A下發(fā)數(shù)據(jù),存儲(chǔ)陣列A和存儲(chǔ)陣列B之間通信故障,存儲(chǔ)陣列A、存儲(chǔ)陣列B會(huì)分別在檢測(cè)到故障后向仲裁服務(wù)器發(fā)起仲裁請(qǐng)求,仲裁服務(wù)器根據(jù)邏輯判斷確定由存儲(chǔ)陣列A來(lái)接管業(yè)務(wù),并響應(yīng)存儲(chǔ)陣列A和存儲(chǔ)陣列B仲裁結(jié)果。雖然確定存儲(chǔ)陣列A接管業(yè)務(wù),但是主機(jī)對(duì)存儲(chǔ)陣列A下發(fā)數(shù)據(jù)會(huì)由于存儲(chǔ)陣列A和存儲(chǔ)陣列B之間故障沒(méi)有同步到存儲(chǔ)陣列B,若存儲(chǔ)陣列B在存儲(chǔ)陣列A接管業(yè)務(wù)時(shí)尚未與主機(jī)斷開(kāi)連接,那么主機(jī)向存儲(chǔ)陣列B讀取到的數(shù)據(jù)將為錯(cuò)誤的數(shù)據(jù),這就會(huì)造成l/0(lnput/0utput,輸入/輸出)隔離fencing。現(xiàn)有技術(shù)中為保證存儲(chǔ)陣列A和存儲(chǔ)陣列B數(shù)據(jù)一致性,通過(guò)軟件對(duì)存儲(chǔ)陣列A和存儲(chǔ)陣列B進(jìn)行協(xié)定,要求存儲(chǔ)陣列A在單邊提供服務(wù)之前存儲(chǔ)陣列B必須停止業(yè)務(wù),例如,協(xié)定存儲(chǔ)陣列A檢測(cè)到存儲(chǔ)陣列B無(wú)法通信時(shí),需要10秒后才能接收業(yè)務(wù),從而保證存儲(chǔ)陣列A在單邊提供服務(wù)之前存儲(chǔ)陣列B已經(jīng)停止業(yè)務(wù)。
[0003]現(xiàn)有技術(shù)中至少存在如下問(wèn)題:現(xiàn)有技術(shù)中的方法對(duì)存儲(chǔ)陣列A和存儲(chǔ)陣列B有嚴(yán)格的時(shí)序要求,而存儲(chǔ)陣列在實(shí)際運(yùn)行時(shí),會(huì)存在一些不可控的因數(shù),例如,系統(tǒng)CPU過(guò)高、網(wǎng)絡(luò)延遲等導(dǎo)致存儲(chǔ)陣列B無(wú)法及時(shí)停止業(yè)務(wù),從而導(dǎo)致時(shí)序混亂、存儲(chǔ)陣列之間數(shù)據(jù)不一致,造成I/O隔離。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實(shí)施例提供一種雙活集群系統(tǒng)中容災(zāi)的方法及裝置,能夠解決現(xiàn)有技術(shù)中由于存儲(chǔ)陣列在實(shí)際運(yùn)行時(shí)存在的不可控因數(shù),導(dǎo)致存儲(chǔ)陣列B無(wú)法及時(shí)停止業(yè)務(wù),從而導(dǎo)致時(shí)序混亂、存儲(chǔ)陣列之間數(shù)據(jù)不一致,造成I/O隔離問(wèn)題。
[0005]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0006]第一方面,本發(fā)明的實(shí)施例提供一種雙活集群系統(tǒng)中容災(zāi)的方法,用于主機(jī)集群和至少一對(duì)存儲(chǔ)陣列組成的系統(tǒng),所述主機(jī)集群包括仲裁主機(jī),所述仲裁主機(jī)中包括仲裁單元,所述仲裁主機(jī)為具有仲裁功能的應(yīng)用主機(jī),所述至少一對(duì)存儲(chǔ)陣列包括第一存儲(chǔ)陣列和第二存儲(chǔ)陣列,包括:
[0007]所述仲裁主機(jī)接收仲裁請(qǐng)求,所述仲裁請(qǐng)求為所述第一存儲(chǔ)陣列或所述第二存儲(chǔ)陣列檢測(cè)到對(duì)端存儲(chǔ)陣列故障時(shí)發(fā)送的;
[0008]所述仲裁主機(jī)暫停向所述第一存儲(chǔ)陣列和所述第二存儲(chǔ)陣列下發(fā)業(yè)務(wù);
[0009]所述仲裁主機(jī)根據(jù)邏輯判斷確定所述第一存儲(chǔ)陣列和所述第二存儲(chǔ)陣列中仲裁獲勝存儲(chǔ)陣列和仲裁失敗存儲(chǔ)陣列;
[0010]所述仲裁主機(jī)停止與所述仲裁失敗存儲(chǔ)陣列的業(yè)務(wù);
[0011]所述仲裁主機(jī)向所述仲裁獲勝存儲(chǔ)陣列發(fā)送仲裁獲勝信息,以便于所述仲裁獲勝存儲(chǔ)陣列將接收寫(xiě)數(shù)據(jù)方式由同步寫(xiě)本地和遠(yuǎn)端存儲(chǔ)陣列方式變更為只寫(xiě)本地方式;
[0012]所述仲裁主機(jī)恢復(fù)與所述仲裁獲勝存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0013]結(jié)合第一方面,在第一方面的第一種實(shí)施方式中,所述主機(jī)集群還包括至少一個(gè)應(yīng)用主機(jī);所述仲裁主機(jī)接收到仲裁請(qǐng)求包括:
[0014]所述仲裁主機(jī)接收所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的仲裁請(qǐng)求,所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的仲裁請(qǐng)求為所述至少一個(gè)應(yīng)用主機(jī)接收所述第一存儲(chǔ)陣列或所述第二存儲(chǔ)陣列發(fā)送的仲裁請(qǐng)求后轉(zhuǎn)發(fā)的。
[0015]結(jié)合第一方面的第一種實(shí)施方式,在第一方面的第二種實(shí)施方式中,在所述仲裁主機(jī)向所述仲裁獲勝存儲(chǔ)陣列發(fā)送通知之前,所述方法還包括:
[0016]所述仲裁主機(jī)向所述至少一個(gè)應(yīng)用主機(jī)發(fā)送第一指示,所述第一指示用于指示所述至少一個(gè)應(yīng)用主機(jī)暫停向所述第一存儲(chǔ)陣列和所述第二存儲(chǔ)陣列下發(fā)業(yè)務(wù);
[0017]所述仲裁主機(jī)接收所述至少一個(gè)應(yīng)用主機(jī)響應(yīng)信息,所述響應(yīng)信息用于表示所述至少一個(gè)應(yīng)用主機(jī)已經(jīng)停止與所述仲裁失敗存儲(chǔ)陣列的業(yè)務(wù);
[0018]在所述仲裁主機(jī)恢復(fù)與所述仲裁獲勝存儲(chǔ)陣列的下發(fā)業(yè)務(wù)之后,所述方法還包括:
[0019]所述仲裁主機(jī)向所述至少一個(gè)應(yīng)用主機(jī)發(fā)送第二指示,所述第二指示用于指示所述至少一個(gè)應(yīng)用主機(jī)與所述仲裁獲勝存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0020]結(jié)合第一方面,在第一方面的第三種實(shí)施方式中,在所述仲裁主機(jī)恢復(fù)所述主機(jī)集群與仲裁獲勝存儲(chǔ)陣列的下發(fā)業(yè)務(wù)之后,所述方法還包括:
[0021]接收所述仲裁失敗存儲(chǔ)陣列的業(yè)務(wù)恢復(fù)請(qǐng)求;
[0022]所述仲裁主機(jī)恢復(fù)所述仲裁失敗存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0023]結(jié)合第一方面的第三種實(shí)施方式,在第一方面的第四種實(shí)施方式中,所述主機(jī)集群還包括至少一個(gè)應(yīng)用主機(jī);所述接收所述仲裁失敗存儲(chǔ)陣列的業(yè)務(wù)恢復(fù)請(qǐng)求包括:
[0024]接收所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的業(yè)務(wù)恢復(fù)請(qǐng)求,所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的業(yè)務(wù)恢復(fù)請(qǐng)求為所述至少一個(gè)應(yīng)用主機(jī)接收所述仲裁失敗存儲(chǔ)陣列發(fā)送的業(yè)務(wù)恢復(fù)請(qǐng)求后發(fā)送的。
[0025]結(jié)合第一方面的第五種實(shí)施方式,在第一方面的第六種實(shí)施方式中,在所述仲裁主機(jī)恢復(fù)所述仲裁失敗存儲(chǔ)陣列的下發(fā)業(yè)務(wù)之后,所述方法還包括:
[0026]所述仲裁主機(jī)向所述至少一個(gè)應(yīng)用主機(jī)發(fā)送第三指示,所述第三指示用于指示所述至少一個(gè)應(yīng)用主機(jī)恢復(fù)所述仲裁失敗存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0027]第二方面,本發(fā)明的實(shí)施例提供一種雙活集群系統(tǒng)中容災(zāi)的裝置,所述裝置包括主機(jī)集群和至少一對(duì)存儲(chǔ)陣列,所述主機(jī)集群包括仲裁主機(jī),所述仲裁主機(jī)中包括仲裁單元,所述仲裁主機(jī)為具有仲裁功能的應(yīng)用主機(jī),所述至少一對(duì)存儲(chǔ)陣列包括第一存儲(chǔ)陣列和第二存儲(chǔ)陣列,所述仲裁主機(jī)還包括:接收單元、暫停單元、確定單元、停止單元、發(fā)送單元和恢復(fù)單元;
[0028]所述接收單元用于接收仲裁請(qǐng)求,所述仲裁請(qǐng)求為所述第一存儲(chǔ)陣列或所述第二存儲(chǔ)陣列檢測(cè)到對(duì)端存儲(chǔ)陣列故障時(shí)發(fā)送的;
[0029]所述暫停單元用于暫停向所述第一存儲(chǔ)陣列和所述第二存儲(chǔ)陣列下發(fā)業(yè)務(wù);
[0030]所述確定單元用于根據(jù)邏輯判斷確定所述第一存儲(chǔ)陣列和所述第二存儲(chǔ)陣列中仲裁獲勝存儲(chǔ)陣列和仲裁失敗存儲(chǔ)陣列;
[0031]所述停止單元用于停止與所述仲裁失敗存儲(chǔ)陣列的業(yè)務(wù);
[0032]所述發(fā)送單元用于向所述仲裁獲勝存儲(chǔ)陣列發(fā)送仲裁獲勝信息,以便于所述仲裁獲勝存儲(chǔ)陣列將接收寫(xiě)數(shù)據(jù)方式由同步寫(xiě)本地和遠(yuǎn)端存儲(chǔ)陣列方式變更為只寫(xiě)本地方式;
[0033]所述恢復(fù)單元用于恢復(fù)與所述仲裁獲勝存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0034]結(jié)合第二方面,在第二方面的第一種實(shí)施方式中,所述主機(jī)集群還包括至少一個(gè)應(yīng)用主機(jī);
[0035]所述接收單元具體用于接收所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的仲裁請(qǐng)求,所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的仲裁請(qǐng)求為所述至少一個(gè)應(yīng)用主機(jī)接收所述第一存儲(chǔ)陣列或所述第二存儲(chǔ)陣列發(fā)送的仲裁請(qǐng)求后轉(zhuǎn)發(fā)的。
[0036]結(jié)合第二方面的第一種實(shí)施方式,在第二方面的第二種實(shí)施方式中,所述發(fā)送單元還用于向所述至少一個(gè)應(yīng)用主機(jī)發(fā)送第一指示,所述第一指示用于指示所述至少一個(gè)應(yīng)用主機(jī)暫停向所述第一存儲(chǔ)陣列和所述第二存儲(chǔ)陣列下發(fā)業(yè)務(wù);
[0037]所述接收單元還用于接收所述至少一個(gè)應(yīng)用主機(jī)響應(yīng)信息,所述響應(yīng)信息用于表示所述至少一個(gè)應(yīng)用主機(jī)已經(jīng)停止向所述第二陣下發(fā)業(yè)務(wù);
[0038]所述發(fā)送單元還用于向所述至少一個(gè)應(yīng)用主機(jī)發(fā)送第二指示,所述第二指示用于指示所述至少一個(gè)應(yīng)用主機(jī)與所述仲裁獲勝存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0039]結(jié)合第二方面,在第二方面的第三種實(shí)施方式中,所述接收單元還用于接收所述仲裁失敗存儲(chǔ)陣列的業(yè)務(wù)恢復(fù)請(qǐng)求;
[0040]所述恢復(fù)單元還用于恢復(fù)所述仲裁失敗存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0041]結(jié)合第二方面的第三種實(shí)施方式,在第二方面的第四種實(shí)施方式中,所述主機(jī)集群還包括至少一個(gè)應(yīng)用主機(jī);
[0042]所述接收單元具體用于接收所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的業(yè)務(wù)恢復(fù)請(qǐng)求,所述至少一個(gè)應(yīng)用主機(jī)發(fā)送的業(yè)務(wù)恢復(fù)請(qǐng)求為所述至少一個(gè)應(yīng)用主機(jī)接收所述仲裁失敗存儲(chǔ)陣列發(fā)送的業(yè)務(wù)恢復(fù)請(qǐng)求后發(fā)送的。
[0043]結(jié)合第二方面的第四種實(shí)施方式,在第二方面的第五種實(shí)施方式中,所述發(fā)送單元還用于向所述至少一個(gè)應(yīng)用主機(jī)發(fā)送第三指示,所述第三指示用于指示所述至少一個(gè)應(yīng)用主機(jī)恢復(fù)所述仲裁失敗存儲(chǔ)陣列的下發(fā)業(yè)務(wù)。
[0044]本發(fā)明實(shí)施例提供的一種雙活集群系統(tǒng)中容災(zāi)的方法及裝置,本發(fā)明實(shí)施例中,仲裁主機(jī)為具有仲裁功能的應(yīng)用主機(jī),仲裁主機(jī)中設(shè)置仲裁單元單元,可以完成現(xiàn)有技術(shù)中仲裁功能服務(wù)器的仲裁功能,當(dāng)?shù)谝淮鎯?chǔ)陣列和第二存儲(chǔ)陣列檢測(cè)到對(duì)端存儲(chǔ)陣列故障時(shí)發(fā)送的時(shí),會(huì)