深入解析HP unix系統下oracle兩種集群模式原理
近日,由于項目中的需要對HP UNIX下的Oracle的集群模式進行了研究。Oracle擁有VG共享存儲模式和獨占模式兩種集群模式,本文結合在實際項目,詳細介紹了實現oracle數據庫服務器的雙機熱備和動態負載均衡的過程,具體如下:
1、雙機熱備(VG共享存儲模式)及負載均衡方案
雙機熱備的含義就是設置兩臺互為備份的服務器,并且在同一時間內只有一臺服務器運行。當出現意外情況時候,其中一臺運行著的服務器出現意外故障而無法啟動時,另一臺備份的服務器就會自動的并迅速的啟動運行,從而保證整個應用系統的正常運行。雙機熱備的工作機制實際上是為整個網絡系統的中心服務器提供了一種故障自動恢復能力。
這里需要清楚陣列盤信息、雙機軟件信息、HP unix雙機系統集群技術層次構架、負載均衡和單點故障自動切換:
1) 陣列盤就是盤陣上的硬盤,就是雙機熱備要用到的物理存儲。
2) 操作系統雙機軟件:roseha,IBM的AIX小機的HACMP,HP-UNIX的SG(MC/service guard)。windows的mscs等等。這里用HP-UNIX的SG(service guard)。
3) oracle數據庫集群軟件Serviceguard Extension for RAC
4) HP unix雙機系統集群技術層次構架由HP unix 11.31操作系統、HP UX service guard 集群組件、Oracle數據庫集群等三部分組成,請看示意圖“HP unix雙機系統集群技術層次構架”。
a) HP unix 11.31操作系統重要信息內容是由系統內核和卷組管理器組成。在安裝數據庫集群軟件(Serviceguard Extension for RAC)和操作系統集群軟件(service guard)的時候,需要修改HP unix的內核參數信息,所以這里信息比較重要。
b) MC/service guard 是HP RX系列服務器的高可用性集群,在計算機軟硬件出現故障時候,可以繼續執行應用系統服務,是一種基于應用的可遷移方法。
c) 卷組管理器是管理陣列盤,就是盤陣上的硬盤,就是雙機熱備要用到的物理存儲。在HP UX系統中對應關系是這樣:LUN——VG(邏輯磁盤)——對應多個LV(邏輯卷),并掛在文件系統和未格式化裸設備(raw device)——共享存儲裸設備(shared raw device)。
5) 本次實施負載均衡方案是建立在加強網絡數據處理能力,自動調節應用服務對兩臺節點上數據庫的響應請求,分別對共享存儲數據的讀寫服務操作,實現增加數據吞吐量和提高效率。
6) 單點故障自動切換:2臺主機(node1:40、node2:42)連接共享裸設備存儲,同時只有一臺主機對一個物理設備進行讀寫操作。系統定時發送heartbeat信息,一旦node1發生故障,系統自動切換到node2上。
首先進行相應的網絡規劃,每臺主機需要有4個局域網IP和2個私有IP,公共ip地址和浮動ip地址要在同一網段。如下表:
節點 |
主機名 |
IP |
描述 |
1 |
node1 |
10.150.70.40 |
公共ip地址,管理用 |
1 |
node1-vip |
10.150.70.41 |
浮動ip地址,提供對外的數據庫服務 |
1 |
node1_priv |
192.168.10.31 |
心跳ip地址,節點間通訊和數據同步用 |
2 |
node2 |
10.150.70.42 |
公共ip地址,管理用 |
2 |
node2-vip |
10.150.70.43 |
浮動ip地址,提供對外的數據庫服務 |
2 |
node2_priv |
192.168.10.32 |
心跳ip地址,節點間通訊和數據同步用 |
隨后以本次雙機集群設置為例(如圖示:集群硬件故障時-單點故障自動切換示意圖-正常狀態),node1包含一個應用服務包、一個浮動IP(node1-vip)和若干系統進程及應用占用的硬盤。同樣,node 2也包含一個應用服務包、一個浮動IP(node2-vip)和若干系統進程及應用占用的硬盤。node1-vip、node2-vip地址是固定的,node1、node2可以保證各自穩定的為前端用戶提供服務所對應的數據服務。同時,集群系統中沒有任何一臺機器都在時刻運行,沒有閑置,各自運行自己的應用,資源利用得到合理配置,性能得到最大發揮。
如果node1在集群系統中出現軟硬件或者網絡故障,MC/service guard自動將程序包控制權轉移給node2。保證應用服務繼續進行,同時所有負載壓力加載到node2上。(如圖示:集群硬件故障時-單點故障自動切換示意圖-切換狀態)
1.1 HP unix陣列盤信息
HP unix陣列盤信息:一共有10個磁盤設備: /dev/dsk/ c0t6d0、/dev/dsk/ c1t2d0、 /dev/dsk/ c2t6d0、/dev/dsk/ c5t15d0、 /dev/dsk/c4t15d1、/dev/dsk/ c4t15d2、/dev/dsk/ c4t15d3、/dev/dsk/ c4t15d4、/dev/dsk/c4t15d5、/dev/dsk/c4t15d6。
Class I H/W Path Driver S/W State H/W Type Description ======================================================================= disk 0 0/0/0/2/0.6.0 sdisk CLAIMED DEVICE HP 300 GMBA3300NC /dev/dsk/c0t6d0 /dev/rdsk/c0t6d0 /dev/dsk/c0t6d0s1 /dev/rdsk/c0t6d0s1 /dev/dsk/c0t6d0s2 /dev/rdsk/c0t6d0s2 /dev/dsk/c0t6d0s3 /dev/rdsk/c0t6d0s3 disk 1 0/0/0/2/1.2.0 sdisk CLAIMED DEVICE HL-DT-STDVD-RAM GH40L /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0 disk 2 0/0/0/3/0.6.0 sdisk CLAIMED DEVICE HP 300 GMBA3300NC /dev/dsk/c2t6d0 /dev/rdsk/c2t6d0 /dev/dsk/c2t6d0s1 /dev/rdsk/c2t6d0s1 /dev/dsk/c2t6d0s2 /dev/rdsk/c2t6d0s2 /dev/dsk/c2t6d0s3 /dev/rdsk/c2t6d0s3 disk 3 1/0/12/0/0/0/0.1.0.255.14.15.0 sdisk CLAIMED DEVICE HITACHI DF600F /dev/dsk/c4t15d0 /dev/rdsk/c4t15d0 disk 4 1/0/12/0/0/0/0.1.0.255.14.15.1 sdisk CLAIMED DEVICE HITACHI DF600F /dev/dsk/c4t15d1 /dev/rdsk/c4t15d1 disk 5 1/0/12/0/0/0/0.1.0.255.14.15.2 sdisk CLAIMED DEVICE HITACHI DF600F /dev/dsk/c4t15d2 /dev/rdsk/c4t15d2 disk 6 1/0/12/0/0/0/0.1.0.255.14.15.3 sdisk CLAIMED DEVICE HITACHI DF600F /dev/dsk/c4t15d3 /dev/rdsk/c4t15d3 disk 7 1/0/12/0/0/0/0.1.0.255.14.15.4 sdisk CLAIMED DEVICE HITACHI DF600F /dev/dsk/c4t15d4 /dev/rdsk/c4t15d4 disk 8 1/0/12/0/0/0/0.1.0.255.14.15.5 sdisk CLAIMED DEVICE HITACHI DF600F /dev/dsk/c4t15d5 /dev/rdsk/c4t15d5 disk 9 1/0/12/0/0/0/0.1.0.255.14.15.6 sdisk CLAIMED DEVICE HITACHI DF600F /dev/dsk/c4t15d6 /dev/rdsk/c4t15d6 |
1.2 存儲規劃
HITACHI DF600F(日立存儲)磁盤陣列劃分為7個vDisk(LUN)全部映射到兩臺主機。
具體劃分如下:
vDisk序號 |
容量/單位 |
磁盤設備 |
VG(邏輯磁盤) |
用途說明 |
3 |
1GB |
/dev/dsk/c4t15d0 |
/dev/datavg |
ASM spfile |
4 |
1GB |
/dev/dsk/c4t15d1 |
/dev/datavg |
OCR |
5 |
1GB |
/dev/dsk/c4t15d2 |
/dev/datavg |
ORC鏡像 |
6 |
1GB |
/dev/dsk/c4t15d3 |
/dev/datavg |
RAC表決盤 |
7 |
1GB |
/dev/dsk/c4t15d4 |
/dev/datavg |
RAC表決盤鏡像1 |
8 |
1GB |
/dev/dsk/c4t15d5 |
/dev/datavg |
RAC表決盤鏡像2 |
9 |
700GB |
/dev/dsk/c4t15d6 |
/dev/vg00/lvoracle |
ASM 磁盤 |
1.3 VG共享模式(shared)狀態
VG同時在兩臺的主機上(40和42)被激活。在應用Oracle OPS時,這里卷組被以一種共享的方式激活,數據的完整性必須由應用程序來保證。
因為操作系統本身無法保證數據的完整性,所以設成共享模式激活的卷組必須使用裸設備,這樣OS不會對該設備進行緩沖,而完全交給應用程序處理。
應用VG的共享方式需要安裝MC/SG OPS edition.,其控制命令是vgchange –a s/n /dev /datavg。
VG對應多個LV(邏輯卷,并掛在文件系統和共享裸設備(shared raw device)。這里對應系統VG邏輯磁盤是:/dev/datavg,包含oracle數據庫安裝、升級、加載信息等文件存儲位置,都在這個/dev/datavg邏輯磁盤下,并劃分進行相應的LV邏輯卷。以下是系統中oracle數據庫文件對應的存儲位置。
ll /dev/datavg/r* crw-r----- 1 oracle dba 64 0x020008 Sep 24 16:37 /dev/datavg/rdb_control01 crw-r----- 1 oracle dba 64 0x020009 Sep 24 16:37 /dev/datavg/rdb_control02 crw-r----- 1 oracle dba 64 0x02000a Sep 24 16:37 /dev/datavg/rdb_control03 crw-r----- 1 oracle dba 64 0x020020 Sep 24 16:37 /dev/datavg/rdb_fwms_01 crw-r----- 1 oracle dba 64 0x02001e Sep 24 16:37 /dev/datavg/rdb_lcam_01 crw-r----- 1 oracle dba 64 0x02001f Sep 24 16:37 /dev/datavg/rdb_lcam_02 crw-r----- 1 oracle dba 64 0x020014 Sep 24 16:37 /dev/datavg/rdb_redo1_01 crw-r----- 1 oracle dba 64 0x020015 Sep 24 16:37 /dev/datavg/rdb_redo1_02 crw-r----- 1 oracle dba 64 0x020016 Sep 24 16:37 /dev/datavg/rdb_redo1_03 crw-r----- 1 oracle dba 64 0x020017 Sep 24 16:37 /dev/datavg/rdb_redo1_04 crw-r----- 1 oracle dba 64 0x020018 Sep 24 16:37 /dev/datavg/rdb_redo1_05 crw-r----- 1 oracle dba 64 0x020019 Sep 24 16:37 /dev/datavg/rdb_redo2_01 crw-r----- 1 oracle dba 64 0x02001a Sep 24 16:37 /dev/datavg/rdb_redo2_02 crw-r----- 1 oracle dba 64 0x02001b Sep 24 16:37 /dev/datavg/rdb_redo2_03 crw-r----- 1 oracle dba 64 0x02001c Sep 24 16:37 /dev/datavg/rdb_redo2_04 crw-r----- 1 oracle dba 64 0x02001d Sep 24 16:37 /dev/datavg/rdb_redo2_05 crw-r----- 1 oracle dba 64 0x02000c Sep 24 16:37 /dev/datavg/rdb_sysaux01 crw-r----- 1 oracle dba 64 0x02000d Sep 24 16:37 /dev/datavg/rdb_system01 crw-r----- 1 oracle dba 64 0x02000e Sep 24 16:37 /dev/datavg/rdb_temp01 crw-r----- 1 oracle dba 64 0x02000f Sep 24 16:37 /dev/datavg/rdb_temp02 crw-r----- 1 oracle dba 64 0x020010 Sep 24 16:37/dev/datavg/rdb_undo1_01 crw-r----- 1 oracle dba 64 0x020011 Sep 24 16:37 /dev/datavg/rdb_undo1_02 crw-r----- 1 oracle dba 64 0x020012 Sep 24 16:37 /dev/datavg/rdb_undo2_01 crw-r----- 1 oracle dba 64 0x020013 Sep 24 16:37 /dev/datavg/rdb_undo2_02 crw-r----- 1 oracle dba 64 0x02000b Sep 24 16:37 /dev/datavg/rdb_users01 crw-r----- 1 oracle dba 64 0x020026 Sep 24 16:37 /dev/datavg/rlvexp crw-r----- 1 oracle dba 64 0x02002b Sep 24 16:37 /dev/datavg/rlvwz_01 crw-r----- 1 oracle dba 64 0x02002c Sep 24 16:37 /dev/datavg/rlvwz_02 crw-r----- 1 oracle dba 64 0x02002d Sep 24 16:37 /dev/datavg/rlvwz_03 crw-r----- 1 oracle dba 64 0x02002e Sep 24 16:37 /dev/datavg/rlvwz_04 crw-r----- 1 oracle dba 64 0x02002f Sep 24 16:37 /dev/datavg/rlvwz_05 crw-r----- 1 oracle dba 64 0x020030 Sep 24 16:37 /dev/datavg/rlvwz_06 crw-r----- 1 oracle dba 64 0x020031 Sep 24 16:37 /dev/datavg/rlvwz_07 crw-r----- 1 oracle dba 64 0x020032 Sep 24 16:37 /dev/datavg/rlvwz_08 crw-r----- 1 oracle dba 64 0x020033 Sep 24 16:37 /dev/datavg/rlvwz_09 crw-r----- 1 oracle dba 64 0x020034 Sep 24 16:37 /dev/datavg/rlvwz_10 crw-r----- 1 oracle dba 64 0x020035 Sep 24 16:37 /dev/datavg/rlvwz_11 crw-r----- 1 oracle dba 64 0x020036 Sep 24 16:37 /dev/datavg/rlvwz_12 crw-r----- 1 oracle dba 64 0x020037 Sep 24 16:37 /dev/datavg/rlvwz_13 crw-r----- 1 oracle dba 64 0x020038 Sep 24 16:37 /dev/datavg/rlvwz_14 crw-r----- 1 oracle dba 64 0x020021 Sep 24 16:37 /dev/datavg/rlvwz_15 crw-r----- 1 oracle dba 64 0x020022 Sep 24 16:37 /dev/datavg/rlvwz_16 crw-r----- 1 oracle dba 64 0x020023 Sep 24 16:37 /dev/datavg/rlvwz_17 crw-r----- 1 oracle dba 64 0x020024 Sep 24 16:37 /dev/datavg/rlvwz_18 crw-r----- 1 oracle dba 64 0x020025 Sep 24 16:37 /dev/datavg/rlvwz_19 crw-r----- 1 oracle dba 64 0x02003f Sep 24 16:37 /dev/datavg/rlvwz_archives01 crw-r----- 1 oracle dba 64 0x020039 Sep 24 16:37/dev/datavg/rlvwz_archives02 crw-r----- 1 root oinstall 64 0x020004 Sep 24 16:37 /dev/datavg/rora_crs01 crw-r----- 1 root oinstall 64 0x020005 Sep 24 16:37 /dev/datavg/rora_crs02 crw-r----- 1 oracle dba 64 0x020007 Sep 24 16:37 /dev/datavg/rora_pwd crw-r----- 1 oracle dba 64 0x020006 Sep 24 16:37 /dev/datavg/rora_spfile crw-r----- 1 oracle dba 64 0x020001 Sep 24 16:37 /dev/datavg/rora_vote01 crw-r----- 1 oracle oinstall 64 0x020002 Sep 24 16:37 /dev/datavg/rora_vote02 crw-r----- 1 oracle oinstall 64 0x020003 Sep 24 16:37 /dev/datavg/rora_vote03 |
2、雙機熱備(VG獨占模式)方案
此類是純應用服務器的集群,即各個應用服務器都訪問統一的數據庫服務器,但彼此間并不需要文件共享存儲等,這種集群是比較簡單的。
2.1 VG獨占模式(exclusive)狀態
當2臺主機共享一個VG時,可以在2臺主機上激活VG,那么其中隨意一臺主機都可以對數據進行修改,而其他的主機卻不知道數據已被改變,這樣數據的完整性無法保證。
所以在Cluster環境下,將共享VG的屬性置為exclusive模式。這樣,當一臺主機已經以exclusive模式激活VG之后,在其他的主機上無法再激活這個VG,這樣就保證了數據的完整性。應用VG獨享方式需要安裝MC/SG,其控制命令是vgchange –c y/n vgXX。
3 兩種模式優缺點
a) 不采用共享的存儲設備,只通過軟件方式實現雙機熱備。
優點:節約了昂貴的存儲設備投資。本機數據可以直接在多臺主機間流動。
缺點:會產生數據的前后不一致、或者會影響數據庫讀取的速度。閑置服務器資源。
舉例:如果在服務中斷時切換到備份服務器,則可能有少量已經在主機完成的事務在備機上尚未實現。而與備份數據的恢復不同,備機啟動后,后面的操作已經進行,因此丟失的數據包要找回就相當難。故此種方式適用于對于丟失少量數據不是非常敏感的系統。
b) 采用共享的存儲設備,通過軟件方式實現雙機熱備。
優點:可以在無人值守的情況下提供快速的切換,并且不會有數據丟失現象。
缺點:購買存儲設備花費會比較高。
舉例:目前雙機熱備主流方式是這種軟硬件結合方式,本次測試實施內容也是HP UX共享存儲的雙機熱備框架。