Clusterware 後臺程式

shilei1發表於2012-03-14

Clusterware 由若干程式組成,其中最重要的3個是:CRSD,CSSD,EVMD. 在安裝clusterware的最後階段,會要求在每個節點執行root.sh 指令碼, 這個指令碼會在/etc/inittab 檔案的最後把這3個程式加入啟動項,這樣以後每次系統啟動時,Clusterware 也會自動啟動,其中EVMD和CRSD 兩個程式如果出現異常,則系統會自動重啟這兩個程式,如果是CSSD 程式異常,系統會立即重啟。

1). OCSSD

OCSSD 這個程式是Clusterware最關鍵的程式,如果這個程式出現異常,會導致系統重啟,這個程式提供CSS(Cluster Synchronization Service)服務。 CSS 服務透過多種心跳機制實時監控叢集狀態,提供腦裂保護等基礎叢集服務功能。

CSS 服務有2種心跳機制: 一種是透過私有網路的Network Heartbeat,另一種是透過Voting Disk的Disk Heartbeat.

這2種心跳都有最大延時,對於Disk Heartbeat, 這個延時叫作IOT (I/O Timeout);對於Network Heartbeat, 這個延時叫MC(Misscount)。 這2個引數都以秒為單位,預設時IOT大於MC,在預設情況下,這2個引數是Oracle 自動判定的,並且不建議調整。可以透過如下命令來檢視引數值:

$crsctl get css disktimeout

$crsctl get css misscount

注:除了Clusterware 需要這個程式,在單節點環境中如果使用了ASM,也需要這個程式;這個程式用於支援ASM Instance 和RDBMS Instance之間的通訊。 如果在使用了ASM的節點上安裝,會遇到一個問題:RAC節點要求只有一個OCSSD程式,並且應該是執行$CRS_HOME目錄下的,這時就需要先停止ASM,並透過$ORACLE_HOME/bin/localcfig.Sh delete 刪除之前的inittab 條目。 之前安裝ASM時,也使用這個指令碼來啟動OCSSD: $ORACLE_HOME/bin/localconfig.Sh add.

2). CRSD

CRSD是實現"高可用性(HA)"的主要程式,它提供的服務叫作CRS(Cluster Ready Service) 服務。

Oracle Clusterware是位於叢集層的元件,它要為應用層資源(CRS Resource) 提供"高可用性服務",所以, Oracle Clusterware 必須監控這些資源,並在這些資源執行異常時進行干預,包括關閉,重啟程式或者轉移服務。CRSD程式提供的就是這些服務。

所有需要 高可用性 的元件,都會在配置的時候,以CRS Resource的形式登記到OCR中,而CRSD 程式就是根據OCR中的內容,決定監控哪些程式,如何監控,出現問題時又如何解決。也就是說,CRSD 程式負責監控CRS Resource 的執行狀態,並要啟動,停止,監控,Failover這些資源。 預設情況下,CRS 會自動嘗試重啟資源5次,如果還是失敗,則放棄嘗試。

CRS Resource 包括GSD(Global Serveice Daemon),ONS(Oracle Notification Service),VIP, Database, Instance 和 Service. 這些資源被分成2類:

GSD,ONS,VIP 和 Listener 屬於Noteapps類

Database,Instance 和Service 屬於 Database-Related Resource 類。

我們可以這樣理解: Nodeapps 就是說每個節點只需要一個就夠了,比如每個節點只有一個Listener,而Database-Related Resource 就是說這些資源和有關,不受節點的限制,比如一個節點可以有多個例項,每個例項可以有多個Service。

GSD,ONS,VIP 這3個服務是在安裝Clusterware的最後,執行VIPCA 時建立並登記到OCR中的。 而Database, Listener, Instance 和Service 是在各自的配置過程中自動或者手動登記到OCR中的。

3). EVMD

EVMD 這個程式負責釋出CRS 產生的各種事件(Event). 這些Event可以透過2種方式釋出給客戶:ONS 和 Callout Script. 使用者可以自定義回撥指令碼,放在特定的目錄下,這樣當有某些事件發生時,EVMD會自動掃描該目錄,並呼叫使用者的指令碼,這種呼叫是透過racgevt程式來完成的。

EVMD 程式除了複雜釋出事件之外,它還是CRSD 和CSSD 兩個程式之間的橋樑。 CRS 和CSS 兩個服務之前的通訊就是透過EVMD 程式完成的。

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

相關文章