Oracle11g RAC高可用性理論整理

流浪的野狼發表於2014-01-17
 

Oracle11g RAC高可用性理論整理筆記

流浪的野狼筆記

Ohasd 程式oracle high available service demon高可用性守護程式。該程式在11g開始發揮強大的作用,有系統init生成。在/etc/inittab中有h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 (表示無論linux執行在3還是5級別,都會以respawn模式來執行/etc/init.d/init.ohasd指令碼,即就是啟動ohasd服務,respawn模式意味著該程式停止後會被自動重啟)

注意:RAC中執行非常突然地時間調整可能會導致節點被踢出叢集。

叢集CTSS:

叢集的CTSS實際那同步服務在配置了NTP等時間同步的情況下將處於觀察模式(observer mode),如ntp不存在於任何節點中時,CTSS服務將會被啟用負責cluster的時間同步。透過crsctl check ctss來檢查CTSS服務所處的模式。透過cluvfy comp clocksync –all檢查叢集所使用何種時間同步服務。

Clusterware磁碟檔案:

Clusterware執行需要的磁碟檔案有:OCR(oracle叢集登錄檔)Votedisk(表決磁碟)、以及11gR2中引入的LCR(本地註冊),其中OCRVotedisk存放在共享儲存上,LCR存放在各節點上。LCR包含特定節點的clusterware配置資訊,lhasd啟動的時候使用LCR中的資訊。

11gR2中,clusterware的圖形化介面已開始不再支援使用裸裝置作為磁碟檔案的儲存方式。

1.   表決磁碟

也叫做表決檔案(Votefile),為解決網路分裂而建,clusterware使用表決磁碟決定哪些節點是叢集成員,表決磁碟的讀寫都是由ohasd程式來完成的。

若表決磁碟的冗餘級別為normal,則至少使用3個故障組,若為high,則至少使用5個故障組。

注意:使用ASM作為OCR和表決磁碟的儲存,無法使用命令對OCR和表決磁碟進行新增,因儲存在ASMclusterware檔案的個數都是由ASM磁碟組的冗餘級別決定的。Oracle支援最大的表決磁碟的數量是15個。表決磁碟的個數應該是一個奇數,這是為了在節點出現故障時clusterware能夠使用投票演算法及時的將故障幾點踢出叢集。

11g之前表決磁碟的備份使用的是dd命名,在11g之後dd命令的備份將不再被支援。Clusterware不再需要手動備份表決磁碟,表決磁碟的任何配置的改變將自動的新增到OCR備份檔案中。表決磁碟資料透過crsctl工具自動會員到任何新增的表決磁碟中。

2.   叢集登錄檔

叢集登錄檔儲存著clusterware所有組建的配置資訊,clusterware根據OCR的配置資訊管理Clusterware組建,包括RAC資料庫、監聽器、VIPService的所有的應用。OCR的配置資訊以一個樹狀結構和連續的鍵值對儲存在OCR磁碟中。

OCR必須放在共享儲存上被所有的節點訪問。若多個OCR儲存位置上的OCR出現損壞,則透過OCRCONFIG管理工具很容易的實現是被OCR檔案的聯機替換。

OCR的管理維護中,必須使用Clusterware支援的工具來更新OCR,如EMSRVCTLOCRCONFIGDBCA

OCR每個四小時被自動備份到/cdata//目錄西,透過使用OCRCONFIG工具可實現手動備份還原。

正對OCR常用的工具有:ocrdumpocrconfigocrcheck

透過/etc/oracle/ocr.loc檔案中的記錄可確定OCR檔案和映象檔案的儲存位置。

3.   本地登錄檔

11gR2開始引入了OLR(本地登錄檔),存放在各個節點的$GRID_HOME/cdata/目錄下,預設安裝後會自動建立一個OLR備份檔案,放在$GRID_HOME/cdata/$HOST/目錄下,在OLR檔案損壞的情況下可使用該備份進行恢復,後期也可手動透過ocrconfig命令備份OLR

Clusterware啟動流程

