您好,登錄后才能下訂單哦!
本篇內容介紹了“oracle11g rac的體系結構是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
OCR是保存CRSD所有管理資源的注冊表,但是在crsd啟動之前,還有很多初始化資源沒有啟動,所以11g版本中推出了OLR
OLR是保存在本地的集群注冊表 ,作用是為ohasd提供集群的配置信息和初始化資源的信息--(當OHAS啟動的時候,從/etc/oracle/olr.loc文件中讀取olr文件)
OLR 可以通過ocrconfig -local -manualbackup進行備份
./ocrconfig -local -restore進行恢復
./ocrcheck -local進行一致性檢查
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注冊自己的狀態信息同時如果有異常會進行異常處理
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中
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.維護集群的三種心跳
3.常用術語
VD/VF 保存每個節點的磁盤心跳信息,以及每個節點能看到的節點列表,在腦裂時判斷節點的狀態以及判斷節點應該離開集群還是alive,同時VF中還保留了下面的信息 1.租借塊 lease block 2.kill block
OCR oracle cluster register 記錄crsd相關的信息
misscount 網絡心跳超時時間,默認是30s,也是本地心跳的超時時間
LIOT long i/o timeout 磁盤心跳的超時時間,默認是200s,
SIOT short i/o timeout 節點在重新配置時對VF的i/o超時時間,默認是misscount-reboottime=30-3=27s
重新配置主節點 當集群中的節點數量發生變化時,會有一個節點用于完成這次的重新配置,通常最小的節點號會作為主節點
reboot time 集群要求OS完成的重啟時間,默認為3S
diagwait 指定oprocd進程的margin時間,
incarnation 集群的最新狀態,集群每一次重新配置,這個值增加1
用來確認集群之前的連通性 ocssd進程每秒鐘通過私網會向集群的其他節點發送網絡心跳
丟失網絡心跳進行重新配置過程 1.當某個節點連續一段時間丟失網絡心跳后,超過集群的miscount值后,分析線程發起集群重新配置 2. 重新配置線程管理節點向集群中所有節點發送重新配置消息,所有收到此消息的節點回復自己的狀態
3.重新配置線程管理節點根據狀態確認是否會有腦裂發生----如果網絡心跳異常但是磁盤心跳正常,則判斷會發生腦裂,會向VD寫入kill block信息,當網絡心跳異常的節點讀取到后會對本節點進行重啟
當集群腦裂時確認腦裂的解決方案 ,oracle建議設置奇數個VF磁盤,當節點無法訪問某個VD,只要能訪問的磁盤總數為n/2 + 1 即可
oracle發送網絡心跳的時候還會向cssdagent和cssdmonitor發送本地心跳,如果本地心跳沒有問題,則認為cssd.bin正常--oprocd中記錄hang信息
NM和GM 指得是node management 和 group management ,上面的內容都是NM,接下來是GM的主要內容
GM的概念 -- > 1.組 group 一組成員和他們的資源組成的整體 2. 成員 member 能夠獨立運行的一個實體(主成員和共享成員-->主成員負責監控集群并在變化時進行相應的操作,共享成員是他的擴展) 3. GM master 當組成員發生變化時,由master完成重新配置
1.共享 每個組有若干個成員祖冊,每個組或者組成員還需要向外面共享一些信息----1.集群中的數據庫作為一個組注冊到css上,主要成員是LMON進程,當LMON進程啟動時,需要注冊到css上,css才知道這個數據庫的具體信息,這個是組內共享 2.ASM進程啟動也會注冊到css上,并把信息共享出去供數據庫實例發現,這就是組間共享
2.隔離 當組中的某一個成員離開時,gm需要保證這個組的成員在OS級別的離開,既所有進程和io都清理
1. member kill escalation 成員終止升級
當rac中需要終止某個成員時,例如二節點的LMON進程(二節點的數據庫實例),步驟如下
rac通過GM去嘗試終止LMON,如果終止完成,則返回終止完成的信息,如果終止失敗,則升級為NM層面,通過NM來重啟節點保證集群的一致性
2.rebootless restart
當出現下面情況時,集群不會直接重啟節點,而是重啟集群管理軟件
1.當節點丟失網絡心跳超過misscount 2.當節點不能訪問大多數的VD 3.MEMBER KILL 升級為NODE KILL 既發生上面無法通過GM終止進程
目前先更新到這,后面將會更新crs部分,asm部分及剩余的
“oracle11g rac的體系結構是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。