叢集軟體MC/ServiceGuard概述
1.高可靠性
MC/ServiceGuard (Multi-Computer/ServiceGuard)是專門用來保護關鍵業務應用免遭軟、硬體故障影響的軟體結構。使用MC/ServiceGuard,多個節點(系統)被組織成一個企業群集,為LAN上的客戶機提供高可用性的應用服務。MC/ServiceGuard監視程式監視每一個節點狀態,並且對出現的故障很快做出反應,使應用程式的停頓成為最小。MC/ServiceGuard可自動對下列組件的故障作出響應:
--系統處理器
--系統記憶體
--區域網路介質和網卡
--系統進程
--應用程式進程
因為高可靠性是設計的重要目標,這種群集不會因任何“單點故障”(Single point of failure)而停止服務。
2.平衡工作負載
MC/ServiceGuard的應用程式套件組合提供一種強有力的、靈活的機制用來在群集內部一個節點發生故障時,平衡各節點的工作負載。在一個節點內的各個應用程式可移到不同的節點上,這樣在群集的各個節點上分散工作負載。例如,一個群集有4個節點,每一個節點運行三個軟體包。如果某個節點發生故障,該節點上正啟動並執行三個軟體包會被分散到不同的節點上,把發生故障節點的工作負載分配到剩下的三個好節點上,這樣可使群集中其餘的應用效能所受的影響降至最低。
MC/ServiceGuard可以按二種不同的恢複策略進行配置:活動一活動和活動一備用。在活動一活動配置中,每個節點至少運行一個應用軟體包,並為運行在其他節點上的一個或多個應用程式提供備份服務。在活動一活動配置方式下,沒有閒置系統,這充分利用群集內每個節點的能力。
MC/ServiceGuard也允許節點按活動一備用方式配置,這樣配置可在主系統發生故障時,將所有備用節點的處理能力重新分配給應用軟體包。備用節點可供非關鍵性業務使用,一旦關鍵性應用程式套件組合從主系統轉達來,就立即中止原來的工作。活動-備用方式配置保證在故障恢複後,關鍵業務應用的回應時間不會變差。
3.保護資料完整性
在企業群集中,MC/ServiceGuard不僅使應用程式有效可靠,而且採取特別方法保護資料完整性。當應用程式套件組合從故障節點移出時。群集中其他節點互相協調確保失效節點不會危及應用資料的完整性。每個節點都知道群集中的其他成員及分配給它們的應用軟體包。如果一個節點發生故障,剩下的節點會把其從群集中隔離出來以防止其訪問磁碟。這一重要功能可以防止一個節點發生故障掛起或重啟動後,不會再對現在己由別的節點負責的資料進行改寫(稱這種情況為“Splitbrainsyndrome”)。如果沒這種防護,資料完整性就會由於有多個節點同時訪問一個磁碟而遭到破壞。
4.整合MC/ServiceGuard群集和網路節點管理程式
ClusterView是一個具有業界領先功能的新產品,用於本地或遠程群集的集中式網路管理。與HP OpenView的網路節點管理程式(NNM)一起,ClusterView可以讓網路管理員觀察MC/ServiceGuard群集的狀態。利用一種“drill down”的功能,網路系統管理員可以觀察整個群集、群集中的每個節點以及每個節點上應用程式的狀態。這些能力大大加強了網路群集管理,當與其他產品如進程資源管理程式(PRM)一起使用時,能大大提高網路系統管理員下列方面的能力:問題預測、檢測和分析;效能調整以及工作負載平衡。
MC/ServiceGuard的原理及配置
1.MC/Services Guard的工作原理
MC/Services Guard軟體由三部分組成(2所示)。
1)叢集管理器(Cluster Manager)
叢集(Cluster)由節點(Node)組成,而節點就是生產機、備份機。只有在MC/Services Guard的管理下,各個節點才能組成一個叢集,其中的生產機節點稱為叢集協調器(Cluster Coordinator)。叢集協調器接受各節點發送的心跳線訊息,可知節點狀態。如果某個節點狀態不正常,MC/Services Guard試圖形成新的cluster,新的cluster中不包含不正常的節點。新的cluster的配置資訊將傳給包管理器,使得應用系統不再在不正常的節點上運行。
舊的cluster失敗形成新的cluster時,原來的cluster分裂成兩個子群(sub-cluster),每個子群都試圖成為生產機。這時哪個子群首先獲得鎖盤,則該子群成為生產機,另一個子群只能成為備份機。如果存在三個節點,則不需要鎖盤。
2)包管理器(Package Manager)
包是運行應用所需的後台進程和服務的總稱。包管理器的作用是:
--決定何時在何節點運行、掛起、遷移package。
--執行使用者定義的控制文本從而正確的掛起和運行package。
3)網路管理器(Network Manager)
每個節點的當前活動網卡(主網網卡)應配置其IP地址,這是靜態IP地址,由設定檔 /etc/rc.config.d/netconf檔案決定。靜態IP地址不會傳給另一個節點,但可以傳給備份網卡,所以一定不要配置備份網卡的IP地址。
此外,對於每個package應配置其唯一的IP地址,這就是浮動地址(Floating Address)。cluster中的每個節點的浮動地址是相同的,並與主網靜態IP地址處於同一網段。啟動package時,該浮動地址將分配給主網網卡。主網網卡出現故障時,主網的靜態IP地址和package地址都將切換到備份網卡。所以對於應用來講,訪問package時無須知道當前節點的靜態IP地址或主機名稱。
2.MC/Services Guard配置注意事項
1)除網路地址外,生產機和備份機的MC/Services Guard配置是完全一樣的。
2)如果存在兩個以上應用(如計費、營業、帳務處理等),則背景程式可以集中在生產機上運行,也可以分布在生產機、備份機上運行。分布運行可以提高小型機的利用率。多個應用可以只有一個package,也可有多個package。對應每個package,都有其相應的設定檔。
3)設定檔中的 SUBNET是指浮動地址,VOLUME_GROUP是指在磁碟陣列和鎖盤上定義的卷組(分兩行或多行記錄),AUTOSTART_CMCLD決定機器啟動時是否自動啟動MC/Services Guard,一般雙機都置為1。
4)在檔案/etc/hosts中指明浮動地址時,絕對不能以空格或TAB鍵作為一行的開始。
MC/SG的管理和維護
MC/SG系統的啟停
正常使用時,任何一個節點出現故障,備份的節點可以接管該節點的工作。但上一次順利關機時,哪個節點是生產機,則下一次開機時,該節點還是生產機。如果該節點未正常啟動,備份機不能自動成為生產機。
MC/Services Guard的啟動、關閉應遵守操作順序。手工操作Mc/Service Guard 的順序如下。
1.開機(生產機)
1)裝載作業系統
2)啟動cluster
注意:
-- 不要同時引導兩台機器。應在生產機正常後,再引導另一台機器;
--不要在cluster已啟動並執行情況下,再執行cmruncl命令,這樣有可能導致資料的不一致;
--通常的配置是:隨著cluster正常啟動,package也正常啟動;
--當手工掛起package之後,想重啟package,可手工啟動package;
2.關機
1)關閉資料庫管理系統
2)掛起package
3)掛起cluster
4)關閉作業系統
注意:
-- 應先關備份機。如果先關生產機,則備份機馬上切換成生產機,下次引導時應首先引導該生產機。
--人為正常關閉資料庫時,資料庫後台進程不會自動切換到另一台機器。
MC/SG的管理和維護
MC/SG系統的切換
切換分兩種:本地切換(Local Switch)和切換(Switch)
當主節點出現網卡故障( MAC address or Hardware StateDown )時,首先會進行本地切換,備份網卡開始工作;如果此時備份網卡也有故障,則系統會進行切換,備份節點接管系統工作。
MC系統切換髮生在兩種情況下:一種情況是由於系統的硬體出現故障或者應用程式故障,此時的切換是自動進行的;另一種情況是根據實際作業環境需要進行人為地切換。有兩種辦法來實現後一種切換。
1.方法1:使用cmhaltnode 命令來停止運行有程式包的節點。
#cmhaltnode -f nodename
這樣,在停止該節點的同時,應用程式套件組合會自動遷移到另外一個節點上。
2.方法2:使用cmhaltpkg 來啟停應用程式套件組合
用 cmhaltpkg 命令來停止需要遷移的程式包
#cmhaltpkg pkgname
用cmrunpkg 來重新在別的節點上運行程式包
#cmrunpkg -n nodename pkgname
用 cmmodpkg 修改切換屬性
#cmmodpkg -e pkgname
一般來說,建議採用方法2
MC/SG的管理和維護
MC/SG系統的幾個常用命令
1.手動啟動MC/Lock Manager
Start Lock Manager daemons and from a new cluster
#cmruncl [-f] [-v] [-n NN...]
[-f]Force cluster startup without warning message
[-v]Verbose output
[-n ]Specific name(s) of node(s) to
2.加入另一個節點到一啟動並執行MC系統
Start Lock Manager daemon on node(s) and join a cluster
#cmrunnode [-v] [NN...]
[-v]Verbose output
3.監測Cluster 運行狀態
view information about the current Lock Manger cluster
#cmviewcl [-v] [-n NN]... [-p PN]...[-l {package|cluster|node}]
[-v]Verbose output
[-n]View information only about the specific node_name(s).
[-p] package_name... View information only about the specific package_name(s).
[-l] pkg|clus|nodeDisplay only package, cluster or node specific information.
4.停止Cluster 運行
halt Lock Manager cluster daemons
#cmhaltcl [-f] [-v]
[-f]Force the cluster to shutdown even if packages are currently running.
[-v]Verbose output
5.停止某個節點
halt Lock Manager daemon on node(s) and leave the cluster
#cmhaltnode [-f] [-v] [NN...]
[-f]Force the node to halt even if there are packages running on it.
[-v]Verbose output
6.在Running Cluster 中運行某一個包
run a Lock Manager package
#cmrunpkg [-n NN] [-v] PN...
[-n]Act on a specific node.
[-v]Verbose output
7.停止一個運行中的包
halt a Lock Manager package
#cmhaltpkg [-n NN] [-v] PN...
[-n]Act on a specific node.
[-v]Verbose output
8.改變一個包的切換屬性
enable or disable switching attributes for a Lock Manager package
#cmmodpkg [-v] [-n NN]... {-e|-d}PN...
[-v]Verbose output
[-n]Modify attributes on specific node(s) - else globally mod.
-e enable
-d disable
PN - package(s) whose switching attributes are changed