RAC的整個啟動流程分為高可用**層和叢集就緒服務層。叢集就緒服務層由叢集就緒服務(Clusterware Ready Services,CRS)控制,而高可用**層由oracle高可用**(High Availability Services,HAS)控制,11Gr2RAC出現了很多以“agent”結尾的代理程式,用來協助主程式完成叢集的管理工作,這些程式都執行在spawns模式下,一旦執行失敗就會自動重啟,以維護RAC的高可用性。

詳細可參考《構建高可用oracle資料庫系統-oracle1gR2 RAC管理、維護效能最佳化》P98

Clusterware隔離機制

   在所有高可用性環境中幾乎都存在心跳,心跳的主要目的是為了檢測叢集中各節點的狀態,若檢測失敗,管理軟體會認為某個節點存在故障,並根據一定的演算法做出合適的處理,避免對整個環境的影響,及高可用性軟體的自動修復功能。

1.  Clusterware心跳

A、     網路心跳:所謂網路心跳就是透過私有網路來檢測節點的狀態。,有私有網路硬體或者軟體的故障導致叢集節點間的私有網路在一定時間內無法進行的通訊,這種現象就稱作腦裂出現腦裂時需要將不正確的節點隔離出叢集,私有網路出現不能正常通訊有一個超時時間稱作misscount,可透過命令crsctl get css misscount來檢視。

B、     投票演算法:當出現腦裂時,clusterware透過投票演算法來講不正確的節點踢出叢集。若有三個節點如(A/B/C),若其中某個節點出現故障,則節點投票表決踢出損壞節點,能正常通訊的節點總共得到兩票,而損壞節點僅有自己一票,故此被逐出叢集。但是若只有兩個節點呢(A/B),此時好壞兩個節點各執一票如何決定誰好誰壞,此時只能透過獲取表決磁碟的一票來決定,誰先得到表決磁碟的一票,則會將另外一個節點踢出叢集。多個節點的處理類似上述處理情況。在1Gr2開始,還可以透過crsctl工具配置IPMI來實現I/O隔離的目的。

C、     磁碟心跳:所謂磁碟心跳就是透過共享磁碟來檢測節點的狀態。在clusterware磁碟檔案中,表決磁碟就是用於檢測clusterware磁碟心跳的共享磁碟。在更多的時候,clusterware利用表決磁碟來檢查磁碟間心跳的健康狀況。與磁碟心跳相關的兩個引數是:

1、     disktimeout 磁碟心跳不正常相應的超時時間。如下檢視:

crsctl get css disktimeout

2、     reboottime節點被踢出叢集后節點開始重啟允許的最大時間。如下檢視:

crsctl get css reboottime 

D、     調整心跳引數:上面提到的三個和心跳有關的引數:misscountdisktimeoutreboottime均可透過如下命令修改:

Crsctl set –h

流浪的野狼筆記

2.  Clusterware的格里特性IPMI

隔離性是叢集在出現故障的情況下必須保證的特性,為了避免在出現故障情況下各個節點各自修改資料導致資料不一致,RAC必須保證在出現故障時有合理的伺服器I/O隔離機制,即在出現故障的情況下確保只有正常執行的節點才可以修改資料庫中的資料。

傳統的隔離機制是在系統節點出現故障情況下發揮作用的隔離機制,這是一種內部機制。這種機制在某些情況下是無效的,不如說在節點伺服器hang機,就無法透過執行作業系統重啟命令來重啟伺服器。故此除了這中傳統的隔離機制外,clusterware現在還開始支援基於遠端節點終止的新隔離機制。這是一種外部機制。為了提供這種機制從11Gr2開始支援IPMI.

IPMI(Intelligent Platform Management Interface,只能平臺管理介面),是標準的工業管理協議。IPMI是一種規範的標準,其中重要的物理部件就是BMC(Baseboard Management Controller),是一種嵌入式管理微控制器,相當於整個平臺管理的大腦,透過它IPMI可以監控各個感測器的資料並記錄各種事件的日誌,因此,IPMI也稱為BMC

3.  RAC隔離體系

可以將RAC劃分為系統層、叢集層、資料庫層,各層次都有相應的機制來檢測RAC每個層次的健康狀況。節點中任何一層出現問題都有可能使其他層一起被隔離。
Oracle11g RAC高可用性理論整理

A. 系統層

