如何創(chuàng)建和操作服務(wù)器群集?
一旦在服務(wù)器上安裝并運(yùn)行了群集服務(wù),該服務(wù)器即可加入群集。群集化操作可以減少單點(diǎn)故障數(shù)量,并且實(shí)現(xiàn)了群集化資源的高可用性。下述各節(jié)簡(jiǎn)要介紹了群集創(chuàng)建和群集操作中的節(jié)點(diǎn)行為。
創(chuàng)建群集
在服務(wù)器群集產(chǎn)品中含有用來在服務(wù)器上安裝群集軟件和創(chuàng)建新群集的群集安裝實(shí)用工具。創(chuàng)建新群集時(shí),首先在選擇作為群集的***個(gè)成員的計(jì)算機(jī)上運(yùn)行該實(shí)用工具。***步是確定群集名稱并創(chuàng)建群集數(shù)據(jù)庫和初始的群集成員列表來定義新群集。Windowsserver2003群集新增了一個(gè)群集管理設(shè)置向?qū)б约笆褂胏luster.exe命令行界面創(chuàng)建(包括從遠(yuǎn)程創(chuàng)建)群集的功能?! ?/p>
創(chuàng)建群集的第二步是,添加可供所有群集成員使用的共用數(shù)據(jù)存儲(chǔ)設(shè)備。這樣,創(chuàng)建的新群集將帶有一個(gè)節(jié)點(diǎn)、自己的本地?cái)?shù)據(jù)存儲(chǔ)設(shè)備以及群集共用資源——通常是磁盤或數(shù)據(jù)存儲(chǔ)和連接介質(zhì)資源。
創(chuàng)建群集的***一步是,在另外將要成為群集成員的每一臺(tái)計(jì)算機(jī)上運(yùn)行安裝實(shí)用工具。每當(dāng)將新節(jié)點(diǎn)添加到群集中時(shí),新節(jié)點(diǎn)都會(huì)自動(dòng)從群集的原始成員獲得現(xiàn)有群集數(shù)據(jù)庫的副本。當(dāng)節(jié)點(diǎn)加入或形成群集時(shí),群集服務(wù)會(huì)更新該節(jié)點(diǎn)私有的配置數(shù)據(jù)庫副本?! ?/p>
形成群集
如果服務(wù)器運(yùn)行了群集服務(wù)并且無法找到群集中的其它節(jié)點(diǎn),它自己可以形成一個(gè)群集。要形成群集,節(jié)點(diǎn)必須能夠獲得對(duì)仲裁資源的獨(dú)占權(quán)?! ?/p>
當(dāng)最初形成群集時(shí),群集中的***個(gè)節(jié)點(diǎn)將包括群集配置數(shù)據(jù)庫。每當(dāng)有新節(jié)點(diǎn)加入群集時(shí),新節(jié)點(diǎn)都會(huì)在本地獲得并保持群集配置數(shù)據(jù)庫的副本。仲裁資源用恢復(fù)日志(其中含有同節(jié)點(diǎn)無關(guān)的群集配置和狀態(tài)數(shù)據(jù))的形式存儲(chǔ)配置數(shù)據(jù)庫的***版本?! ?/p>
在群集運(yùn)行中,群集服務(wù)使用仲裁恢復(fù)日志執(zhí)行以下操作:
- 保證只有一組活動(dòng)、可相互通訊的節(jié)點(diǎn)才能形成群集
- 僅當(dāng)某個(gè)節(jié)點(diǎn)可以獲得對(duì)仲裁資源的控制權(quán)時(shí),才允許它形成群集
- 僅當(dāng)某個(gè)節(jié)點(diǎn)可以同控制仲裁資源的節(jié)點(diǎn)通訊時(shí),才允許它加入或留在現(xiàn)有群集中
從群集中的其它節(jié)點(diǎn)和群集服務(wù)管理接口的角度看,當(dāng)形成群集時(shí),群集中的每個(gè)節(jié)點(diǎn)可能處于三種不同狀態(tài)中的一種。事件處理器會(huì)記錄這些狀態(tài),而事件日志管理器會(huì)將這些狀態(tài)復(fù)制到群集的其它節(jié)點(diǎn)。群集服務(wù)狀態(tài)包括:
- 脫機(jī)。此時(shí)的節(jié)點(diǎn)不是完全有效的群集成員。該節(jié)點(diǎn)及其群集服務(wù)器可能在運(yùn)行,也可能未運(yùn)行?! ?/li>
- 聯(lián)機(jī)。此時(shí)的節(jié)點(diǎn)是完全有效的群集成員。它遵從群集數(shù)據(jù)庫的更新、對(duì)仲裁算法施加自己的影響、維護(hù)心跳通訊,并可以擁有和運(yùn)行資源組。
- 暫停。此時(shí)的節(jié)點(diǎn)是完全有效的群集成員。它遵從群集數(shù)據(jù)庫的更新、對(duì)仲裁算法施加自己的影響、維護(hù)心跳通訊,但它無法接受資源組。它只能支持它當(dāng)前已擁有的那些資源組。之所以提供暫停狀態(tài),是為了允許執(zhí)行某些維護(hù)。大多數(shù)服務(wù)器群集組件會(huì)將聯(lián)機(jī)和暫停視為等價(jià)的狀態(tài)?!?/li>
加入群集
如果一個(gè)服務(wù)器要加入現(xiàn)有群集,則它必須運(yùn)行群集服務(wù)并且必須成功找到群集中的其它節(jié)點(diǎn)。在找到其它節(jié)點(diǎn)后,加入的服務(wù)器必須接受群集成員資格驗(yàn)證,并獲得群集配置數(shù)據(jù)庫的副本。
加入現(xiàn)有群集的過程開始于WindowsServer2003或Windows2000ServiceControlManager在節(jié)點(diǎn)上啟動(dòng)群集服務(wù)之時(shí)。在啟動(dòng)過程中,群集服務(wù)會(huì)配置并裝入該節(jié)點(diǎn)的本地?cái)?shù)據(jù)設(shè)備。它并不會(huì)試圖將共用的群集數(shù)據(jù)設(shè)備作為節(jié)點(diǎn)聯(lián)機(jī),因?yàn)楝F(xiàn)有群集可能正在使用這些設(shè)備?! ?/p>
為了查找其它節(jié)點(diǎn),會(huì)啟動(dòng)一個(gè)發(fā)現(xiàn)過程。當(dāng)節(jié)點(diǎn)發(fā)現(xiàn)任何群集成員時(shí),它將執(zhí)行身份驗(yàn)證序列。***個(gè)群集成員會(huì)對(duì)新加入者進(jìn)行身份驗(yàn)證,并且在新服務(wù)器得到成功驗(yàn)證后返回成功狀態(tài)。如果驗(yàn)證不成功(未能識(shí)別待加入節(jié)點(diǎn)的群集成員身份,或者它使用了無效的帳戶密碼),則加入群集的請(qǐng)求會(huì)被拒絕。
進(jìn)行成功驗(yàn)證后,首先聯(lián)機(jī)的群集節(jié)點(diǎn)會(huì)檢查加入節(jié)點(diǎn)上的配置數(shù)據(jù)庫副本。如果該副本已過時(shí),對(duì)加入服務(wù)器進(jìn)行驗(yàn)證的群集節(jié)點(diǎn)會(huì)為加入的服務(wù)器發(fā)送該數(shù)據(jù)庫的更新副本。剛加入群集的節(jié)點(diǎn)在收到復(fù)制的數(shù)據(jù)庫后,可以用它查找共享資源并根據(jù)需要將它們聯(lián)機(jī)。
脫離群集
當(dāng)節(jié)點(diǎn)關(guān)閉或群集服務(wù)被停止時(shí),節(jié)點(diǎn)可能脫離群集。但當(dāng)節(jié)點(diǎn)不執(zhí)行群集操作(比如不向群集配置數(shù)據(jù)庫提交更新)時(shí),節(jié)點(diǎn)也可能被迫脫離(被逐出)群集。
如果節(jié)點(diǎn)根據(jù)預(yù)先的計(jì)劃脫離群集,它會(huì)向其它所有節(jié)點(diǎn)成員發(fā)送ClusterExit消息,通知它們它將脫離群集。該節(jié)點(diǎn)不等待任何響應(yīng)就會(huì)立即進(jìn)行關(guān)閉資源和所有群集連接的操作。由于其余節(jié)點(diǎn)收到了退出消息,因此它們不會(huì)執(zhí)行在節(jié)點(diǎn)意外失效或網(wǎng)絡(luò)通訊停止時(shí)發(fā)生的重新分組過程以重新確立群集成員身份。