本發(fā)明屬于計(jì)算機(jī)集群技術(shù)領(lǐng)域,特別是涉及一種集群成員控制方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,由于集群系統(tǒng)具有強(qiáng)大的運(yùn)算能力和健壯的容錯(cuò)機(jī)制,因此逐步成為計(jì)算機(jī)行業(yè)的焦點(diǎn)。隨著單機(jī)的計(jì)算能力的增強(qiáng),每一臺(tái)主機(jī)對(duì)外提供的計(jì)算能力得到增強(qiáng),每一臺(tái)主機(jī)的使用率有所下降,因此提出了服務(wù)器虛擬化的要求,每臺(tái)宿主機(jī)運(yùn)行多個(gè)虛擬的操作系統(tǒng),對(duì)外提供多項(xiàng)服務(wù),因此集群的健壯性、HA特性和DRS特性成為吸引人們注意力的核心,從而,集群成員的管理控制成為一個(gè)重要的問(wèn)題,動(dòng)態(tài)的、自動(dòng)的、非依賴(lài)性的集群管理是當(dāng)前集群管理技術(shù)的核心。
現(xiàn)有技術(shù)中,一般通過(guò)一個(gè)key值和集群名稱(chēng)來(lái)判斷該節(jié)點(diǎn)是否屬于該集群,刪除掉的成員只是刪除掉key值和集群配置文件,而且一般是以網(wǎng)絡(luò)為媒介的集群管理網(wǎng)絡(luò),對(duì)于集群成員增刪時(shí)候容易出現(xiàn)故障。
技術(shù)實(shí)現(xiàn)要素:
為解決上述問(wèn)題,本發(fā)明提供了一種集群成員控制方法和裝置,能夠以配置文件的版本為中心,提供便捷的集群控制,保證集群成員的一致性,降低集群成員增刪時(shí)候的故障率。
本發(fā)明提供的一種集群成員控制方法,包括:
配置集群配置文件,其中包括集群成員列表;
將配置文件拷貝到所有的集群成員上,啟動(dòng)corosync集群;
添加新的集群成員時(shí),將新的集群成員的地址加入所述集群成員列表中,更新所述集群配置文件及其版本號(hào);
利用新添加的集群成員發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件。
優(yōu)選的,在上述集群成員控制方法中,還包括:
刪除舊的集群成員時(shí),修改其中一臺(tái)主機(jī)的集群配置文件,從所述集群成員列表中刪除該集群成員的信息,并增加所述集群配置文件的版本號(hào);
利用所述主機(jī)發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件。
優(yōu)選的,在上述集群成員控制方法中,在所述配置集群配置文件之前,還包括:
當(dāng)集群成員離線(xiàn)時(shí),利用投票方式判斷所述集群是否達(dá)到正常狀態(tài);
當(dāng)集群成員投票數(shù)量大于最大數(shù)量的二分之一時(shí),判斷所述集群處于正常狀態(tài),否則fence所述集群。
優(yōu)選的,在上述集群成員控制方法中,還包括:
當(dāng)離線(xiàn)的集群成員恢復(fù)時(shí),使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),利用所述集群成員列表中的IP信息,檢測(cè)所述離線(xiàn)的集群成員是否歸屬于所述集群,當(dāng)結(jié)果為是時(shí),則恢復(fù)所述集群成員。
本發(fā)明提供的一種集群成員控制裝置,包括:
配置單元,用于配置集群配置文件,其中包括集群成員列表;
啟動(dòng)單元,用于將配置文件拷貝到所有的集群成員上,啟動(dòng)corosync集群;
添加單元,用于添加新的集群成員時(shí),將新的集群成員的地址加入所述集群成員列表中,更新所述集群配置文件及其版本號(hào);
第一同步單元,用于利用新添加的集群成員發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件。
優(yōu)選的,在上述集群成員控制裝置中,還包括:
刪除單元,用于刪除舊的集群成員時(shí),修改其中一臺(tái)主機(jī)的集群配置文件,從所述集群成員列表中刪除該集群成員的信息,并增加所述集群配置文件的版本號(hào);
第二同步單元,用于利用所述主機(jī)發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件。
優(yōu)選的,在上述集群成員控制裝置中,還包括:
投票單元,用于當(dāng)集群成員離線(xiàn)時(shí),利用投票方式判斷所述集群是否達(dá)到正常狀態(tài);
判斷單元,用于當(dāng)集群成員投票數(shù)量大于最大數(shù)量的二分之一時(shí),判斷所述集群處于正常狀態(tài),否則fence所述集群。
優(yōu)選的,在上述集群成員控制裝置中,還包括:
恢復(fù)單元,用于當(dāng)離線(xiàn)的集群成員恢復(fù)時(shí),使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),利用所述集群成員列表中的IP信息,檢測(cè)所述離線(xiàn)的集群成員是否歸屬于所述集群,當(dāng)結(jié)果為是時(shí),則恢復(fù)所述集群成員。
通過(guò)上述描述可知,本發(fā)明提供的上述集群成員控制方法和裝置,由于該方法包括配置集群配置文件,其中包括集群成員列表;將配置文件拷貝到所有的集群成員上,啟動(dòng)corosync集群;添加新的集群成員時(shí),將新的集群成員的地址加入所述集群成員列表中,更新所述集群配置文件及其版本號(hào);利用新添加的集群成員發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件,因此能夠以配置文件的版本為中心,提供便捷的集群控制,保證集群成員的一致性,降低集群成員增刪時(shí)候的故障率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請(qǐng)實(shí)施例提供的第一種集群成員控制方法的示意圖;
圖2為本申請(qǐng)實(shí)施例提供的第一種集群成員控制裝置的示意圖。
具體實(shí)施方式
本發(fā)明的核心思想在于提供一種集群成員控制方法和裝置,能夠以配置文件的版本為中心,提供便捷的集群控制,保證集群成員的一致性,降低集群成員增刪時(shí)候的故障率。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本申請(qǐng)實(shí)施例提供的第一種集群成員控制方法如圖1所示,圖1為本申請(qǐng)實(shí)施例提供的第一種集群成員控制方法的示意圖,該方法包括如下步驟:
S1:配置集群配置文件,其中包括集群成員列表;
需要說(shuō)明的是,可以修改corosync集群管理軟件的Gather狀態(tài)的消息發(fā)送內(nèi)容和處理方式,并且提供重新組成集群成員管理的cli(command-line interface),重新編譯rpm包,在集群的節(jié)點(diǎn)上配置corosync集群管理軟件。所述集群成員列表(node list)包含集群成員的IP地址和node的id,提供集群成員管理的方案。
S2:將配置文件拷貝到所有的集群成員上,啟動(dòng)corosync集群;
需要說(shuō)明的是,corosync是一種高可用的同時(shí)支持冗余網(wǎng)絡(luò)配置的集群管理軟件,解決了集群成員離線(xiàn),沒(méi)辦法從集群中剔除該節(jié)點(diǎn)的問(wèn)題。利用這種軟件,每一次新節(jié)點(diǎn)的加入和舊節(jié)點(diǎn)的離開(kāi)都能同步集群中節(jié)點(diǎn)信息,保證集群中成員達(dá)到強(qiáng)一致性。而且,除了可以基于corosync的集群管理方案,還可以利用通過(guò)網(wǎng)絡(luò)管理集群節(jié)點(diǎn)的實(shí)現(xiàn)軟件。
S3:添加新的集群成員時(shí),將新的集群成員的地址加入所述集群成員列表中,更新所述集群配置文件及其版本號(hào);
需要說(shuō)明的是,corosync配置文件中存在一個(gè)config_version的值,可以利用該值控制corosync的版本資源,另外,新版版軟件中,該值為一個(gè)主鍵值,通過(guò)該值判斷該節(jié)點(diǎn)的配置文件的新舊程度,保證集群的唯一性和成員的唯一性。
S4:利用新添加的集群成員發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件。
需要說(shuō)明的是,corosync集群管理軟件提供了四種狀態(tài)Gather、Commit、Recovery狀態(tài)和Operational狀態(tài),Corosync的Gather狀態(tài)會(huì)讓歸屬于該集群的所有成員發(fā)送廣播消息,當(dāng)收到別的節(jié)點(diǎn)成員的廣播消息時(shí)候需要廣播出去,相當(dāng)于集群中所有的成員都知道對(duì)方的存在,并保存對(duì)方的信息,此時(shí)節(jié)點(diǎn)廣播消息時(shí)候攜帶該節(jié)點(diǎn)集群配置信息和集群配置文件的版本號(hào),以最新的版本號(hào)來(lái)確定保存何種集群配置文件,保證一致性,同時(shí)檢測(cè)自己是否在最新版本的集群中,具體的,Gather狀態(tài)時(shí)候收到所有節(jié)點(diǎn)發(fā)過(guò)來(lái)的攜帶集群配置文件信息的廣播消息,該廣播消息中包含集群成員的IP地址等信息,根據(jù)IP等信息判斷自己是否存在該集群中,如果在,集群成員的節(jié)點(diǎn)更新成功,如果不在,集群成員的節(jié)點(diǎn)刪除所有的配置信息,即該節(jié)點(diǎn)被刪除,不在集群中,恢復(fù)最初的配置信息。
該方法通過(guò)集群中的配置文件的版本號(hào)來(lái)控制集群成員,提供穩(wěn)定的和自動(dòng)化的集群控制方案,避免因?yàn)镃enter的離線(xiàn)和離線(xiàn)node節(jié)點(diǎn)重新上線(xiàn)造成的集群服務(wù)不穩(wěn)定。
通過(guò)上述描述可知,本申請(qǐng)實(shí)施例提供的上述第一種集群成員控制方法,由于包括配置集群配置文件,其中包括集群成員列表;將配置文件拷貝到所有的集群成員上,啟動(dòng)corosync集群;添加新的集群成員時(shí),將新的集群成員的地址加入所述集群成員列表中,更新所述集群配置文件及其版本號(hào);利用新添加的集群成員發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件,因此能夠以配置文件的版本為中心,提供便捷的集群控制,保證集群成員的一致性,降低集群成員增刪時(shí)候的故障率。
本申請(qǐng)實(shí)施例提供的第二種集群成員控制方法,是在上述第一種集群成員控制方法的基礎(chǔ)上,還包括如下技術(shù)特征:
刪除舊的集群成員時(shí),修改其中一臺(tái)主機(jī)的集群配置文件,從所述集群成員列表中刪除該集群成員的信息,并增加所述集群配置文件的版本號(hào);
利用所述主機(jī)發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件。
需要說(shuō)明的是,為了刪除舊的集群節(jié)點(diǎn),首先修改其中一臺(tái)主機(jī)的集群配置文件。包括增加配置文件的版本號(hào),刪掉節(jié)點(diǎn)列表中該成員的信息,停掉該刪除的節(jié)點(diǎn)中的集群管理軟件即可。
本申請(qǐng)實(shí)施例提供的第三種集群成員控制方法,是在上述第二種集群成員控制方法的基礎(chǔ)上,還包括如下技術(shù)特征:
在所述配置集群配置文件之前,還包括:
當(dāng)集群成員離線(xiàn)時(shí),利用投票方式判斷所述集群是否達(dá)到正常狀態(tài);
當(dāng)集群成員投票數(shù)量大于最大數(shù)量的二分之一時(shí),判斷所述集群處于正常狀態(tài),否則fence所述集群。
需要說(shuō)明的是,coroysnc提供quorum算法,corosync會(huì)根據(jù)node list的節(jié)點(diǎn)信息去判斷集群是否達(dá)到正常的狀態(tài),當(dāng)集群中節(jié)點(diǎn)離線(xiàn)時(shí)候通過(guò)vote方式來(lái)判斷集群是否達(dá)到正常的quorum;一個(gè)節(jié)點(diǎn)可以有一票,也可以有多票,當(dāng)集群成員投票數(shù)量大于最大數(shù)量的二分之一,則認(rèn)為該集群正常,否則fence集群,這種fence機(jī)制是RHCS的HA集群中預(yù)防集群出現(xiàn)腦裂之后節(jié)點(diǎn)爭(zhēng)搶文件系統(tǒng)的一種手段,具體操作為重啟或者關(guān)閉主機(jī)。
本申請(qǐng)實(shí)施例提供的第四種集群成員控制方法,是在上述第一種至第三種集群成員控制方法中任一種的基礎(chǔ)上,還包括如下技術(shù)特征:
當(dāng)離線(xiàn)的集群成員恢復(fù)時(shí),使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),利用所述集群成員列表中的IP信息,檢測(cè)所述離線(xiàn)的集群成員是否歸屬于所述集群,當(dāng)結(jié)果為是時(shí),則恢復(fù)所述集群成員。
需要說(shuō)明的是,舊成員一旦恢復(fù),會(huì)發(fā)送廣播消息,使集群處于Gather狀態(tài),在Gather狀態(tài)判斷成員是否是歸屬該集群,達(dá)到自動(dòng)控制的目的。
本申請(qǐng)實(shí)施例提供的第一種集群成員控制裝置如圖2所示,圖2為本申請(qǐng)實(shí)施例提供的第一種集群成員控制裝置的示意圖,該裝置包括:
配置單元201,用于配置集群配置文件,其中包括集群成員列表,需要說(shuō)明的是,可以修改corosync集群管理軟件的Gather狀態(tài)的消息發(fā)送內(nèi)容和處理方式,并且提供重新組成集群成員管理的cli(command-line interface),重新編譯rpm包,在集群的節(jié)點(diǎn)上配置corosync集群管理軟件。所述集群成員列表(node list)包含集群成員的IP地址和node的id,提供集群成員管理的方案;
啟動(dòng)單元202,用于將配置文件拷貝到所有的集群成員上,啟動(dòng)corosync集群,需要說(shuō)明的是,corosync是一種高可用的同時(shí)支持冗余網(wǎng)絡(luò)配置的集群管理軟件,解決了集群成員離線(xiàn),沒(méi)辦法從集群中剔除該節(jié)點(diǎn)的問(wèn)題。利用這種軟件,每一次新節(jié)點(diǎn)的加入和舊節(jié)點(diǎn)的離開(kāi)都能同步集群中節(jié)點(diǎn)信息,保證集群中成員達(dá)到強(qiáng)一致性。而且,除了可以基于corosync的集群管理方案,還可以利用通過(guò)網(wǎng)絡(luò)管理集群節(jié)點(diǎn)的實(shí)現(xiàn)軟件;
添加單元203,用于添加新的集群成員時(shí),將新的集群成員的地址加入所述集群成員列表中,更新所述集群配置文件及其版本號(hào),需要說(shuō)明的是,corosync配置文件中存在一個(gè)config_version的值,可以利用該值控制corosync的版本資源,另外,新版版軟件中,該值為一個(gè)主鍵值,通過(guò)該值判斷該節(jié)點(diǎn)的配置文件的新舊程度,保證集群的唯一性和成員的唯一性;
第一同步單元204,用于利用新添加的集群成員發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件,需要說(shuō)明的是,corosync集群管理軟件提供了四種狀態(tài)Gather、Commit、Recovery狀態(tài)和Operational狀態(tài),Corosync的Gather狀態(tài)會(huì)讓歸屬于該集群的所有成員發(fā)送廣播消息,當(dāng)收到別的節(jié)點(diǎn)成員的廣播消息時(shí)候需要廣播出去,相當(dāng)于集群中所有的成員都知道對(duì)方的存在,并保存對(duì)方的信息,此時(shí)節(jié)點(diǎn)廣播消息時(shí)候攜帶該節(jié)點(diǎn)集群配置信息和集群配置文件的版本號(hào),以最新的版本號(hào)來(lái)確定保存何種集群配置文件,保證一致性,同時(shí)檢測(cè)自己是否在最新版本的集群中,具體的,Gather狀態(tài)時(shí)候收到所有節(jié)點(diǎn)發(fā)過(guò)來(lái)的攜帶集群配置文件信息的廣播消息,該廣播消息中包含集群成員的IP地址等信息,根據(jù)IP等信息判斷自己是否存在該集群中,如果在,集群成員的節(jié)點(diǎn)更新成功,如果不在,集群成員的節(jié)點(diǎn)刪除所有的配置信息,即該節(jié)點(diǎn)被刪除,不在集群中,恢復(fù)最初的配置信息。
本申請(qǐng)實(shí)施例提供的第二種集群成員控制裝置,是在上述第一種集群成員控制裝置的基礎(chǔ)上,還包括如下技術(shù)特征:
刪除單元,用于刪除舊的集群成員時(shí),修改其中一臺(tái)主機(jī)的集群配置文件,從所述集群成員列表中刪除該集群成員的信息,并增加所述集群配置文件的版本號(hào);
第二同步單元,用于利用所述主機(jī)發(fā)出廣播,使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),基于所述版本號(hào)同步更新后的所述集群配置文件。
需要說(shuō)明的是,為了刪除舊的集群節(jié)點(diǎn),首先修改其中一臺(tái)主機(jī)的集群配置文件。包括增加配置文件的版本號(hào),刪掉節(jié)點(diǎn)列表中該成員的信息,停掉該刪除的節(jié)點(diǎn)中的集群管理軟件即可。
本申請(qǐng)實(shí)施例提供的第三種集群成員控制裝置,是在上述第二種集群成員控制裝置的基礎(chǔ)上,還包括如下技術(shù)特征:
投票單元,用于當(dāng)集群成員離線(xiàn)時(shí),利用投票方式判斷所述集群是否達(dá)到正常狀態(tài);
判斷單元,用于當(dāng)集群成員投票數(shù)量大于最大數(shù)量的二分之一時(shí),判斷所述集群處于正常狀態(tài),否則fence所述集群。
需要說(shuō)明的是,coroysnc提供quorum算法,corosync會(huì)根據(jù)node list的節(jié)點(diǎn)信息去判斷集群是否達(dá)到正常的狀態(tài),當(dāng)集群中節(jié)點(diǎn)離線(xiàn)時(shí)候通過(guò)vote方式來(lái)判斷集群是否達(dá)到正常的quorum;一個(gè)節(jié)點(diǎn)可以有一票,也可以有多票,當(dāng)集群成員投票數(shù)量大于最大數(shù)量的二分之一,則認(rèn)為該集群正常,否則fence集群,這種fence機(jī)制是RHCS的HA集群中預(yù)防集群出現(xiàn)腦裂之后節(jié)點(diǎn)爭(zhēng)搶文件系統(tǒng)的一種手段,具體操作為重啟或者關(guān)閉主機(jī)。
本申請(qǐng)實(shí)施例提供的第四種集群成員控制裝置,是在上述第一種至第三種集群成員控制裝置中任一種的基礎(chǔ)上,還包括如下技術(shù)特征:
恢復(fù)單元,用于當(dāng)離線(xiàn)的集群成員恢復(fù)時(shí),使所述集群內(nèi)的所有成員進(jìn)入Gather狀態(tài),利用所述集群成員列表中的IP信息,檢測(cè)所述離線(xiàn)的集群成員是否歸屬于所述集群,當(dāng)結(jié)果為是時(shí),則恢復(fù)所述集群成員。
需要說(shuō)明的是,舊成員一旦恢復(fù),會(huì)發(fā)送廣播消息,使集群處于Gather狀態(tài),在Gather狀態(tài)判斷成員是否是歸屬該集群,達(dá)到自動(dòng)控制的目的。
綜上所述,本申請(qǐng)實(shí)施例提供的上述方法和裝置,每一次配置集群,修改集群的配置文件,同時(shí)修改集群配置文件的版本號(hào),達(dá)到最新的配置文件使用最大的版本號(hào);修改corosync集群管理軟件的Gather狀態(tài)的處理方式,在發(fā)送的廣播中包含該集群的配置文件信息和集群成員信息,此廣播消息集群的每一個(gè)節(jié)點(diǎn)都會(huì)發(fā)出,并且每一個(gè)節(jié)點(diǎn)都會(huì)收到所有的集群成員的廣播消息,以此來(lái)達(dá)到集群成員的一致性的處理;通過(guò)所有成員的配置信息的同步處理,同時(shí)分離不在集群的成員,在每一次的成員的加入或者分離,都進(jìn)行一次數(shù)據(jù)同步,達(dá)到自動(dòng)的控制目的,降低了集群管理對(duì)于Center節(jié)點(diǎn)的依賴(lài),提高了集群的穩(wěn)定性和便于管理型。
對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。