系統層透過linux核心的Hangcheck-Timer模組檢測叢集間可能出現的hang機,Hangcheck-Timer模組根據配置週期性的檢測節點的健康狀況,一旦超過某個限制值就會認為幾點出現hang機,即會重啟節點,在系統層達到隔離的效果。Hangcheck-Timer包括3個引數:

Hangcheck_tick(檢測週期)

Hangcheck_margin(超時時間)

Hangcheck_reboot(是否超時重啟,0表示不重啟,1表示重啟)

11Gr2開始,RAClinux平臺可以不配置該模組。

B. 叢集層

叢集層在11Gr2前有兩個引數來進行週期性的檢查:oprocd(Oracle Clusterware Process Monitor Daemon)cssd。從11GR2開始,oprocd的功能被cssdagent替代。

C. 資料庫層

資料庫層的LMON程式也會定期檢查RAC Database的健康狀況,如果發現節點的資料庫存在問題,也會採取相應的措施保證RAC的隔離性。

4.  RAC節點被踢出叢集的原因:

1、     Kernel Hang/伺服器伏在嚴重(oprocdHangcheck-Timer)

2、     內連網路心跳丟失。

3、     Votedisk心跳丟失。

4、     Oclsmon掃描到cssd hang

5.  網格即插即用

  網格即插即用(Gird Plug and PlayGPnP)是從11g R2 RAC開始的新功能,提供建立一個動態的GI環境,能隨著負載的增加動態改變GI環境。GPnP能非常容易的新增、替換或者移除叢集中的節點,像電源插座一樣。

GPnP主要由GPNPDMDNSSCANGNS構成,如上圖。

   MDNS負責在節點內部進行ip的解析,在新新增節點的時候不需要手動修改每個節點的/etc/hosts檔案,GPNPD提供的是叢集配置資訊管理,新增節點會更新現有的GPnP profile配置資訊來配置新的節點同時更新該檔案。GNS負責動態的給新新增的節點分配VIP

A.  GPnP profile檔案

Clusterware中,CSSGPnP等服務的啟動都需要依賴於GPnP profile檔案。GPnP profile檔案是一個XML檔案,用於引導節點加入叢集,GPnP profile提供了新節點的配置資訊。還指定了整個叢集的特性。如果該檔案被破壞或者丟失,clusterware將無法正常啟動。Oracle不支援手動修改profile.xml檔案,直接對其修改可能導致無法修復的問題,最終導致所有節點重建clusterwareGPnP profile檔案儲存的叢集配置資訊,預設的儲存在:$GRID_HOME/gpnp/$HOSTNAME/profiles/peer/profile.xml

$GRID_HOME/gpnp/profiles/peer/profile.xml(全域性備份)

如果GPnP出現問題,可以使用cluvfy comp gpnp組建驗證命令檢查在叢集中所有網格即插即用的完整性。   Cluvfy comp gpnp [-n node_list] [-verbose]

Profile檔案的內容如下:Oracle11g RAC高可用性理論整理

BIP Multitcast Discovery 守護程式(MDNS服務)

他能透過叢集發現其他節點的守護程式,並在叢集中解析名字到對應的ip地址,有了該程式就不在依賴於/etc/hosts配置檔案的名稱解析,MDNSMulticast Domain Name Service)是零配置網路中的一部分,類似使用DNS提供解析hosts地址的能力。

6、 日誌體系

11g推出的ADR是一個基於檔案的資料庫,不同的產品和元件都具有相同的目錄結構。Clusterware日誌體系不屬於ADR的管理範圍,ASM、監聽日誌和Database日誌都屬於ADR的管理範圍。 Oracle11g RAC高可用性理論整理

ADR基礎結構:Oracle11g RAC高可用性理論整理

Clusterware日誌檔案

Oracle11g RAC高可用性理論整理ASM例項和監聽日誌檔案

    Oracle11g RAC高可用性理論整理Database 日誌檔案

Oracle11g RAC高可用性理論整理
本筆記參考自:《構建高可用
oracle資料庫系統-oracle1gR2 RAC管理、維護效能最佳化》
 

圖片來自紅黑聯盟及個人整理

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28612416/viewspace-1072261/,如需轉載,請註明出處,否則將追究法律責任。

相關文章