深入解析HP unix系統(tǒng)下oracle兩種集群模式原理
近日,由于項(xiàng)目中的需要對(duì)HP UNIX下的Oracle的集群模式進(jìn)行了研究。Oracle擁有VG共享存儲(chǔ)模式和獨(dú)占模式兩種集群模式,本文結(jié)合在實(shí)際項(xiàng)目,詳細(xì)介紹了實(shí)現(xiàn)oracle數(shù)據(jù)庫服務(wù)器的雙機(jī)熱備和動(dòng)態(tài)負(fù)載均衡的過程,具體如下:
1、雙機(jī)熱備(VG共享存儲(chǔ)模式)及負(fù)載均衡方案
雙機(jī)熱備的含義就是設(shè)置兩臺(tái)互為備份的服務(wù)器,并且在同一時(shí)間內(nèi)只有一臺(tái)服務(wù)器運(yùn)行。當(dāng)出現(xiàn)意外情況時(shí)候,其中一臺(tái)運(yùn)行著的服務(wù)器出現(xiàn)意外故障而無法啟動(dòng)時(shí),另一臺(tái)備份的服務(wù)器就會(huì)自動(dòng)的并迅速的啟動(dòng)運(yùn)行,從而保證整個(gè)應(yīng)用系統(tǒng)的正常運(yùn)行。雙機(jī)熱備的工作機(jī)制實(shí)際上是為整個(gè)網(wǎng)絡(luò)系統(tǒng)的中心服務(wù)器提供了一種故障自動(dòng)恢復(fù)能力。
這里需要清楚陣列盤信息、雙機(jī)軟件信息、HP unix雙機(jī)系統(tǒng)集群技術(shù)層次構(gòu)架、負(fù)載均衡和單點(diǎn)故障自動(dòng)切換:
1) 陣列盤就是盤陣上的硬盤,就是雙機(jī)熱備要用到的物理存儲(chǔ)。
2) 操作系統(tǒng)雙機(jī)軟件:roseha,IBM的AIX小機(jī)的HACMP,HP-UNIX的SG(MC/service guard)。windows的mscs等等。這里用HP-UNIX的SG(service guard)。
3) oracle數(shù)據(jù)庫集群軟件Serviceguard Extension for RAC
4) HP unix雙機(jī)系統(tǒng)集群技術(shù)層次構(gòu)架由HP unix 11.31操作系統(tǒng)、HP UX service guard 集群組件、Oracle數(shù)據(jù)庫集群等三部分組成,請(qǐng)看示意圖“HP unix雙機(jī)系統(tǒng)集群技術(shù)層次構(gòu)架”。
a) HP unix 11.31操作系統(tǒng)重要信息內(nèi)容是由系統(tǒng)內(nèi)核和卷組管理器組成。在安裝數(shù)據(jù)庫集群軟件(Serviceguard Extension for RAC)和操作系統(tǒng)集群軟件(service guard)的時(shí)候,需要修改HP unix的內(nèi)核參數(shù)信息,所以這里信息比較重要。
b) MC/service guard 是HP RX系列服務(wù)器的高可用性集群,在計(jì)算機(jī)軟硬件出現(xiàn)故障時(shí)候,可以繼續(xù)執(zhí)行應(yīng)用系統(tǒng)服務(wù),是一種基于應(yīng)用的可遷移方法。
c) 卷組管理器是管理陣列盤,就是盤陣上的硬盤,就是雙機(jī)熱備要用到的物理存儲(chǔ)。在HP UX系統(tǒng)中對(duì)應(yīng)關(guān)系是這樣:LUN——VG(邏輯磁盤)——對(duì)應(yīng)多個(gè)LV(邏輯卷),并掛在文件系統(tǒng)和未格式化裸設(shè)備(raw device)——共享存儲(chǔ)裸設(shè)備(shared raw device)。
圖 1 HP unix雙機(jī)系統(tǒng)集群技術(shù)層次構(gòu)架
5) 本次實(shí)施負(fù)載均衡方案是建立在加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,自動(dòng)調(diào)節(jié)應(yīng)用服務(wù)對(duì)兩臺(tái)節(jié)點(diǎn)上數(shù)據(jù)庫的響應(yīng)請(qǐng)求,分別對(duì)共享存儲(chǔ)數(shù)據(jù)的讀寫服務(wù)操作,實(shí)現(xiàn)增加數(shù)據(jù)吞吐量和提高效率。
6) 單點(diǎn)故障自動(dòng)切換:2臺(tái)主機(jī)(node1:40、node2:42)連接共享裸設(shè)備存儲(chǔ),同時(shí)只有一臺(tái)主機(jī)對(duì)一個(gè)物理設(shè)備進(jìn)行讀寫操作。系統(tǒng)定時(shí)發(fā)送heartbeat信息,一旦node1發(fā)生故障,系統(tǒng)自動(dòng)切換到node2上。
首先進(jìn)行相應(yīng)的網(wǎng)絡(luò)規(guī)劃,每臺(tái)主機(jī)需要有4個(gè)局域網(wǎng)IP和2個(gè)私有IP,公共ip地址和浮動(dòng)ip地址要在同一網(wǎng)段。如下表:
節(jié)點(diǎn) |
主機(jī)名 |
IP |
描述 |
1 |
node1 |
10.150.70.40 |
公共ip地址,管理用 |
1 |
node1-vip |
10.150.70.41 |
浮動(dòng)ip地址,提供對(duì)外的數(shù)據(jù)庫服務(wù) |
1 |
node1_priv |
192.168.10.31 |
心跳ip地址,節(jié)點(diǎn)間通訊和數(shù)據(jù)同步用 |
2 |
node2 |
10.150.70.42 |
公共ip地址,管理用 |
2 |
node2-vip |
10.150.70.43 |
浮動(dòng)ip地址,提供對(duì)外的數(shù)據(jù)庫服務(wù) |
2 |
node2_priv |
192.168.10.32 |
心跳ip地址,節(jié)點(diǎn)間通訊和數(shù)據(jù)同步用 |
隨后以本次雙機(jī)集群設(shè)置為例(如圖示:集群硬件故障時(shí)-單點(diǎn)故障自動(dòng)切換示意圖-正常狀態(tài)),node1包含一個(gè)應(yīng)用服務(wù)包、一個(gè)浮動(dòng)IP(node1-vip)和若干系統(tǒng)進(jìn)程及應(yīng)用占用的硬盤。同樣,node 2也包含一個(gè)應(yīng)用服務(wù)包、一個(gè)浮動(dòng)IP(node2-vip)和若干系統(tǒng)進(jìn)程及應(yīng)用占用的硬盤。node1-vip、node2-vip地址是固定的,node1、node2可以保證各自穩(wěn)定的為前端用戶提供服務(wù)所對(duì)應(yīng)的數(shù)據(jù)服務(wù)。同時(shí),集群系統(tǒng)中沒有任何一臺(tái)機(jī)器都在時(shí)刻運(yùn)行,沒有閑置,各自運(yùn)行自己的應(yīng)用,資源利用得到合理配置,性能得到最大發(fā)揮。
如果node1在集群系統(tǒng)中出現(xiàn)軟硬件或者網(wǎng)絡(luò)故障,MC/service guard自動(dòng)將程序包控制權(quán)轉(zhuǎn)移給node2。保證應(yīng)用服務(wù)繼續(xù)進(jìn)行,同時(shí)所有負(fù)載壓力加載到node2上。(如圖示:集群硬件故障時(shí)-單點(diǎn)故障自動(dòng)切換示意圖-切換狀態(tài))
圖2 集群硬件故障時(shí)-單點(diǎn)故障自動(dòng)切換示意圖(正常狀態(tài))
圖3 集群硬件故障時(shí)-單點(diǎn)故障自動(dòng)切換示意圖(切換狀態(tài))
1.1 HP unix陣列盤信息
HP unix陣列盤信息:一共有10個(gè)磁盤設(shè)備: /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 存儲(chǔ)規(guī)劃
HITACHI DF600F(日立存儲(chǔ))磁盤陣列劃分為7個(gè)vDisk(LUN)全部映射到兩臺(tái)主機(jī)。
具體劃分如下:
vDisk序號(hào) |
容量/單位 |
磁盤設(shè)備 |
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)狀態(tài)
VG同時(shí)在兩臺(tái)的主機(jī)上(40和42)被激活。在應(yīng)用Oracle OPS時(shí),這里卷組被以一種共享的方式激活,數(shù)據(jù)的完整性必須由應(yīng)用程序來保證。
因?yàn)椴僮飨到y(tǒng)本身無法保證數(shù)據(jù)的完整性,所以設(shè)成共享模式激活的卷組必須使用裸設(shè)備,這樣OS不會(huì)對(duì)該設(shè)備進(jìn)行緩沖,而完全交給應(yīng)用程序處理。
應(yīng)用VG的共享方式需要安裝MC/SG OPS edition.,其控制命令是vgchange –a s/n /dev /datavg。
VG對(duì)應(yīng)多個(gè)LV(邏輯卷,并掛在文件系統(tǒng)和共享裸設(shè)備(shared raw device)。這里對(duì)應(yīng)系統(tǒng)VG邏輯磁盤是:/dev/datavg,包含oracle數(shù)據(jù)庫安裝、升級(jí)、加載信息等文件存儲(chǔ)位置,都在這個(gè)/dev/datavg邏輯磁盤下,并劃分進(jìn)行相應(yīng)的LV邏輯卷。以下是系統(tǒng)中oracle數(shù)據(jù)庫文件對(duì)應(yīng)的存儲(chǔ)位置。
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、雙機(jī)熱備(VG獨(dú)占模式)方案
此類是純應(yīng)用服務(wù)器的集群,即各個(gè)應(yīng)用服務(wù)器都訪問統(tǒng)一的數(shù)據(jù)庫服務(wù)器,但彼此間并不需要文件共享存儲(chǔ)等,這種集群是比較簡單的。
2.1 VG獨(dú)占模式(exclusive)狀態(tài)
當(dāng)2臺(tái)主機(jī)共享一個(gè)VG時(shí),可以在2臺(tái)主機(jī)上激活VG,那么其中隨意一臺(tái)主機(jī)都可以對(duì)數(shù)據(jù)進(jìn)行修改,而其他的主機(jī)卻不知道數(shù)據(jù)已被改變,這樣數(shù)據(jù)的完整性無法保證。
所以在Cluster環(huán)境下,將共享VG的屬性置為exclusive模式。這樣,當(dāng)一臺(tái)主機(jī)已經(jīng)以exclusive模式激活VG之后,在其他的主機(jī)上無法再激活這個(gè)VG,這樣就保證了數(shù)據(jù)的完整性。應(yīng)用VG獨(dú)享方式需要安裝MC/SG,其控制命令是vgchange –c y/n vgXX。
3 兩種模式優(yōu)缺點(diǎn)
a) 不采用共享的存儲(chǔ)設(shè)備,只通過軟件方式實(shí)現(xiàn)雙機(jī)熱備。
優(yōu)點(diǎn):節(jié)約了昂貴的存儲(chǔ)設(shè)備投資。本機(jī)數(shù)據(jù)可以直接在多臺(tái)主機(jī)間流動(dòng)。
缺點(diǎn):會(huì)產(chǎn)生數(shù)據(jù)的前后不一致、或者會(huì)影響數(shù)據(jù)庫讀取的速度。閑置服務(wù)器資源。
舉例:如果在服務(wù)中斷時(shí)切換到備份服務(wù)器,則可能有少量已經(jīng)在主機(jī)完成的事務(wù)在備機(jī)上尚未實(shí)現(xiàn)。而與備份數(shù)據(jù)的恢復(fù)不同,備機(jī)啟動(dòng)后,后面的操作已經(jīng)進(jìn)行,因此丟失的數(shù)據(jù)包要找回就相當(dāng)難。故此種方式適用于對(duì)于丟失少量數(shù)據(jù)不是非常敏感的系統(tǒng)。
b) 采用共享的存儲(chǔ)設(shè)備,通過軟件方式實(shí)現(xiàn)雙機(jī)熱備。
優(yōu)點(diǎn):可以在無人值守的情況下提供快速的切換,并且不會(huì)有數(shù)據(jù)丟失現(xiàn)象。
缺點(diǎn):購買存儲(chǔ)設(shè)備花費(fèi)會(huì)比較高。
舉例:目前雙機(jī)熱備主流方式是這種軟硬件結(jié)合方式,本次測(cè)試實(shí)施內(nèi)容也是HP UX共享存儲(chǔ)的雙機(jī)熱備框架。