專利名稱:一種集群系統(tǒng)中的隔離方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集群技術(shù),特別涉及一種集群系統(tǒng)中的隔離(fence)方法和裝置。
背景技術(shù):
高可用性(High Availability)集群是共同為客戶機(jī)提供網(wǎng)絡(luò)資源的一組計算機(jī)系統(tǒng),提供透明的冗余處理能力,從而實(shí)現(xiàn)不間斷應(yīng)用的目標(biāo)。其中每一臺提供服務(wù)的計算機(jī)稱為物理主機(jī)節(jié)點(diǎn)(Node)。當(dāng)一個物理主機(jī)節(jié)點(diǎn)不可用或者不能處理客戶的請求時,該請求會及時轉(zhuǎn)到另外的可用物理主機(jī)節(jié)點(diǎn)來處理,而這些對于客戶端是透明的,客戶不必關(guān)心要使用資源的具體位置,集群系統(tǒng)會自動完成。在高可用性集群環(huán)境下(比如基于Heartbeat或Corosync的集群系統(tǒng)),需要保護(hù)共享數(shù)據(jù)的安全性和一致性,否則,將會導(dǎo)致嚴(yán)重的問題,甚至?xí)?dǎo)致系統(tǒng)崩潰。例如,假設(shè)集群中某個物理主機(jī)節(jié)點(diǎn)X上的應(yīng)用程序(例如虛擬機(jī))發(fā)生異常,處于不可用狀態(tài),集群管理將會檢測到該異常,并在另一個物理主機(jī)節(jié)點(diǎn)Y上啟動該應(yīng)用程序,如果此時物理主機(jī)節(jié)點(diǎn)X上的該應(yīng)用程序未被及時隔離,則兩個應(yīng)用程序?qū)L問相同的資源,例如共享數(shù)據(jù)庫或共享磁盤,如果發(fā)生寫操作,則將會導(dǎo)致數(shù)據(jù)不一致。因此,為了保護(hù)共享數(shù)據(jù)的安全性和一致性,避免同一個資源(比如共享磁盤)同時被多個節(jié)點(diǎn)、已經(jīng)失效的節(jié)點(diǎn)、 或應(yīng)用程序所訪問,導(dǎo)致數(shù)據(jù)不一致,就需要由集群管理及時地隔離掉異?;蚴У墓?jié)點(diǎn)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種集群系統(tǒng)中的隔離方法,該方法能夠保證共享數(shù)據(jù)的安全性和一致性。為了達(dá)到上述目的,本發(fā)明提供了一種集群系統(tǒng)中的隔離方法,該方法包括接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令;所述fence操作命令中攜帶目標(biāo)物理主機(jī)節(jié)點(diǎn)信息和目標(biāo)應(yīng)用程序信息;如果可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則確定該 fence操作命令對應(yīng)的fence設(shè)備,通過該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,用以通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。本發(fā)明還提出了一種集群系統(tǒng)中的隔離裝置,應(yīng)用于集群中的物理主機(jī)節(jié)點(diǎn)上, 該裝置包括控制單元,接口單元、一個或多個fence設(shè)備;所述控制單元,用于接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令,并判斷是否可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令;所述fence操作命令中攜帶目標(biāo)物理主機(jī)節(jié)點(diǎn)信息和目標(biāo)應(yīng)用程序信息;用于如果判斷確定可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則確定該fence操作命令對應(yīng)的fence設(shè)備,通過接口單元提供的該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,用以通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作;所述接口單元,用于提供fence設(shè)備對應(yīng)的接口給控制單元;
所述fence設(shè)備,用于被控制單元觸發(fā)后,執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。由上面的技術(shù)方案可知,本發(fā)明中,當(dāng)前物理主機(jī)節(jié)點(diǎn)接收集群主管理節(jié)點(diǎn)的 fence操作命令,根據(jù)該fence操作命令中攜帶的目標(biāo)物理主機(jī)節(jié)點(diǎn)信息以及目標(biāo)應(yīng)用程序信息遠(yuǎn)程執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的隔離操作。本發(fā)明針對物理主機(jī)節(jié)點(diǎn)上具體的應(yīng)用程序(包括虛擬機(jī))進(jìn)行隔離,保證共享數(shù)據(jù)的安全性和一致性,并且不會影響到物理主機(jī)節(jié)點(diǎn)上運(yùn)行的其他應(yīng)用程序,能夠有效提高集群系統(tǒng)的性能和穩(wěn)定性, 減少集群系統(tǒng)的運(yùn)行維護(hù)開銷。
圖1是本發(fā)明實(shí)施例集群系統(tǒng)中的隔離方法流程圖;圖2為集群的組網(wǎng)示意圖;圖3是本發(fā)明實(shí)施例基于圖2所示的集群中的虛擬機(jī)的隔離方法流程示意圖;圖4是本發(fā)明實(shí)施例集群系統(tǒng)中的隔離裝置。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖并舉實(shí)施例, 對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。參見圖1,圖1是本發(fā)明實(shí)施例集群系統(tǒng)中的隔離方法流程圖,包括以下步驟步驟101、接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令;所述fence操作命令中攜帶目標(biāo)物理主機(jī)節(jié)點(diǎn)信息和目標(biāo)應(yīng)用程序信息;這里,所述的集群主管理節(jié)點(diǎn)是由集群內(nèi)所有物理主機(jī)節(jié)點(diǎn)投票選舉生成,稱為 DC (Designated Coordinator),是集群的管理中心節(jié)點(diǎn)。所述的目標(biāo)物理主機(jī)節(jié)點(diǎn)信息可以是目標(biāo)物理主機(jī)名稱,所述目標(biāo)應(yīng)用程序信息可以是目標(biāo)應(yīng)用程序名稱。本實(shí)施例中,所述的應(yīng)用程序可以是虛擬機(jī)。所述的fence操作命令可以是啟動 (on)、關(guān)閉(off)、重啟(reset)、或獲取狀態(tài)(getstate)。步驟102、判斷是否可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,如果是,則執(zhí)行步驟103,否則,執(zhí)行步驟104 ;本步驟中,判斷是否可以在本地執(zhí)行fence操作命令的方法與現(xiàn)有技術(shù)相同,例如,可以判斷fence操作命令中攜帶的目標(biāo)物理主機(jī)節(jié)點(diǎn)不是當(dāng)前目標(biāo)物理主機(jī)節(jié)點(diǎn),且目標(biāo)物理主機(jī)是可達(dá)的,且本地有可以fence目標(biāo)物理主機(jī)的fence設(shè)備且狀態(tài)是正常的, 則可以在本地執(zhí)行該fence操作命令。步驟103、確定該fence操作命令對應(yīng)的fence設(shè)備,通過該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,用以通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。這里,每個物理主機(jī)節(jié)點(diǎn)上可能存在多個不同的fence設(shè)備,其中,可能會存在多個fence設(shè)備同時具備完成同一個fence操作命令的能力。在實(shí)際應(yīng)用中,需要為fence設(shè)備配置fence目標(biāo)信息,fence設(shè)備只能對fence 目標(biāo)執(zhí)行fence操作。本實(shí)施例中,根據(jù)fence設(shè)備的fence目標(biāo)信息的不同,確定fence操作命令對應(yīng)的fence設(shè)備的方法也不相同。例如,如果fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn),則確定fence操作命令對應(yīng)的fence 設(shè)備的方法具體可以為查找所有配置了該fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn),且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備;如果fence目標(biāo)信息包括目標(biāo)應(yīng)用程序,則確定fence操作命令對應(yīng)的fence設(shè)備的方法具體可以為查找所有配置了該fence操作命令的目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備;如果fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序;則確定fence操作命令對應(yīng)的fence設(shè)備的方法具體可以為查找所有配置了該fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備;本步驟中,當(dāng)判定可以在本地執(zhí)行該fence操作命令后,則可以先根據(jù)該fence操作命令確定對應(yīng)fence設(shè)備,再通過該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備;這里,所述的fence設(shè)備可以是一段shell腳本,通過該shell腳本,可以對目標(biāo)物理主機(jī)節(jié)點(diǎn)遠(yuǎn)程執(zhí)行針對目標(biāo)應(yīng)用程序的fence操作命令。當(dāng)判定不可以在本地執(zhí)行該fence操作命令后,可以將該fence操作命令發(fā)送到集群系統(tǒng)中的其他物理主機(jī)節(jié)點(diǎn),使得其他物理主機(jī)節(jié)點(diǎn)可以完成該fence操作命令,因此,步驟102中判定不能在本地執(zhí)行該fence操作命令時,可以繼續(xù)執(zhí)行步驟104。步驟104、將該fence操作命令發(fā)送到集群中的所有其他物理主機(jī)節(jié)點(diǎn)。將該fence操作命令發(fā)送到集群中的所有其他物理主機(jī)節(jié)點(diǎn)的具體方法可以是 將該fence操作命令攜帶在集群消息中以組播消息方式發(fā)送到集群中的所有其他物理主機(jī)節(jié)點(diǎn)。在本步驟中,當(dāng)判定不能在本地執(zhí)行該fence操作命令時,可以將該fence操作命令發(fā)送到集群系統(tǒng)中所有其他物理主機(jī)節(jié)點(diǎn)。反過來,當(dāng)前物理主機(jī)節(jié)點(diǎn)也可以接收到其他物理主機(jī)節(jié)點(diǎn)發(fā)送的fence操作命令。如果當(dāng)前物理主機(jī)節(jié)點(diǎn)接收到其他物理主機(jī)節(jié)點(diǎn)發(fā)送的fence操作命令,則可以判斷是否可以在本地執(zhí)行該fence操作命令,如果可以在本地執(zhí)行,則只需按照和步驟103 相同的方法,先根據(jù)該fence操作命令確定對應(yīng)的fence設(shè)備,再通過該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,最后通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序進(jìn)行fence操作;如果不可以在本地執(zhí)行,則丟棄該fence操作命令。這里,所述的其他物理主機(jī)節(jié)點(diǎn)不包括集群主管理節(jié)點(diǎn)?,F(xiàn)有技術(shù)中,可以通過ST0NITH技術(shù)實(shí)現(xiàn)對集群中物理主機(jī)節(jié)點(diǎn)的隔離,在本實(shí)施例中,也可以采用ST0NITH技術(shù)實(shí)現(xiàn)物理主機(jī)節(jié)點(diǎn)中的應(yīng)用程序的隔離。當(dāng)采用ST0NITH技術(shù)實(shí)現(xiàn)物理主機(jī)節(jié)點(diǎn)中的應(yīng)用程序的隔離時,stonithd守護(hù)進(jìn)程負(fù)責(zé)接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令,以及其他物理主機(jī)節(jié)點(diǎn)發(fā)送的攜帶fence操作命令的集群消息,fence操作命令對應(yīng)的接口是stonith插件;隔離設(shè)備是 stonith 設(shè)備。圖1所示本發(fā)明實(shí)施例中,所述應(yīng)用程序可以是虛擬機(jī)。當(dāng)所述應(yīng)用程序是指虛擬機(jī)時,可以基于Iibvirt實(shí)現(xiàn)對目標(biāo)物理主機(jī)上的目標(biāo)應(yīng)用程序的fence操作。fence設(shè)備可以通過virsh命令行工具對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序遠(yuǎn)程執(zhí)行fence操作命令,目標(biāo)物理主機(jī)節(jié)點(diǎn)上的Iibvirt根據(jù)該fence操作命令對目標(biāo)應(yīng)用程序執(zhí)行fence操作。下面以采用ST0NITH技術(shù)對物理主機(jī)節(jié)點(diǎn)上的虛擬機(jī)執(zhí)行隔離操作為例,并結(jié)合圖2和圖3,對圖1所示本發(fā)明實(shí)施例進(jìn)行舉例說明圖2為集群的組網(wǎng)示意圖,集群中包括三個物理主機(jī)節(jié)點(diǎn)n0deA、n0deB、n0deC,其中,物理主機(jī)節(jié)點(diǎn)nodeA上運(yùn)行有兩個虛擬機(jī),分別為VMl、VM2 ;物理主機(jī)節(jié)點(diǎn)nodeB上運(yùn)行有四個虛擬機(jī),分別為VM3、VM4、VM5、VM6 ;物理主機(jī)節(jié)點(diǎn)nodeC上運(yùn)行有3個虛擬機(jī),分另Ij 為 VM7、VM8、VM9。假設(shè)需要將圖2中nodeB上的虛擬機(jī)VM5隔離掉,且集群主管理節(jié)點(diǎn)選擇nodeC 執(zhí)行相應(yīng)的fence操作命令,則根據(jù)圖1所示本發(fā)明實(shí)施例的方法,具體的隔離過程如圖3 所示的本發(fā)明實(shí)施例基于圖2所示的集群中的虛擬機(jī)的隔離方法流程示意圖nodeC上的stonithd守護(hù)進(jìn)程接收集群主管理節(jié)點(diǎn)發(fā)送的攜帶nodeB的名稱以及 VM5的名稱的fence操作命令;stonithd守護(hù)進(jìn)程判斷是否可以在本地執(zhí)行該fence操作命令,由于fence操作命令中攜帶的物理主機(jī)節(jié)點(diǎn)的名稱為nodeB,與自身的名稱不相同,假設(shè)nodeC和nodeB連通,且nodeC上具有執(zhí)行該fence操作命令的fence設(shè)備,且該fence設(shè)備狀態(tài)是正常的, 則確定可以在本地執(zhí)行fence操作命令;stonithd守護(hù)進(jìn)程選擇對應(yīng)于該fence操作命令的stonith設(shè)備(也即隔離設(shè)備),通過選擇的stonith設(shè)備對應(yīng)的stonith插件(stonith插件和stonith設(shè)備具有—— 對應(yīng)的關(guān)系,此屬于現(xiàn)有技術(shù))觸發(fā)該stonith設(shè)備;stonith插件被調(diào)用,fork —個子進(jìn)程,在子進(jìn)程中以阻塞的方式調(diào)用stonith設(shè)備,執(zhí)行fence操作命令;stonith設(shè)備被調(diào)用,通過virsh命令行工具對nodeB遠(yuǎn)程執(zhí)行針對VM5的fence 操作命令;nodeB上的Iibvirt根據(jù)該fence操作命令,對VM5執(zhí)行fence操作。至此,實(shí)現(xiàn)對nodeB上的VM5的fence操作。在上述過程中,stonith設(shè)備的實(shí)現(xiàn)腳本可以如下啟動on對應(yīng)的stonith設(shè)備的實(shí)現(xiàn)腳本vm_start() {
local strResult local nodename local vmname nodename=$l vmname=$2
strResult=$(virsh -c qemu+ssh://$nodename/system start Svmname 2>&1) if [ $ -eq 0 ]; then
dolog.sh info "Virtual machine Svmname was started successfully." return 0
fi
if echo "SstrResult" | grep -i 'Domain is already active' > /dev/null 2>&1; then dolog.sh info "Virtual machine Svmname is already active." return 0
fi
dolog.sh err "Failed to start virtual machine $vmname. return: SstrResult" return 1
}關(guān)閉off對應(yīng)的stonith設(shè)備的實(shí)現(xiàn)腳本
vm—stop() {
local strResult local nodename local vmname nodename=$l vmname=:$2
strResult=$(virsh -c qemu+ssh://$nodename/system destroy Svmname 2>&1) if [ $ -eq 0 ]; then
dolog.sh info "Virtual machine Svmname has been stopped successfully." return O
fi
if echo "SstrResult" | grep -i 'domain is not running' > /dev/null 2>&1; then dolog.sh info "Virtual machine Svmname is not running." return 2
fi
dolog.sh err "Failed to stop virtual machine $vmname. return: SstrResult" return 1
}重啟reset可以通過先執(zhí)行上述off操作命令,再執(zhí)行on操作命令實(shí)現(xiàn)。
獲取狀態(tài)getstate對應(yīng)的stonith設(shè)備的實(shí)現(xiàn)腳本
device一getstatusO {
local nodename nodename=$l
virsh -c qemu+ssh://$nodename/system list --all 2>&1 if [ $ -eq 0 ]; then return 0
fi
return 1
}需要說明的是,上面各fence操作命令對應(yīng)的實(shí)現(xiàn)腳本只是一個具體的例子,也可以采用其他類似功能的腳本實(shí)現(xiàn),比如python腳本或可執(zhí)行程序等。以上對本發(fā)明實(shí)施例集群系統(tǒng)中的隔離方法及進(jìn)行了詳細(xì)說明,本發(fā)明還提供了一種集群系統(tǒng)中的隔離裝置,應(yīng)用于集群系統(tǒng)中的物理主機(jī)節(jié)點(diǎn)。參見圖4,圖4是本發(fā)明實(shí)施例集群系統(tǒng)中的隔離裝置,該裝置包括控制單元 401,接口單元402、一個或多個fence設(shè)備403(圖4中只畫出了一個fence設(shè)備);其中,控制單元401,用于接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令,并判斷是否可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令;所述fence操作命令中攜帶目標(biāo)物理主機(jī)節(jié)點(diǎn)信息和目標(biāo)應(yīng)用程序信息;用于如果判斷確定可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則確定該fence操作命令對應(yīng)的fence設(shè)備403,通過接口單元402提供的該fence設(shè)備403對應(yīng)的接口觸發(fā)該fence設(shè)備403,用以通過該 fence設(shè)備403執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作;接口單元402,用于提供fence操作命令對應(yīng)的接口給控制單元401 ;fence設(shè)備403,用于被控制單元401觸發(fā)后,執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。所述控制單元401,進(jìn)一步用于如果判斷確定不可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則將該fence操作命令發(fā)送到集群中的所有其他物理主機(jī)節(jié)點(diǎn);所述控制單元401,進(jìn)一步用于接收其他物理主機(jī)節(jié)點(diǎn)發(fā)送的fence操作命令,如果確定可以在本地執(zhí)行該從其他物理主機(jī)節(jié)點(diǎn)接收到的fence操作命令,則確定該 fence操作命令對應(yīng)的fence設(shè)備403,通過接口單元402提供的該fence設(shè)備403對應(yīng)的接口觸發(fā)該fence設(shè)備403,用以通過該fence設(shè)備403執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。所述應(yīng)用程序可以是虛擬機(jī)。所述fence設(shè)備403在執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作時,用于通過virsh命令行工具對目標(biāo)物理主機(jī)遠(yuǎn)程上的目標(biāo)應(yīng)用程序遠(yuǎn)程執(zhí)行fence操作命令,用以使目標(biāo)物理主機(jī)上的Iibvirt對目標(biāo)應(yīng)用程序執(zhí)行fence操作。該裝置還包括配置單元404,用于預(yù)先為每個fence設(shè)備403配置fence目標(biāo)信息;所述配置單元404為每個fence設(shè)備403配置的fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn);所述控制單元401在確定fence操作命令對應(yīng)的fence設(shè)備403時,用于查找所有配置了該fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn),且處于正常狀態(tài)的fence設(shè)備403,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備403 ;或者,所述配置單元404為每個fence設(shè)備403配置的fence目標(biāo)信息包括目標(biāo)應(yīng)用程序;所述控制單元401在確定fence操作命令對應(yīng)的fence設(shè)備403時,用于查找所有配置了該fence操作命令的目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的fence設(shè)備403,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備403 ;或者,所述配置單元404為每個fence設(shè)備403配置的fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序;所述控制單元401在確定fence操作命令對應(yīng)的fence設(shè)備403時,用于查找所有配置了該fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的 fence設(shè)備403,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備403。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種集群系統(tǒng)中的隔離fence方法,其特征在于,該方法包括接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令;所述fence操作命令中攜帶目標(biāo)物理主機(jī)節(jié)點(diǎn)信息和目標(biāo)應(yīng)用程序信息;如果可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則確定該fence 操作命令對應(yīng)的fence設(shè)備,通過該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,用以通過該 fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。
2.根據(jù)權(quán)利要求1所述的集群系統(tǒng)中的fence方法,其特征在于,該方法進(jìn)一步包括如果不可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則將該fence操作命令發(fā)送到集群中的所有其他物理主機(jī)節(jié)點(diǎn);接收到其他物理主機(jī)節(jié)點(diǎn)發(fā)送的fence操作命令時,如果可以在本地執(zhí)行該fence操作命令,則確定該fence操作命令對應(yīng)的fence設(shè)備,通過該fence設(shè)備對應(yīng)的接口觸發(fā)該 fence設(shè)備,用以通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。
3.根據(jù)權(quán)利要求2所述的集群系統(tǒng)中的fence方法,其特征在于,所述應(yīng)用程序是虛擬機(jī)。
4.根據(jù)權(quán)利要求3所述的集群系統(tǒng)中的fence方法,其特征在于,所述通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序進(jìn)行fence操作的方法為dence設(shè)備通過 virsh命令行工具對目標(biāo)物理主機(jī)上的目標(biāo)應(yīng)用程序遠(yuǎn)程執(zhí)行fence操作命令,用以使目標(biāo)物理主機(jī)上的Iibvirt對目標(biāo)應(yīng)用程序執(zhí)行fence操作。
5.根據(jù)權(quán)利要求1-4任一權(quán)項所述的集群系統(tǒng)中的fence方法,其特征在于,預(yù)先為每個fence設(shè)備配置fence目標(biāo)信息;所述fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn);所述確定fence操作命令對應(yīng)的fence設(shè)備的方法為查找所有配置了該fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn),且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備;或者,所述fence目標(biāo)信息包括目標(biāo)應(yīng)用程序;所述確定fence操作命令對應(yīng)的fence設(shè)備的方法為查找所有配置了該fence操作命令的目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備;或者,所述fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序;所述確定fence操作命令對應(yīng)的fence設(shè)備的方法為查找所有配置了該fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備。
6.一種集群系統(tǒng)中的隔離fence裝置,應(yīng)用于集群系統(tǒng)中的物理主機(jī)節(jié)點(diǎn),其特征在于,該裝置包括控制單元,接口單元、一個或多個fence設(shè)備;所述控制單元,用于接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令,并判斷是否可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令;所述fence操作命令中攜帶目標(biāo)物理主機(jī)節(jié)點(diǎn)信息和目標(biāo)應(yīng)用程序信息;用于如果判斷確定可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則確定該fence操作命令對應(yīng)的fence設(shè)備,通過接口單元提供的該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,用以通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作;所述接口單元,用于提供fence設(shè)備對應(yīng)的接口給控制單元; 所述fence設(shè)備,用于被控制單元觸發(fā)后,執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。
7.根據(jù)權(quán)利要求6所述的集群系統(tǒng)中的fence裝置,其特征在于,所述控制單元,進(jìn)一步用于如果判斷確定不可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則將該fence操作命令發(fā)送到集群中的所有其他物理主機(jī)節(jié)點(diǎn);所述控制單元,進(jìn)一步用于接收其他物理主機(jī)節(jié)點(diǎn)發(fā)送的fence操作命令,如果確定可以在本地執(zhí)行該從其他物理主機(jī)節(jié)點(diǎn)接收到的fence操作命令,則確定該fence操作命令對應(yīng)的fence設(shè)備,通過接口單元提供的該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,用以通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。
8.根據(jù)權(quán)利要求7所述的集群系統(tǒng)中的fence裝置,其特征在于,所述應(yīng)用程序為虛擬
9.根據(jù)權(quán)利要求8所述的集群系統(tǒng)中的fence裝置,其特征在于,所述fence設(shè)備在執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作時,用于 通過virsh命令行工具對目標(biāo)物理主機(jī)上的目標(biāo)應(yīng)用程序遠(yuǎn)程執(zhí)行fence操作命令,用以使目標(biāo)物理主機(jī)上的Iibvirt對目標(biāo)應(yīng)用程序執(zhí)行fence操作。
10.根據(jù)權(quán)利要求6-9任一權(quán)項所述的集群系統(tǒng)中的fence裝置,其特征在于,該裝置還包括配置單元,用于預(yù)先為每個fence設(shè)備配置fence目標(biāo)信息;所述配置單元為每個fence設(shè)備配置的fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn); 所述控制單元在確定fence操作命令對應(yīng)的fence設(shè)備時,用于查找所有配置了該 fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn),且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該 fence操作命令對應(yīng)的fence設(shè)備; 或者,所述配置單元為每個fence設(shè)備配置的fence目標(biāo)信息包括目標(biāo)應(yīng)用程序; 所述控制單元在確定fence操作命令對應(yīng)的fence設(shè)備時,用于查找所有配置了該fence操作命令的目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該 fence操作命令對應(yīng)的fence設(shè)備; 或者,所述配置單元為每個fence設(shè)備配置的fence目標(biāo)信息包括目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序;所述控制單元在確定fence操作命令對應(yīng)的fence設(shè)備時,用于查找所有配置了該 fence操作命令的目標(biāo)物理主機(jī)節(jié)點(diǎn)和目標(biāo)應(yīng)用程序,且處于正常狀態(tài)的fence設(shè)備,選擇其中一個作為該fence操作命令對應(yīng)的fence設(shè)備。
全文摘要
本發(fā)明提供了一種集群系統(tǒng)中的隔離方法和裝置,該方法包括接收集群主管理節(jié)點(diǎn)發(fā)送的fence操作命令;所述fence操作命令中攜帶目標(biāo)物理主機(jī)節(jié)點(diǎn)信息和目標(biāo)應(yīng)用程序信息;如果可以在本地執(zhí)行該從集群主管理節(jié)點(diǎn)接收到的fence操作命令,則確定該fence操作命令對應(yīng)的fence設(shè)備,通過該fence設(shè)備對應(yīng)的接口觸發(fā)該fence設(shè)備,用以通過該fence設(shè)備執(zhí)行對目標(biāo)物理主機(jī)節(jié)點(diǎn)上的目標(biāo)應(yīng)用程序的fence操作。本發(fā)明能夠保證共享數(shù)據(jù)的安全性和一致性。
文檔編號H04L29/06GK102420820SQ20111038529
公開日2012年4月18日 申請日期2011年11月28日 優(yōu)先權(quán)日2011年11月28日
發(fā)明者蔡志峰 申請人:杭州華三通信技術(shù)有限公司