理解雙機熱備,必須要認清這樣幾點:
1. 對于一臺服務器而言,壞的可能總是存在的。故障的原因多種多樣,包括硬件、軟件、人為故障等,任何一個環節都有可能發生。
2. 服務中斷不僅可能發生在管理員在的時候,也可能發生在機房空無一人的時候,而一臺跑著應用系統的數據庫服務器,并不是很容易就能恢復的。
3. 數據備份當然是重要的數據保護措施,但只是事后的解決方法,無法預防應用停止。
4. RAID只能解決硬盤的問題,解決不了服務器的問題。
當然如果系統中沒重要應用,我們沒必要考慮雙機熱備。或者我們可以容忍應用系統停止運行一天,雙機系統也并非十分重要。但是,如果應用停上一個小時就會帶來嚴重的問題,那么就無疑應該考慮一下雙機系統,而如果業務系統停上十分鐘都難以承受,這時候雙機熱備方案就是必須的了。
雙機系統實際上是服務器應用的冗余備份,但是因為通常采用外置磁盤陣列存儲數據,因而企業可以更方便集中的對數據進行管理和備份,從而進一步提高整個系統的效率和可用性。當一臺服務器上的應用發生故障時,系統可以方便無縫的切換到另外一臺服務器,承擔起原有該服務器所承擔的大部分應用,從而保證業務的不停頓運行。最重要的是,整個切換過程是自動進行的,前端幾乎很難察覺到后臺的服務器系統的故障。
雙機熱備系統本身已經是較為穩定的系統,這表現在雙機熱備系統已經具備了一定的抗風險能力,但是雙機熱備系統也意味著更復雜的管理、維護和升級工作。因此,在這里,我們通過兩臺IBM P630小型機和7133磁盤陣列實現雙機熱備為例,來說明通過HACMP 5.1來實現AIX 5.2的Oracle 9i數據庫主從熱備系統的運行維護和升級管理工作。
IBM HACMP雙機熱備方案說明
HACMP 是 High Availability Cluster Multi-Processing 的縮寫。HACMP 是 IBM 公司在 P 系列 AIX 操作系統上的高可靠集群軟件,配置冗余,消除單點故障,保證整個系統連續可用性和安全可靠性。HACMP是利用網絡來偵測主機及網卡的狀況,搭配AIX所提供的硬盤鏡像等功能,在主機、網卡、硬盤控制卡、硬盤或網絡任何一個環節發生故障時,都可自動切換到另一套備用元件上重新工作;若是主機故障還切換至備份機上繼續應用系統的運行。
圖1
圖2
如上圖,兩臺主機A和B分別都安裝AIX 5.2系統,HACMP軟件和Oracle 9i數據庫,數據和應用系統安裝在7133磁盤陣列上。作為雙機系統的兩臺服務器A和B同時運行 HACMP 軟件,一臺P630作為主機A運行oracle 9i和應用系統,另一臺P630作為備份機B處于備份狀態(此時沒有運行數據庫和應用系統)。
在整個運行過程中,通過 串口的SCSI“心跳線”相互監測對方的運行情況 (包括系統的軟硬件運行、網絡通訊和應用運行情況等)一旦發現對方主機A運行不正常時,備份機B就會立即在自己的機器上啟動應用,把主機A的應用及其資源(包括用到的IP地址和磁盤空間等)接管過來,使主機A上的應用在備份機B繼續運行。
主機和備份機的確定取決于哪臺機器先啟動了HACMP服務,先啟動的就是主機,另外一臺就是備份機。應用和資源的接管過程由 HACMP 軟件自動完成,無需人工干預;當兩臺主機正常工作時,也可以根據需要將其中一臺機上的應用人為切換到另一臺機 (備份機)上運行。
雙機系統的維護與管理更為復雜一點,在雙機熱備系統的維護與管理中,個人認為以下四大環節是必須注意的:
一、重視雙機熱備的啟動程序
雙機熱備系統的開機順序是必須重視的,我們以前不久機房的一次斷電事故來說明雙機熱備系統啟動程序的重要性。
由于單位進行機房改造,需要切換市電。為保證業務不間斷運營,我們通過60KVA的梅蘭日藍UPS給機房提供不間斷供電,同時考慮到60KVA所帶的負載較重,關閉了一些不重要的服務器,也做了一些應急措施。但是當機房停電5分鐘時間后,UPS突然宕機,隨即機房的所有網絡設備和服務器全體“罷工”。
檢查UPS發現供電電池出現問題,不能提供30分鐘的正常供電,我們只好重新恢復市電工作。斷電前由于沒有及時關閉P630小型機和7133磁盤陣列的電源開關,當市電啟用時,小型機和7133磁盤陣列也就自動啟動了。
AIX系統起來后,我們到兩臺小型機上查看運行ORACLE數據庫和應用系統時,發現找不到“數據盤”,用Lsvg顯示當前系統的所有卷組,發現只有rootvg,沒有datavg,而數據卷組是放在7133磁盤陣列上的。這就是典型的因為掉電造成的非正常關機和開機導致了無法正常啟動。
在這個方案中,雙機熱備系統正確的開機步驟應當是這樣的:
- 先開外設如磁盤陣列7133和磁帶機
- 然后再開兩臺主機A和B
- 等主機AIX系統啟動后,然后再分別啟動HACMP服務,注意不能同時啟動HACMP服務
- 最后啟動ORACLE數據庫和應用系統。
- 關機則正好相反,先關閉ORACLE數據庫服務和應用系統,再停止HACMP服務,然后關閉主機系統,最后關閉磁盤陣列7133和磁帶機。
所以啟動雙機熱備系統的時候遵循正確的啟動程序非常重要,在上面的案例中,因為來電時,小型機和磁盤陣列同時啟動,等AIX啟動好后就認不出磁盤陣列等外設了。解決方法是關閉小型機和7133磁盤陣列,再按照規范開機順序開啟系統,等AIX系統起來后,啟動HACMP,再查看數據卷組時,就能找到了。啟動數據庫和應用服務,測試結果一切正常。這一點與現在的PC機操作不同,外設和主機同時啟動都不會出什么問題的。
此外,在使用HACMP服務時,兩臺小型機也不能同時打開,必須按先后順序來開機。這是因為我們采用的雙機熱備模式是主從熱備,啟動HACMP服務的先后順序決定了哪一臺作為主機,哪一臺作為備機。因此,當兩臺機器同時啟動的時候,就會造成HACMP服務運行“混亂”,結果當一臺小型機發生故障時,另外一臺小型機不能進行自動接管,不能真正達到雙機熱備的效果。
同樣地關機時也要嚴格按照關機順序,如果先關閉7133磁盤陣列時,就有可能引發的數據丟失。這必須要引起大家在運行維護中高度重視,否則的話,造成數據丟失,后果將是非常嚴重的。
二、定期查詢HACMP的運行狀態
我們需要定期地查詢HACMP 雙機系統的狀態,在雙機系統的運行當中,我們經常需要知道雙機系統的當前狀態,才有可能對雙機系統出現的異常情況進行恢復處理,才能保證雙機系統的高可用性和高容錯性。查詢HACMP 雙機系統的狀態只需以root 用戶進入需要查詢的節點進行下列操作:
首先檢查HACMP 雙機軟件在該節點是否已啟動命令如下。
# lssrc -g cluster
若是系統顯示出下面類似的信息則說明HACMP 雙機軟件已正常啟動。
Subsystem Group PID Status
clstrmgr cluster 22500 active
clsmuxpd cluster 23674 active
clinfo cluster 28674 active
在已確認雙機軟件HACMP 正常啟動的情況下在命令行執行下述命令來察看雙機系統的當前狀態。
# /usr/sbin/cluster/clstat -a
HACMP運行時只去檢測網卡、網絡和節點是否發生故障,并作出相應的轉移、接管行為。對于其他故障,那么HACMP缺省不作任何動作。對于雙機熱備時出現硬盤控制卡和應用故障處理方法,一般是結合AIX基本功能和HACMP提供的一些機制,如Error Notification Facility, clinfo API 等,同樣可以實現對故障的監控并采取相應措施。
如果用戶的應用有kernel call調用,或以root身份來啟動等,一旦應用發生故障,很容易導致AIX操作系統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允許應用程序利用這些狀態信息來采取相應行動。