HACMP可謂做伺服器的人,沒有不知道的——IBM的看家構架。近期來若干讀者電話、郵件討論HACMP的問題,要求我給大家說說這個東西。
這裡,我給大家轉載一個應該是來自IBM的文章,該文章寫作甚好,內容精確,比我說的應該是強了不少,大家讀之,必有受益! 文平
《oracle大型資料庫系統在AIX/unix上的實戰詳解》 集中答疑 45 何謂HACMP
=============================================================================================
Hacmp(High Availability Cluster Multi-Processing)雙機熱備份軟體的主要功能是提高客戶電腦系統及其應用的可靠性,而不是單台主機的可靠性。
一、Hacmp雙機系統的工作原理
HACMP的工作原理是利用LAN來監控主機及網路、網卡的狀態。在一個HACMP環境中有TCP/IP網路和非TCP/IP網路。TCP/IP網路即應用用戶端訪問的公用網,該網可以是大多數AIX所支援的網路,如Ethernet,T.R.,FDDI,ATM,SOCC,SLIP,等等。非TCP/IP網路用來為HACMP對HA環境(Cluster)中的各節點進行監控而提供的一個替代TCP/IP的通訊路徑,它可以是用RS232串口線將各節點串連起來,也可以是將各節點的SCSI卡或SSA卡設定成Target Mode方式。
1、作為雙機系統的兩台伺服器(主機A和B)同時運行Hacmp軟體;
2、伺服器除正常運行自機的應用外,同時又作為對方的備份主機;
主機A(運行應用): Service_ip: 172.16.1.1 Standby_ip: 172.16.2.1 Boot_ip: 172.16.1.3主機B(standby): Service_ip: 172.16.1.2 Standby_ip: 172.16.2.2 Boot_ip: 172.16.1.4
3、兩台主機系統(A和B)在整個運行過程中,通過 “心跳線”相互監測對方的運行情況(包括系統的軟硬體運行、網路通訊和應用運行情況等);
4、一旦發現對方主機的運行不正常(出故障)時,故障機上的應用就會立即停止運行,本機(故障機的備份機)就會立即在自己的機器上啟動故障機上的應用,把故障機的應用及其資源(包括用到的IP地址和磁碟空間等)接管過來,使故障機上的應用在本機繼續運行;
5、應用和資源的接管過程由Ha軟體自動完成,無需人工幹預;
6、當兩台主機正常工作時,也可以根據需要將其中一台機上的應用人為切換到另一台機(備份機)上運行。
HACMP雙機系統結構圖
二、Hacmp安裝配置前需作的準備工作
1、劃分清楚兩台伺服器主機各自要啟動並執行應用(如A機運行應用,B機作為standby);
2、給每個應用(組)分配Service_ip、Standby_ip、boot_ip和心跳線tty,如:
3、按照各主機的應用的要求,建立好各自的磁碟組,並分配好磁碟空間;
4、根據Ha軟體的要求,對伺服器作業系統的參數作必要的修改。
三、IBM HACMP雙機伺服器系統的解決方案
HACMP的安裝配置步驟如下:
(一)在兩台伺服器上分別安裝HACMP軟體
#smit installp
(二)分別檢查兩台主機上安裝的軟體是否成功
#/usr/sbin/cluster/diag/clverify
software
cluster
clverify>software
Valid Options are:
lpp
clverify.software> lpp
若沒有error出現則安裝成功。
(三)分別配置兩台伺服器的boot IP地址和Standby IP地址,保證boot 網和Standby網能ping通(用smit tcpip命令),用netstat命令檢查配置是否正確:
#netstat -i
(四)利用smit tty在兩台主機上增加一個TTY介面,配置心跳線(RS232):
#smitty tty TTY tty0 TTY type tty TTY interface rs232 Description Asynchronous Terminal Status Available Location 20-70-01-00 Parent adapter sa2 PORT number [0] Enable LOGIN disable BAUD rate [9600] PARITY [none] BITS per character [8] Number of STOP BITS [1]
用lsdev –Cc tty查看tty是否配置好。
#lsdev –Cc tty
在兩台上分別輸入如下命令:
S85_1# cat /etc/hosts >/dev/tty0
S85_2# cat
如果在S85_2機能接收到資訊,則表明心跳線已經配置好。
(五)具體配置及技巧
註:HACMP的配置(或修改配置)只需要在其中的一台主機上進行,當配置(或修改)完畢後使用同步命令將配置結果傳到另外一台主機上。一般選S85_1在進行配置。
在S85_1上運行smit hacmp,然後按照下面的步驟進行配置:
#smit hacmp
1、 Cluster Configuration
1.1、配置Cluster Topology
配置Configure Cluster/ Add a Cluster Definition * Cluster ID [100] * Cluster Name [sb_ha]配置Configure Nodes,增加兩個Node * Node Names [s85_a] * Node Names [s85_b]配置Configure Adapters,分別配置兩台機的service地址,boot地址,standby地址 及tty(a_svc、b_svc、a_boot、b_boot、a_stdby、b_stdby、a_tty、b_tty) * Adapter IP Label a_svc Network Type [ether] Network Name [ethnet] Network Attribute public Adapter Function service Adapter Identifier [172.16.1.1] Adapter Hardware Address [ ] Node Name [s85_a] 修改/etc/hosts及/.rhosts檔案,如:修改/etc/hosts檔案,增加以下內容: 172.16.1.1 a_svc 172.16.1.2 b_svc 172.16.1.3 a_boot 172.16.1.4 b_boot 172.16.2.1 a_stdby 172.16.2.2 b_stdby修改/.rhosts檔案,增加以下內容: a_svc b_svc a_boot b_boot a_stdby b_stdby
1.2、同步cluster(Cluster Configuration/ Cluster Topology/ Synchronize Cluster Topology)
在進行同步的時候可以先進行類比(Emulate)同步,當類比同步OK後再進行實際(actual)同步:
Synchronize Cluster Topology
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
Ignore Cluster Verification Errors? [No] +
* Emulate or Actual? [Emulate] +
2、配置Cluster Resources
2.1、定義一個資源群組(Define Resource Groups)
注意,在定義資源群組的時候,要注意Participating Node Names的先後順序。
Resource Group Name data_res New Resource Group Name [] Node Relationship cascading Participating Node Names [s85_a s85_b] 2.2、定義應用伺服器(Define Application Servers) Server Name ora_app New Server Name [ ] start Script [/etc/start] Stop Script [/etc/stop] 2.3、修改資源群組屬性(Change/Show Resources for a Resource Group) data_res組: Resource Group Name data_res Node Relationship cascading Participating Node Names s85_a s85_b Service IP label [a_svc] Filesystems(default is all) [] Filesystems Consistency Check fsck Filesystems Recovery Method sequential Filesystems to Export [] Filesystems to NFS mount [] Volume Groups [datavg logvg] Concurrent Volume groups [] Raw Disk PVIDs [] Application Servers [ora_app]
2.4、同步資源群組(Synchronize Cluster Resources)
在進行同步的時候可以先進行類比(Emulate)同步,當類比同步OK後再進行實際(actual)同步:
Synchronize Cluster Resources
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
Ignore Cluster Verification Errors? [No] +
* Emulate or Actual? [Emulate] +
3、HACMP的啟動及關閉
(1)啟動過程:
#smit clstart
#tail –f /tmp/hacmp.out
May 22 17:29:23 EVENT COMPLETED: node_up_complete s85_a
如果/tmp/hacmp.out檔案顯示類似上述資訊,則表明HACMP在本機上可以正常啟動。
(2)關閉過程:
#smit clstop
4、HACMP功能的測試
在HACMP配置完成並檢查沒有錯誤後,即可按3的方法啟動HACMP,進行功能測試。包括應用在同一台伺服器的兩個網卡能否切換,在兩台伺服器間能否切換等。可用命令:
#netstat-in
來看地址的切換情況
四、HACMP常見的故障解決方案
HACMP將診測並響應於三種類型的故障:1網卡故障,2網路工作,3節點故障。下面就這三種故障分別進行介紹。
1、網卡故障
HACMP的群集結構中,除了TCP/IP網路以外,還有一個非TCP/IP網路,它實際上是一根“心跳”線,專門用來診測是節點死機還是僅僅網路發生故障。如所示,一旦節點加入了 Cluster(即該節點上的HACMP已正常啟動),該節點的各個網卡、非TCP/IP網路就會不斷地接收並送Keep-Alive訊號,K-A的參數是可調的,HA在連續發送一定數量個包都丟失後就可確認對方網卡,或網路,或節點發生故障。因此,有了K-A後,HACMP可以很輕易地發現網卡故障,因為一旦某塊網卡發生故障發往該塊網卡的K-A就會丟失。
此時node 1上的cluster manager( HACMP的“大腦”)會產生一個swap-adapter的事件,並執行該事件的script(HACMP中提供了大部分通用環境下的事件 scripts,它們是用標準AIX命令和HACMP工具來寫的)。每個節點上都有至少兩塊網卡,一塊是service adapter,提供對外服務,另一塊是standby adapter,它的存在只有cluster manager知道,應用和client並不知道。
一旦發生swap-adapter事件後,cluster manager將原來service adapter的 IP地址轉移到standby adapter上,而standby地址轉移到故障網卡上,同時網路上其他節點進行ARP的重新整理。網卡互換(swap-adapter)在幾秒內就可完成,乙太網路為3秒,並且這種轉換對應用和client來說是透明的,只發生延遲但串連並不中斷。
2、網路故障
如果發往node1上的service和standby網卡上的K-A包全都丟失,而非TCP/IP網路上的K-A仍然存在,那麼HACMP判斷node1仍然正常而網路發生故障。此時HACMP執行一個。
3 、節點故障
如果不僅TCP/IP網路上的K-A全部丟失,而且非TCP/IP網路上的K-A也丟失,那麼HACMP斷定該節點發生故障,併產生node-down事件。此時將有資源接管,即放在共用磁碟陳列上的資源將由備份節點接管,接管包括一系列操作:Acquire disks,Varyon VG, Mount file systems,Export NFS file systems, Assume IP network Address, Restart highly available applications,其中IP地址接管和重新啟動應用由HACMP來實現,而其他是由AIX來完成。
當整個節點發生故障時,HACMP將故障節點的service IP address轉移到備份節點上,使網路上的client仍然使用這個IP地址,這個過程稱為IP地址接管(IPAT),當一個節點down掉後,如果設定了IP地址接管,網路上的clients會自動連接到接管節點上;同樣,如果設定了應用接管,該應用會在接管節點上自動重啟,從而使系統能繼續對外服務。對於要實現接管的應用,只需在HACMP中把它們設定成application server,並告訴HACMP啟動這個應用的start script的全路徑名和停止該應用的stop script的全路徑名。由此可見,應用接管的配置在HACMP中十分簡單,重要的是start script和stop script的寫作,這需要使用者對自己應用的瞭解。
4、其他故障
HACMP只去檢測網卡、網路和節點是否發生故障,並作出相應的轉移、接管行為。對於其他故障,那麼HACMP預設不作任何動作。
a、硬碟故障
一般我們都將硬碟設定成RAID-5方式或mirror方式,從而提供硬碟的高可用性。RAID-5將奇偶較驗位分散在硬碟組中,因此當一組內的一個硬碟壞掉,組內的其他硬碟可以通過奇偶較驗位將該硬碟上的資料恢複出來。RAID-5方式一般是由硬體實現的,如下7133的SSA適配器,而且如果同一組內的兩個硬碟壞掉,該組硬碟的資料很可能就會全部丟失。mirror方式是將同一個資料寫到至少兩個物理外置上,因此它的效率沒有RAID-5好,而且用盤量大,但安全性比RAID-5高,而且它易於實現,通過AIX中的(Logic Volume Management)可以很方便地設定。
b、硬碟控制卡
存放裝置串連到主機上都必須通過一塊控制卡,SCSI裝置是SCSI Adapter, SSA裝置是SSA Adapter,如果這塊卡壞掉,與之串連的外設就無法利用。有幾種辦法可以解決這個問題。
一種辦法是用多個adapter。每個主機上都有兩塊或兩塊以上adapter,分別串連mirror的資料,因此無論是硬碟壞掉,還是Adapter壞掉,所有好資料還是可以被主機利用,不會出現單點故障。這種方法實現起來並不難,但必須配置多塊adapter,而且必須採用資料mirror方式。這種方法也不用通過HACMP來實現。
另一種方法仍只用一塊adapter,利用HACMP中的Error Notification Facility( 錯誤通告機制)來解決。
Error Notification Facility是HACMP提供的對其他裝置的監控工具,任何報告給AIX的錯誤(error)都能被捕獲被採取相應措施。HACMP提供了smit介面,使配置簡單化。
我們已知道,用LVM可實現硬碟鏡像,當一個盤壞掉,仍有一份資料在鏡像盤裡,資料仍可進行讀寫,但此時資料不再有可用性,若鏡像盤也壞掉則資料全部丟失。所以在此例中,PV丟失(LVM_PVMISS)的資訊會大幅顯示在控制檯面上,從而提醒使用者去仔細查看error log找出故障並修複它。同樣,此例中HACMP提供了介面,結合AIX的功能,從而監控故障的發生。
c.、應用程式中斷
如果使用者的應用有kernel call調用,或以root身份來啟動等,一旦應用發生故障,很容易導致作業系統down掉,發生死機,這時實際上等於節點故障,HACMP會採取相應接管措施。如果只是應用自身死掉,AIX仍正常運行,HACMP最多利用Error Notification Facility來提供監控功能,對應用本身不採取任何動作。但如果應用中調用了AIX的SRC (System Resource Controller)機制所提供的API介面,就可以使應用在down掉後自動重新啟動。除了SRC提供API介面外,HACMP中的clinfo也提供這樣的API。
clinfo是cluster Information daemon,它負責維護整個cluster的狀態的資訊,clinfo API允許應用程式利用這些狀態資訊來採取相應行動。
d.、HACMP故障
如果cluster中節點的HACMP進程down掉,HACMP將其升級為節點故障,從而發生資源接管。
如上所述,HACMP只全權負責診斷網卡故障、網路故障和節點故障這三類故障,並負責實現IP地址轉換或接管,以及整個系統資源( 硬體、檔案、系統、應用程式,等等)的接管。對於這三類故障外的其他故障,可以結合AIX準系統和HACMP提供的一些機制,如Error Notification Facility, clinfo API 等,同樣可以實現對故障的監控並採取相應措施。
文平
《oracle大型資料庫系統在AIX/unix上的實戰詳解》 集中答疑 45 何謂HACMP
====================================================================================