- 論壇徽章:
- 0
|
搭建基于Linux具有高可用性的集群環(huán)境
反饋:史應(yīng)生shiyingsheng@yahoo.com
文章下載地址:http://blogimg.chinaunix.net/blog/upfile2/071113164433.pdf
高可用性是企業(yè)級(jí)服務(wù)器集群的一個(gè)重要元素,可以幫助在服務(wù)器宕機(jī)的情況下減小服務(wù)的"downtime".
本文章從技術(shù)的角度,講述了目前主流的Linux發(fā)行版(Red Hat和Novell)的高可用產(chǎn)品的構(gòu)架和特性。
適合讀者:
中/高級(jí)的Linux 系統(tǒng)管理員
企業(yè)IT部門的決策者
方案構(gòu)架師
對(duì)高可用有興趣的所有人
一.高可用概念:
高可用集群軟件通常要包括幾個(gè)通用的特性。至少要提供:
1.一種機(jī)制來定義哪些系統(tǒng)可以被用作集群節(jié)點(diǎn)
2.哪些服務(wù)或者應(yīng)用可以在節(jié)點(diǎn)間作失效切換(fail-over)
3.節(jié)點(diǎn)間內(nèi)部相互通信的方式
4.當(dāng)失效的節(jié)點(diǎn)控制相同的集群資源的情況下,防止資源的沖突
5.防止集群裂腦(split-brain)發(fā)生
6.Fence機(jī)制或者更加復(fù)雜的I/O fence機(jī)制
7.提供集群合作管理的機(jī)制
8.提供監(jiān)控工具
9.預(yù)先定義的應(yīng)用和服務(wù)的監(jiān)控腳本
二.Heartbeat和SUSE Linux Enterprise Server
Heartbeat來自于High-Availability項(xiàng)目 (www.linux-ha.org)。SLES9和SLES10所帶的版本不同,SLES9包含的版本是Heartbeat1.x, 它允許創(chuàng)建2個(gè)節(jié)點(diǎn)的集群,提供基本的高可用性failover服務(wù)。SLES10包含的版本是Heartbeat2.x.它允許創(chuàng)建多個(gè)節(jié)點(diǎn)的集群,提供增強(qiáng)的特性
2.1) Heartbeat 1.x的特性
Heartbeat1.x允許集群節(jié)點(diǎn)和資源通過/etc/ha.d目錄下面的兩個(gè)文件來配置
ha.cf:定義集群節(jié)點(diǎn),失效檢測(cè)和切換時(shí)間間隔,集群時(shí)間日志機(jī)制和節(jié)點(diǎn)Fence方法
haresources: 定義集群資源組,每一行定義可以一起進(jìn)行失效切換的一個(gè)默認(rèn)的節(jié)點(diǎn)和一組資源,資源包括IP地址,文件系統(tǒng),服務(wù)或者應(yīng)用
2.2) Heartbeat 2.0的特性
Heartbeat 2.0 即支持基于Heartbeat1.x 的配置(僅限于2個(gè)節(jié)點(diǎn))又支持模塊結(jié)構(gòu)的配置方法-集群資源管理器(Cluster Rescource Manager-CRM).
CRM模型可以支持最多16個(gè)節(jié)點(diǎn),這個(gè)模型使用基于XML的集群信息(Cluster Information Base-CIB)配置。CIB文件(/var/lib/heartbeat/crm/cib.xml)會(huì)在各個(gè)節(jié)點(diǎn)間自動(dòng)復(fù)制,它定義了下面的對(duì)象和動(dòng)作:
*集群節(jié)點(diǎn)
*集群資源,包括屬性,優(yōu)先級(jí),組和依賴性
*日志,監(jiān)控,仲裁和fence標(biāo)準(zhǔn)
*當(dāng)服務(wù)失敗或者其中設(shè)定的標(biāo)準(zhǔn)滿足時(shí),需要執(zhí)行的動(dòng)作
圖一顯示了Heartbeat2.0結(jié)構(gòu)的關(guān)鍵元素。
Consensus Cluster Membership服務(wù)使用選舉機(jī)制允許集群節(jié)點(diǎn)決定指定的協(xié)調(diào)器(Designated Cooridnator-DC),它來幫助建立仲裁,管理集群節(jié)點(diǎn)成員關(guān)系和資源分配。DC維護(hù)集群的狀態(tài)和管理策略。其他的節(jié)點(diǎn)必須轉(zhuǎn)發(fā)狀態(tài)改變請(qǐng)求到DC處理。Heartbeat服務(wù)檢查節(jié)點(diǎn)和連接狀態(tài)來決定失效是否發(fā)生,集群事件日志服務(wù)(ha-logd)提供集群套件中所有服務(wù)的日志功能。
為了控制集群資源,本地資源管理器(Local Resource Manager-LRM)啟動(dòng),停止和監(jiān)控資源代理。LRM守護(hù)進(jìn)程(lrmd)負(fù)責(zé)和DC的集群時(shí)間通信。節(jié)點(diǎn)的fence代理是一種特殊的資源,由node-fencing進(jìn)程stonithd控制。stonith的意思是"Shoot the Other Node in the Head",主要是使出現(xiàn)問題的節(jié)點(diǎn)從集群環(huán)境中脫離。fence設(shè)備包括串行或者基于網(wǎng)絡(luò)的電源切換設(shè)備或者遠(yuǎn)程管理硬件。
當(dāng)節(jié)點(diǎn)不能正常通信時(shí),fence防止不同子集的節(jié)點(diǎn)運(yùn)行相同的資源。這種情況叫做裂腦。裂腦通過使用應(yīng)用設(shè)計(jì),節(jié)點(diǎn)fencing或者資源指定的fencing來避免。
CRM守護(hù)進(jìn)程(crmd)管理CIB,它允許對(duì)節(jié)點(diǎn)和資源的行為的高級(jí)限制和依賴。集群策略引擎(pengine)解釋和實(shí)施這些限制和依賴。集群轉(zhuǎn)移引擎(tengine)管理CRM的狀態(tài)和在出現(xiàn)失效事件時(shí)協(xié)調(diào)在另一個(gè)節(jié)點(diǎn)上進(jìn)程的重新啟動(dòng)和資源轉(zhuǎn)移。
2.3)配置工具
Heartbeat2.0.5,包含在SLES10中,引入了GUI工具用于集群的管理和監(jiān)控。它包括監(jiān)控腳本樣本來協(xié)助通用Linux服務(wù)和應(yīng)用的配置,包括基于xinetd的服務(wù),Apache服務(wù),IBM DB2數(shù)據(jù)庫(kù),IBM WebSphere應(yīng)用服務(wù)器。許多其他的應(yīng)用,例如NFS,Samba也可以進(jìn)行配置。Heartbeeat2.0 遵循Open Cluster Framework (OCF)資源代理應(yīng)用編程接口,允許使用通用的LSB初始化腳本和集群相關(guān)的OCF資源初始化腳本。
每個(gè)版本的Heartbeat也可以配置為結(jié)合Linux Virtual Server功能的用于IP負(fù)載均衡的功能。這取決于被配置的服務(wù)和資源的需求, 共享存儲(chǔ),是否使用集群文件系統(tǒng)的并發(fā)訪問機(jī)制等等,與Oracle的OCFS的結(jié)合會(huì)在Heartbeat的下一個(gè)版本中集成。
在SLES10中包含在Heartbeat2.0.5中的GUI工具簡(jiǎn)化了配置。同時(shí),Novell也計(jì)劃使用Heartbeat2.0的核心服務(wù)作為將來Novell Cluster Services(NCS)軟件的基礎(chǔ)。NCS是獨(dú)立license的,包括了預(yù)先定義的資源類型,GUI配置工具和監(jiān)控工具。
三.Red Hat Cluster Suite (RHCS) 和 Red Hat Enterprise Linux 4
RHCS專門為Red Hat Enterprise Linux設(shè)計(jì)包含了下面兩個(gè)不同類型的集群
應(yīng)用和服務(wù)切換:創(chuàng)建關(guān)鍵應(yīng)用和服務(wù)的多節(jié)點(diǎn)服務(wù)器的集群環(huán)境
IP 負(fù)載均衡:對(duì)于進(jìn)來的IP網(wǎng)絡(luò)請(qǐng)求在一群服務(wù)器組中做負(fù)載均衡
集群的主要元素包括Cluster Manager (CMAN),Cluster Configuration System (CCS) 和 Resource Group Manger (rgmanager).圖二顯示了在任何指定的時(shí)間運(yùn)行在一個(gè)節(jié)點(diǎn)上的不同的服務(wù)和守護(hù)進(jìn)程的關(guān)系
CCS提供訪問位于每一個(gè)節(jié)點(diǎn)的單一集群配置文件/etc/cluster/cluster.conf.配置文件包括版本號(hào),它在集群任何時(shí)候改變時(shí)都會(huì)更新。ccsd運(yùn)行在每一個(gè)節(jié)點(diǎn)上。當(dāng)ccsd啟動(dòng)后,它找到節(jié)點(diǎn)間最新版本的配置文件。
CMAN用于管理集群成員,消息和通知。CMAN包括一套內(nèi)核補(bǔ)丁和一個(gè)用戶空間程序 (cman_tool).
cman_tool用于使一個(gè)節(jié)點(diǎn)加入或者離開集群。改變集群的投票期望值。CMAN依賴于CCS.
組資源管理器進(jìn)程(clurgmgrd)處理管理員指定的集群服務(wù)(也稱之為資源),包括管理員的請(qǐng)求比如服務(wù)啟動(dòng),服務(wù)禁止,服務(wù)重新加載和服務(wù)重啟動(dòng)。它也處理在服務(wù)失效時(shí),服務(wù)的重新啟動(dòng)和服務(wù)重定向。
3.1 配置工具
RHCS支持16個(gè)節(jié)點(diǎn)的集群。GUI的配置工具是system-config-cluster.集群配置包括:資源信息,節(jié)點(diǎn)信息,fencing設(shè)備信息和失效域信息。這些信息以XML的格式存儲(chǔ)在每個(gè)節(jié)點(diǎn)的/etc/cluster/cluster.conf文件中。這些資源在一個(gè)服務(wù)下被組織成資源組。
失效域是集群成員的子集。失效域有一下的特性:
無(wú)限制 — 允許你指定要優(yōu)選的成員子集,但是被分派到這個(gè)域的服務(wù)可以在任何可用的成員上運(yùn)行。
有限制 — 允許你限制能夠運(yùn)行某個(gè)特定服務(wù)的成員。如果在限制的失效轉(zhuǎn)移域中沒有一個(gè)可用的成員,服務(wù)就無(wú)法被啟動(dòng)(手工啟動(dòng)或被群集軟件啟動(dòng))。
無(wú)序 — 當(dāng)服務(wù)被分派給一個(gè)無(wú)序的失效轉(zhuǎn)移域,運(yùn)行服務(wù)的成員就會(huì)從失效轉(zhuǎn)移域成員中不按優(yōu)先順序被選擇。
有序 — 允許你在失效轉(zhuǎn)移域成員中指定一個(gè)優(yōu)選順序。在列表最前面的是最優(yōu)先的,跟著是次一級(jí)的,依此類推。
按照默認(rèn)設(shè)置,失效轉(zhuǎn)移域是無(wú)限制和無(wú)序的。
CCS 支持集群信息的在線改變,而且會(huì)自動(dòng)同步到其他的節(jié)點(diǎn)。
3.2 失效切換能力
類似于STONITH,fence設(shè)備是一個(gè)節(jié)點(diǎn)在它重新啟動(dòng)它的服務(wù)前可以power cycle另一個(gè)節(jié)點(diǎn)。
Fence設(shè)備可以在一個(gè)沒有響應(yīng)的節(jié)點(diǎn)恢復(fù)后,防止數(shù)據(jù)沖突。如果CMAN檢測(cè)到一個(gè)節(jié)點(diǎn)失敗, 失敗的節(jié)點(diǎn)會(huì)從集群中刪除。如果不使用fence設(shè)備,那么一個(gè)失效的節(jié)點(diǎn)可能會(huì)導(dǎo)致集群服務(wù)在多余一個(gè)節(jié)點(diǎn)運(yùn)行,從而造成數(shù)據(jù)沖突甚至是系統(tǒng)崩潰。
四.針對(duì)這兩個(gè)廠家的商業(yè)高可用性解決方案如何選擇:
表1 對(duì)Red Hat 和 Novell 高可用軟件的作了技術(shù)比較。
| SUSE Linux Enterprise Server with Heartbeat | Red Hat Cluster Suite | | | | | | | | Heartbeat1.x
支持2個(gè)節(jié)點(diǎn) Heartbeat2.x
支持16個(gè)節(jié)點(diǎn) | | | IP地址,文件系統(tǒng),NFS輸出,Samba, | IP地址,文件系統(tǒng),NFS輸出,Samba, | | 支持各種串行和網(wǎng)絡(luò)電源切換器,遠(yuǎn)程管理卡 | 支持各種串行和網(wǎng)絡(luò)電源切換器,遠(yuǎn)程管理卡 | | (單機(jī)文件系統(tǒng)/集群文件系統(tǒng)) | (單機(jī)文件系統(tǒng)/集群文件系統(tǒng)) |
個(gè)人認(rèn)為:
對(duì)于費(fèi)用敏感的企業(yè)Heartbeat是個(gè)不錯(cuò)的選擇,它在Novell的發(fā)行版中提供。
對(duì)于想尋求易用的企業(yè)可以選在RHCS和它的GUI功能。RHCS和RHEL是獨(dú)立的產(chǎn)品 |
|