HACMP的概念和原理
關鍵業務的連續性可以通過以下三個層次的方法實現:
磁帶備份
磁帶備份是實現基本的業務連續的通用方法。信息先備份到磁帶上,然后送到另外的地點保存。這種方法的問題在于磁帶備份往往需要較長的時間來記錄數據。另外,在數據備份過程中或者做數據備份前的系統或環境故障很可能造成數據丟失。而且,從備份磁帶上恢復數據也需要很長的時間,數據存儲得越多,恢復的時間越長。
高可用系統
高可用系統一般是在一個地點,通過高可用軟件將一組服務器連接在一起,組成一個群集。IBM的HACMP for AIX和HP的MC/ServiceGuard就是這樣的群集產品,通過快速地將用戶、應用和數據從發生硬件或軟件故障的機器切換至其它機器來提供高可用計算環境。
容錯系統
容錯系統依賴于冗余的硬件設備和軟件來實現關鍵業務的連續性。雖然容錯系統是避免宕機和數據丟失的有效方法,但是購買、操作和維護容錯系統都是非常昂貴的。另外,系統的升級也需要很大的代價。
用戶可以根據自己的應用情況選擇適合自己的方法實現關鍵業務的連續性。
HACMP簡介
IBM公司的HACMP for AIX軟件是基于AIX平臺的,在高可用系統層次實現關鍵性任務計算環境的工具軟件。HACMP應用于RS/6000系列的單處理器機型、對稱多處理器機型或SP的節點,可以檢測系統故障并快速恢復服務,使最終用戶只感受到很小的中斷時間。HACMP(High Availability Cluster Multi-Processing)有兩個主要的組成部分:高可用技術(HA)和群集多處理技術(CMP)。
高可用技術(HA)
在HA產品出現之前,在UNIX領域實現高可用性的最有效途徑是通過容錯技術。容錯技術依靠專門的硬件設備檢測到硬件的故障,然后立即切換至冗余的硬件設備上,不管故障設備是處理器、內存板、電源、I/O子系統還是存儲子系統。盡管這種切換能夠無縫地提供不間斷的服務,但卻在硬件費用和性能上付出了很高的代價,因為冗余的設備不能處理事務。更重要的是,容錯系統不能處理軟件故障,而這卻是宕機的最常見的原因。
高可用技術并不是通過將可用性當作一系列重復的物理設備來實現高可用性,它將高可用性看作是一個全系統范圍的、共享的資源的集合,這些資源相互協作來保證關鍵的服務。高可用技術將軟件和工業標準的硬件結合起來,在系統、設備或應用發生故障時通過快速恢復關鍵服務來使宕機時間減至最小。盡管不能立即切換,恢復服務也是很快的,通常在1分鐘之內。
容錯技術和高可用技術的區別在于服務中斷的時間。當硬件發生故障時,容錯環境沒有宕機時間,而高可用環境有很小的宕機時間。但是,在容錯環境中,由于軟件故障無法被檢測,有可能造成系統的嚴重破壞。而在高可用環境中,軟件故障只會造成很小的宕機時間。
現在,大多數的公司都愿意忍受一小段的宕機時間,采用高可用技術,而不愿意花費高得多的代價采用只能檢測硬件故障的容錯技術。另外,在高可用配置中,備份機還可承擔其他應用。
群集多處理技術(CMP)
群集多處理技術是指一組松散耦合的機器,通過網絡連接在一起,共享磁盤資源。在群集中,多個服務器協同工作,為用戶提供一組服務或資源。
將兩個或多個服務器組成群集來備份關鍵應用是一個劃算的高可用性解決方案。用戶可以使用更多的技術能力,同時確保關鍵應用在硬件或軟件故障后能夠快速恢復正常工作。
群集多處理技術還為客戶提供了靈活的擴展途徑??蛻艨梢院苋菀椎卦谌杭性黾犹幚砥饕苑謸粩嘣黾拥墓ぷ髁?,還可以對群集中的處理器進行升級。而在容錯環境中,則必須同時增加兩個處理器,其中一個作為冗余備份,在正常工作時不進行任何處理。
1.1 HACMP中術語的定義
群集(Cluster):
多個服務器節點一起工作,使用TCP/IP進行通訊,每個節點上運行Cluster Manager進程。
節點(Node):
群集中的每個運行Cluster Manager進程的獨立的機器。節點是HACMP的核心部分,節點上運行AIX操作系統和HACMP for AIX軟件。在HACMP群集中,每個節點有一個唯一的節點名。一個節點可能擁有一組資源??――磁盤、卷組、文件系統、網絡、網絡地址和應用。節點上一般運行著訪問共享磁盤上數據的“后臺”應用。
資源(Resources):
由一個節點控制的實體,當節點發生故障時能夠被其它節點接管??梢员划斪髻Y源的實體有:
1、磁盤、卷組、文件系統
2、NFS輸出的文件系統
3、IP地址
4、應用程序
關鍵應用(Critical Application):
由HACMP控制其啟動和停止的應用程序,例如數據庫的后臺進程。
事件(Event):
群集中發生的一些事情,即群集狀態的改變,包括節點up/down,網絡up/down,網卡故障等等。
行為(Behavior):
事件發生時群集的響應動作。事件是由shell腳本控制的。
重聚(Reintegration):
將故障節點、網絡、網卡重新帶回群集的過程。
1.3 HACMP群集的硬件組成
節點、共享磁盤設備、網絡和網卡、客戶機
節點機型:
HACMP for AIX軟件支持RS/6000單處理器和SMP機型作為群集的節點。在HACMP中,SMP系統和單處理器機型一樣,都被當作單一節點。采用SMP系統是提高整個群集吞吐量的有效途徑。群集中的每個節點都可以是一個大的SMP系統,使得群集系統遠遠超過單個系統的處理能力,可以支持成千上萬個客戶機連接到單一的數據庫系統。
共享磁盤設備
群集中的每個節點都需要配置內置硬盤來存儲AIX操作系統、HACMP軟件和應用程序。另外,每個節點都應連接到一個或多個外置的共享磁盤上。
共享磁盤是指物理上連接到多個節點的磁盤設備,共享磁盤上存放著關鍵任務的數據,通常采用鏡像或RAID技術來提供數據的冗余保護。
HACMP的共享磁盤設備支持SCSI-2 Differential磁盤、SCSI-2 Differential磁盤陣列和串行磁盤。
HACMP支持兩種對共享磁盤的訪問方式:非并發訪問和并發訪問。
在非并發訪問環境中,每個時間點上只能有一條活動的連接,保持活動連接的節點擁有磁盤,當此節點離開群集時,它擁有的磁盤被其他節點接管。
在并發訪問環境中,共享磁盤同時與多個節點保持活動連接,因此當節點故障時,不需要接管磁盤。并發訪問要求SSA或RAID作為外置共享磁盤。
共享硬盤應該單獨放在一個機柜中,不應和機器混放。
網卡
一個節點至少應有兩塊網卡連接每個網絡:一塊服務網卡(service adapter)和一塊備份網卡(standby adapter)。如果配置IP地址接管,還應配置啟動網卡(boot adapter)。啟動網卡并不需要單獨的物理網卡,而是配置在服務網卡上的不同的IP地址。
HACMP for AIX采用網卡標識(adapter label)來識別網卡。對于TCP/IP網絡,網卡標識是在文件/etc/hosts中關聯某一IP地址的名字。一個節點可以定義多個網卡標識和IP地址。
網絡
HACMP使用LAN來監視網絡,網卡和其它節點的狀態,HACMP支持AIX支持的大多數基于TCP/IP 的網絡,如 Ethernet、Token-Ring、FDDI、ATM等等。HACMP中定義了三種類型的網絡:公用網絡(public network)、私用網絡(private network)和串行網絡(serial network)。
公用網絡
在HACMP環境中,公用網絡連接多個節點并允許客戶機服務群集節點。Ethernet、Token-Ring、FDDI、ATM等網絡可以被定義為公用網絡。
私用網絡
HACMP群集中的節點必須相互通訊以實現對數據的連續訪問。私用網絡提供兩個節點之間的點到點通訊,但不允許客戶機訪問。HACMP使用私用網絡來傳輸鎖的信息,只有在沒有定義私用網絡時才使用公用網絡來傳輸鎖的信息。
私用網絡一般用于并發訪問磁盤的情況。Ethernet、Token-Ring、FDDI、ATM等網絡可以被定義為私用網絡。
串行網絡
串行網絡是兩個節點之間的點到點連接。HACMP在TCP/IP子系統發生故障時,使用串行網絡來傳輸控制信息和心跳信息。串行網絡可以是一條SCSI-2 Differential總線或一條RS232串行線。
網絡名稱
網絡名稱用于標識HACMP群集中的網絡,群集進程使用網絡名稱信息來確定哪些網卡連接在同一物理網絡上。網絡的命名是任意的,但必須保持一致。如果多個網卡連接在同一物理網絡上,定義這些網卡時必須使用相同的網絡名稱。
客戶機
客戶機是指能夠訪問群集中節點的機器。客戶機通過公用局域網絡與節點通訊,其上運行“前端”程序或客戶機應用來訪問群集節點上的服務器應用。HACMP for AIX為群集節點上的關鍵性的數據和應用提供高可用性環境,但不負責客戶機的高可用性。
1.3 AIX與HACMP
AIX是第一個,也是最為成熟的第二代UNIX操作系統,具有很多先進的特征,保證UNIX系統的可靠性和高性能,IBM公司引入到UNIX中的LVM邏輯卷管理和JFS日志文件系統,使AIX更容易使用和管理。AIX滿足幾乎所有的工業標準和事實標準,是真正的開放系統。
AIX包含許多承襲IBM大主機等級的優異特性,諸如系統集成性、系統管理及系統可用性。除了具有當系統損毀時可以快速修復的文件系統外,IBM運用自身在計算機領域45年的經驗,增加了邏輯卷管理和日志文件系統等功能,支持三份能夠同步寫入及錯誤區塊重新配置的系統鏡像功能,用以確保您高價值的數據。
IBM在設計RISC/6000的AIX操作系統時,針對UNIX系統的弱點,重新改寫了UNIX的內核,清除200個編程缺陷。在系統功能穩定性、可靠性和可管理性方面做了極大的改進,使UNIX從一個主要面向科技市場的操作系統,發展成為能夠承擔關鍵任務的成熟的操作系統。
AIX具有動態可擴展內核,用戶裝卸設備時可聯機動態配置,無須關機和重新啟動,具有實時的擴展功能。所有硬件設備均可隨時動態增加、更換而不影響文件系統及其數據。
AIX中的許多功能和HACMP緊密配合,為用戶提供更高的可用性。以下介紹AIX中與HACMP相關的幾項功能:LVM、JFS、ODM、SMIT和SRC。
邏輯卷管理器LVM(Logical Volume Manager)
LVM邏輯上將多個硬盤當作單一實體進行管理。使用LVM可將存儲空間分區為“邏輯卷”,可以指定其存放位置,以獲得優化的性能和可用性。邏輯卷(文件系統)可以動態擴展而不需重新配置整個邏輯硬盤子系統。邏輯卷可以鏡像,避免磁盤的單點故障。
LVM使磁盤資源很容易被其他節點接管。
日志文件系統JFS(Journaled File System)
在傳統Unix中,文件系統恢復需要很長時間且文件系統的完整性不能得到保證。AIX使用日志文件系統,所有對文件系統的更新在寫到文件系統之前先記入一個日志之中,當系統故障后JFS日志可以被重新執行,文件系統的更新可以根據日志前滾或回滾(roll forward/back)。AIX很少用到fsck命令進行整個文件系統的恢復,所以故障后恢復文件系統的時間大大減少,也就大大減少了文件系統接管的時間。
ODM(Object Data Manager)
ODM是一個面向對象的數據庫,其中存放著系統的配置信息。采用ODM管理使配置信息更加安全,可以免受偶然的或故意的損壞。ODM庫一般通過SMIT、高級命令或應用程序進行訪問。
所有的HACMP配置信息都存放于ODM庫中。
HACMP for AIX使用“Global ODM”,可以在一個節點上做配置,然后傳到群集內的所有節點。這樣可以減少配置的工作量,并保證各個節點上配置信息的一致性。
SMIT(System Management Interface Tool)
AIX中絕大部分系統管理功能都可以通過SMIT完成(95%以上)。使用SMIT減少了偶然使用錯誤命令或錯誤選項的可能性,增加了系統的可用性。
HACMP全部用SMIT管理,快捷路徑是smit hacmp
SRC(System Resource Controller)
SRC是一個AIX進程,用來管理其它的進程。使用startsrc和stopsrc命令來啟動、停止由SRC控制的一組進程。如果SRC控制的一個進程非正常終止,SRC會自動執行一個特定的程序來響應。
HACMP的進程都是由SRC控制和監視的。
1.5 HACMP群集的軟件結構
HACMP for AIX軟件由以下部分組成:
Cluster Manager、Event
Cluster Manager
Cluster Manager運行在群集中的所有節點上。它的主要任務是監視和響應群集狀態的變化,包括:節點故障和恢復、網絡故障和恢復、網卡故障和恢復。它負責同步和協調群集內部的動作,發現錯誤征兆,診斷問題,并做出適當的反應。它還負責執行Event
Event
Event
Cluster Lock Manager
用于并發訪問環境,使多個節點可以同時訪問相同的數據。應用程序必須用Cluster Lock Manager API來登記、申請、釋放鎖。Lock Manager協調和排序對共享數據的訪問,防止數據的不一致和錯誤。
Clinfo & Clsmuxpd
Clinfo是Cluster Information進程。Clinfo API允許應用程序來確定群集現在的狀態和釋放動作響應變化,每當群集內有事件發生時Clinfo發布信息。
Clinfo的通訊基于SNMP依靠SNMP的代理(clsmuxpd)接收群集狀態的改變。
Clinfo是可選的。
1.6 HACMP群集資源
HACMP for AIX軟件通過以下途徑提供高可用性環境:
定義一組必須的群集資源,資源可以是硬件,也可以是軟件。
定義群集節點訪問這些資源的關系。這些關系確定哪個節點控制資源以及當該節點放棄資源的控制權后哪個節點接管資源。當一個節點離開群集時,Cluster Manager能夠將這個節點的資源轉移到群集中的其它節點上。
資源的類型
應用、磁盤、卷組、文件系統、NFS文件系統、IP地址
資源怎樣做到高可用
應用:
由HACMP啟動,如果節點發生故障,則在另一節點重新啟動。
磁盤、卷組、文件系統:
磁盤物理上與多個節點相連。在非并發環境中,一個節點控制磁盤資源,如果該節點發生故障,它控制的磁盤資源由其它節點接管。在并發環境中,多個節點同時控制磁盤資源,一個節點發生故障并不影響其它節點。
IP地址:
如果服務網卡發生故障,由本機的備份網卡接管其地址,稱為“網卡切換”。如果整個節點故障,由另一個群集節點的備份網卡接管其地址,稱為“IP地址接管”。
資源組
每個HACMP的高可用資源都必須被分配在某個資源組中。資源組允許您將相關的資源結合成一個單一的實體,便于配置和管理。
HACMP共有三種類型的資源組,分別是Cascading資源組、Rotating資源組和Concurrent資源組。在一個群集中可以有多個不同類型的資源組。定義資源組的類型實際上就是定義了群集的故障恢復策略。
Cascading資源組可以被一個或多個節點接管:
所有被指定參與接管一個資源組的節點都是該資源組的資源鏈的一部分,每個參與的節點都被指定了接管優先級,優先級代表了接管可用資源的順序。
當接管發生時,具有最高優先級的活動節點將獲得資源組。如果該節點不可用,則由具有次高優先級的節點獲得資源組,依此類推。
當對該資源組具有更高優先級的節點重新回到群集后,它將取回它的資源組。
一個Rotating 資源組和一組節點相關聯。資源組在所有被定義的節點之間輪轉。每個節點可以擁有一個資源組。
開始時,第一個加入群集的節點獲得第一個資源組,第二個加入群集的節點獲得第二個資源組,依此類推,直到所有的資源組都被節點獲得。剩余的節點作為備份節點。
當一個控制資源的節點故障時,可用節點中對資源組具有最高優先級的節點將接管資源組。當故障節點重新加入群集后,成為備份節點,不再取回資源組。
Concurrent 資源組由多個節點共享。所有并發訪問資源組的節點在加入群集后都獲得該資源組。節點之間沒有優先級的區別。
由于AIX JFS 不支持并發訪問,應用就必須用生設備(邏輯卷)。因此Concurrent 資源組的資源只能有應用、磁盤和卷組。
Concurrent 資源組的共享磁盤必須是SSA盤或RAID盤。
資源鏈
每個能訪問資源組的節點都必須被列為參與節點,參與節點的列表就建立了資源組的資源鏈。這樣,這幾個節點都可以參與維護資源組的可用性。
對于Cascading資源組或Rotating 資源組來說,這也就建立了資源鏈中各節點的優先級。
對于Cascading資源組,當前在資源鏈中具有最高優先級的活動節點將從故障節點處獲得資源組。
對于Rotating資源組,當前在資源鏈中具有最高優先級且具有可用連接(網絡、網卡、IP地址)的節點將從故障節點處獲得資源組。接管節點可能是已經擁有資源的節點,也可能是備份節點。
HACMP對資源組的位置有如下假定:
Cascading:具有最高優先級的活動節點控制資源組。
Rotating :具有與Rotating資源組相關的服務地址的節點控制資源組。
Concurrent:所有活動節點都擁有資源組。
1.6 建立高可用系統——避免單點故障
高可用系統的主要特點是具有檢測和響應可能影響到關鍵服務的事件的能力。HACMP for AIX軟件使群集在遇到系統的關鍵組件(例如網卡)發生故障的情況下仍能繼續對外提供服務。
HACMP for AIX軟件通過避免單點故障的方式建立高可用的和可擴展的群集。單點故障點是指一個關鍵的群集功能只由單一的組件提供,當這個組件故障時,群集沒有其它的途徑提供關鍵的服務。
在群集中,有可能出現單點故障的群集組件是:
節點、網絡和網卡、磁盤和磁盤控制卡、應用
HACMP可以檢測和響應三種類型的故障:節點故障、網卡故障和網絡故障。
節點故障
指處理器硬件或操作系統故障。當發生節點故障上,其它節點可以配置為:
接管共享磁盤、Vary-on卷組、Mount文件系統、Export NFS文件系統、接管IP地址、重啟應用。
磁盤物理上與多個節點相連。在非并發環境中,一個節點控制磁盤資源,如果該節點發生故障,它控制的磁盤資源(包括卷組、文件系統等)由其它節點接管。在并發環境中,多個節點同時控制磁盤資源,因此不需要磁盤接管。
IP地址接管使另一節點可以獲得故障節點的網絡地址。當提供給客戶機的服務綁定到一個特定的IP地址時,必須配置IP地址接管。如果只接管磁盤,客戶機將無法訪問服務器的IP地址。
當關鍵應用的節點離開群集時,接管節點重新啟動這個關鍵應用,使服務得以繼續。
網卡故障
HACMP軟件能夠處理服務網卡和備份網卡的故障。當服務網卡故障時,Cluster Manager將同一節點的服務網卡和備份網卡進行切換,服務網卡的故障是透明的。Cluster Manager檢測到備份網卡故障時只是記入日志,并不進行其它操作。
網絡故障
當群集中連接所有節點的網絡故障時,由于網絡配置各不相同,所以HACMP無法定義響應動作。此時系統在主控臺上顯示信息,事件被記入日志。用戶可以根據實際情況自己編寫腳本程序來響應網絡故障。
在大多數配置中,網絡都是單點故障點。為避免發生網絡單點故障,建議在配置HACMP時配置雙網絡。
其它類型的故障
磁盤和磁盤控制卡故障
HACMP自己不能直接處理磁盤和磁盤控制卡故障。但是數據可通過AIX的LVM 鏡像或磁盤陣列的RAID功能處理。
如果共享磁盤使用SCSI-2 Differential磁盤或SSA磁盤,磁盤故障可通過AIX的LVM 鏡像處理。此時需要跨磁盤進行LVM鏡像。單一磁盤故障就不會影響數據的可用性。如果磁盤配置卡發生故障,數據可通過跨總線的LVM鏡像來復制。
如果共享磁盤使用磁盤陣列,磁盤陣列自己負責數據的冗余保護。在連接RAID磁盤陣列時應采用多總線,避免磁盤配置卡的單點故障。
其他硬件故障
在HACMP中沒有直接支持,但可通過AIX Error Notification功能來捕獲特定錯誤并執行響應命令,例如:當發生關鍵硬件故障時可以shutdown,由另一個節點接管。
應用程序錯誤
可以自己編寫應用監視程序監視應用程序的錯誤信息或進程狀態,也可以通過AIX的SRC功能進行管理。
HACMP錯誤
HACMP的主進程發生錯誤時,可升級為節點故障進行處理。
電源故障
不要將同一設備的電源連接到一個電源上,最好使用UPS。
1.7 哪些情況下不適合使用HACMP
HACMP并不是萬能的,以下應用環境不適于采用HACMP來實現高可用性:
應用程序不在檢查點(Check-Point)時將數據寫入磁盤。這樣會造成節點故障時,無法保證數據的完整性。
系統崩潰后,應用程序不能自動恢復其數據。
哪怕幾秒鐘的巖機時間都是不可接受的。
內存里的內容不能丟失
對于最后兩種情況,建議采用容錯系統。