oracle大型數據庫系統在AIX/unix上的實戰詳解> 集中答疑 45 何謂HACMP

 

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

====================================================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章