oracle11grac基礎結構

shadow_young發表於2020-07-07

由於工作需要,需要了解詳細的oracle rac體系架構,下面分幾個方面闡述

1. oracle rac的幾大元件

1.OHAS ---OHAS是oracle11gr2推出的一個重要元件,是叢集啟動的唯一起始點,其他的守護程式和叢集管理的資源同一定義為資源,同時,叢集管理軟體使用代理程式(agent)來同一實現對對所有資源的管理

1.ocr和olr

OCR是儲存CRSD所有管理資源的登錄檔,但是在crsd啟動之前,還有很多初始化資源沒有啟動,所以11g版本中推出了OLR

OLR是儲存在本地的叢集登錄檔 ,作用是為ohasd提供叢集的配置資訊和初始化資源的資訊--(當OHAS啟動的時候,從/etc/oracle/olr.loc檔案中讀取olr檔案)

OLR 可以通過ocrconfig -local -manualbackup進行備份

./ocrconfig -local -restore進行恢復

./ocrcheck -local進行一致性檢查

2.ohasd啟動的代理程式

1.oraagent-------這個程式以Oracle或者grid使用者啟動,負責管理oralce或者grid使用者的資源       

其中ohasd只會啟動oraagent_grid  --包括資源為  ora.gipcd   ora.gpnpd  ora.mdnsd  ora.evmd  ora.asm  

mdns  -- 和dns的功能類似,提供主機名到ip的對映(基本特性:小型私有網路提供民稱解析服務,使用多播傳送資訊,UDP協議,主機名以.local結尾),在rac中主要為gpnpd和Ohasd提供resource discovery(資源發現服務)

gpnpd -- grid plug and play ,將叢集的基本資訊儲存在本地,並通過和mdnsd通訊,靈活識別叢集中的其他節點。gpnp分為gpnp wallet(訪問profile的客戶簽名)  gpnp profile(儲存啟動叢集節點的必須資訊)   gpnp守護程式 (gpnp主執行緒,push執行緒,派遣執行緒,ocr執行緒),當叢集重要配置資訊發生變化時:本地派遣執行緒通知遠端節點派遣程式--> 本地push程式推送gpnp profile給遠端程式--> 遠端派遣程式接收新版本gpnp pfofile   當叢集啟動時:gpnp主執行緒訪問gpnp profile,並載入到cache中開啟,如丟失,則從olr中恢復---> 派遣執行緒向所有遠端節點傳送資訊確認最新版本gpnp profile位置 --> 擁有最新版本的節點向該節點傳送gpnp profile --->本地節點收到gpnp profile後開始提供服務

gipcd --確保叢集網路卡的一致性,不負責傳遞的資訊--HAIP負責傳遞資訊(1.當叢集啟動時,發現私網網路卡 2. 通過叢集私網發現其他節點並建立聯絡 3. 如果有多塊網路卡,當其中一塊有問題,離線他並通知其他幾點,反之恢復亦然)

啟動過程--》 gipcd守護程式啟動--》嘗試訪問gpnpd 獲取遠端節點資訊並與其通訊 --》發現本地私網資訊--》發現遠端節點 -->連線建立 

2.orarootagent-------以root使用者啟動,管理root使用者的資源

ohasd啟動的資源為 ora.diskmon  ora.ctssd  ora.crsd  ora.driver.acfs  ora.cluster_interconnect.haip  ora.crf 

ctssd  --> cluster time synchronize service 同步節點之間時間 (老版本使用ntp後者wts容易出現問題),工作方式(選擇一個參考節點,其他節點參考這個節點的時間)(如果有其他時間同步工具如ntp(注意如果有配置檔案也會認為存在同步工具),則使用觀察模式工作,觀察模式下不會修改系統時間,如果沒有其他時間同步工具,則以active模式工作,會緩慢自動同步節點之間時間資訊) 

3.cssdagent----負責啟動ocssd.bin程式,之後負責監控ocssd.bin守護程式

ocssd守護程式每秒鐘都向 cssdagent和cssdmonitor註冊自己的狀態資訊同時如果有異常會進行異常處理

4.cssdmonitor------只負責監控Ocssd.bin守護程式

ocssd守護程式每秒鐘都向 cssdagent和cssdmonitor註冊自己的狀態資訊同時如果有異常會進行異常處理

3.HAIP和CHM

1.HAIP

對於Oracle資料庫叢集,私網之間的通訊是十分十分重要的,私網之前的通訊主要分為叢集之前和資料庫例項之前的通訊,叢集之間的通訊十分簡單,使用簡單的tcp/ip協議即可,但是資料庫例項之間的通訊十分龐大,而且資料實時性要求也很高,單純的tcp/ip不能滿足,需要UDP或者RDS,同時需要配置高可用和負載均衡。

HAIP出現是因為原先的資料庫對私網的高可用和負載均衡處理大多數依賴於作業系統層面配置的linux bonding等,oracle資料庫為了解決這個問題,於是提出了HAIP

什麼是HAIP,HAIP是資料庫自動在每一個私網網路卡上繫結一個169.254.*.*的IP地址,這個IP地址被稱為HAIP,而Oracle資料庫例項之間的通訊則會通過這個Ip地址進行通訊,,當某一個私有網路卡出現問題時,則會將這個私網的ip地址自動漂移到正常的私網網路卡上,這樣,實現了私網的高可用

2.CHM

chm是oracle提供的一個工具,用來收集作業系統資源(cpu mem swap proc i/o network)的統計資訊,chm會以ora.crf程式存在於每一個節點上。chm主要用來收集和預防一些由於系統異常導致的rac節點問題

chm和oswatcher的對比----實時性更強,但是保留時間沒有oswatcher強,同時功能也比不上oswatcher。

chm組成

1.chm repository----一個berkeley資料庫,儲存各個節點收集到的作業系統統計資訊,存放在/gi_home/crf/db/節點名下,預設大小為1G,最大保留時間為3天

2.system monitor service -- 以osysmond.bin形式存在於每個節點,負責收集每個節點資訊並將資訊傳送到主節點伺服器上

3.cluster logger service ----以守護程式 ologgerd的形式存在於主節點和副節點上,主節點負責接收所有節點的資訊,並記錄到主節點的chm repository 中,副節點的ologgerd則接收來自於主節點的資訊,記錄到副節點的chm repostiory中

2.css 部分

負責構建叢集和維護叢集的一致性

CSS啟動過程--構建叢集

1.ohasd守護程式啟動,並啟動對應的代理程式(包括css的oracssdagent_root)--> 2. oracssdagent_root啟動 ocssd.bin程式  --> 3. ocssd.bin訪問gpnpd.bin,獲取構建叢集的基本資訊,訪問gipcd.bin獲取遠端節點的資訊 --> 4. 和遠端節點通訊,並通過訪問VF和租借快獲取本地節點的編號,加入叢集


叢集心跳機制---維護叢集一致性

1. 如何維護叢集的一致性-->1.確認節點間的聯通性 2.共享位置儲存節點連通訊息 3.本地節點自我監控  

2.維護叢集的三種心跳   

1.網路心跳   --> 傳送執行緒  分析執行緒(根據接收的執行緒資訊進行處理,如進行叢集重新配置)  叢集重新配置執行緒  派遣執行緒(接收遠端節點的資訊,根據資訊傳送給其他執行緒)

用來確認叢集之前的連通性     ocssd程式每秒鐘通過私網會向叢集的其他節點傳送網路心跳  

丟失網路心跳進行重新配置過程  1.當某個節點連續一段時間丟失網路心跳後,


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

相關文章