亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 891 | 回復(fù): 0
打印 上一主題 下一主題

RAC的一些概念性和原理性的知識 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-22 08:53 |只看該作者 |倒序瀏覽
 
 

一 集群環(huán)境下的一些特殊問題
1.1 并發(fā)控制
在集群環(huán)境中,關(guān)鍵數(shù)據(jù)通常是共享存放的,比如放在共享磁盤上。而各個節(jié)點的對數(shù)據(jù)有相同的訪問權(quán)限,這時就必須有某種機制能夠控制節(jié)點對數(shù)據(jù)的訪問。Oracle RAC 是利用DLM(Distribute Lock Management) 機制來進(jìn)行多個實例間的并發(fā)控制。

1.2 健忘癥(Amnesia)
集群環(huán)境配置文件不是集中存放的,而是每個節(jié)點都有一個本地副本,在集群正常運行時,用戶可以在任何節(jié)點更改集群的配置,并且這種更改會自動同步到其他節(jié)點。
有一種特殊情況: 節(jié)點A 正常關(guān)閉,在節(jié)點B上修改配置,關(guān)閉結(jié)點A,啟動結(jié)點B。這種情況下,修改的配置文件是丟失的,就是所謂的健忘癥。

1.3 腦裂(Split Brain)
在集群中,節(jié)點間通過某種機制(心跳)了解彼此的健康狀態(tài),以確保各節(jié)點協(xié)調(diào)工作。假設(shè)只有”心跳”出現(xiàn)問題,各個節(jié)點還在正常運行,這時,每個節(jié)點都認(rèn)為其他的節(jié)點宕機了,自己是整個集群環(huán)境中的”唯一建在者”,自己應(yīng)該獲得整個集群的”控制權(quán)”。在集群環(huán)境中,存儲設(shè)備都是共享的,這就意味著數(shù)據(jù)災(zāi)難,這種情況就是”腦裂”
解決這個問題的通常辦法是使用投票算法(Quorum Algorithm). 它的算法機理如下:
集群中各個節(jié)點需要心跳機制來通報彼此的”健康狀態(tài)”,假設(shè)每收到一個節(jié)點的”通報”代表一票。對于三個節(jié)點的集群,正常運行時,每個節(jié)點都會有3票。當(dāng)結(jié)點A心跳出現(xiàn)故障但節(jié)點A還在運行,這時整個集群就會分裂成2個小的partition。節(jié)點A是一個,剩下的2個是一個。這是必須剔除一個partition才能保障集群的健康運行。
對于有3個節(jié)點的集群,A 心跳出現(xiàn)問題后,B 和 C 是一個partion,有2票,A只有1票。按照投票算法,B 和C 組成的集群獲得控制權(quán),A 被剔除。
如果只有2個節(jié)點,投票算法就失效了。因為每個節(jié)點上都只有1票。這時就需要引入第三個設(shè)備:Quorum Device. Quorum Device 通常采用餓是共享磁盤,這個磁盤也叫作Quorum disk。這個Quorum Disk 也代表一票。當(dāng)2個結(jié)點的心跳出現(xiàn)問題時,2個節(jié)點同時去爭取Quorum Disk 這一票,最早到達(dá)的請求被最先滿足。故最先獲得Quorum Disk的節(jié)點就獲得2票。另一個節(jié)點就會被剔除。

1.4 IO 隔離(Fencing)
當(dāng)集群系統(tǒng)出現(xiàn)”腦裂”問題的時候,我們可以通過”投票算法”來解決誰獲得集群控制權(quán)的問題。但是這樣是不夠的,我們還必須保證被趕出去的結(jié)點不能操作共享數(shù)據(jù)。這就是IO Fencing 要解決的問題。
IO Fencing實現(xiàn)有硬件和軟件2種方式:
軟件方式:對于支持SCSI Reserve/Release 命令的存儲設(shè)備,可以用SG命令來實現(xiàn)。正常的節(jié)點使用SCSI Reserve命令”鎖住”存儲設(shè)備,故障節(jié)點發(fā)現(xiàn)存儲設(shè)備被鎖住后,就知道自己被趕出了集群,也就是說自己出現(xiàn)了異常情況,就要自己進(jìn)行重啟,以恢復(fù)到正常狀態(tài)。這個機制也叫作 Sicide(自殺). Sun 和Veritas 使用的就是這種機制。
硬件方式:STONITH(Shoot The Other Node in the Head),這種方式直接操作電源開關(guān),當(dāng)一個節(jié)點發(fā)生故障時,另一個節(jié)點如果能偵測到,就會通過串口發(fā)出命令,控制故障節(jié)點的電源開關(guān),通過暫時斷電,而又上電的方式使故障節(jié)點被重啟動,這種方式需要硬件支持。

二 RAC 集群
2.1 Clusterware
在單機環(huán)境下,Oracle是運行在OS Kernel 之上的。OS Kernel負(fù)責(zé)管理硬件設(shè)備,并提供硬件訪問接口。Oracle 不會直接操作硬件,而是有OS Kernel代替它來完成對硬件的調(diào)用請求。
在集群環(huán)境下,存儲設(shè)備是共享的。OS Kernel 的設(shè)計都是針對單機的,只能控制單機上多個進(jìn)程間的訪問。如果還依賴OS Kernel的服務(wù),就無法保證多個主機間的協(xié)調(diào)工作。這時就需要引入額外的控制機制,在RAC中,這個機制就是位于Oracle 和 OS Kernel 之間的Clusterware,它會在OS Kernel之前截獲請求,然后和其他結(jié)點上的Clusterware協(xié)商,最終完成上層的請求。
在Oracle 10G之前,RAC 所需要的集群件依賴與硬件廠商,比如SUN,HP,Veritas. 從Oracle 10.1版本中,Oracle 推出了自己的集群產(chǎn)品. Cluster Ready Service(CRS),從此RAC 不在依賴與任何廠商的集群軟件。在Oracle 10.2版本中,這個產(chǎn)品改名為:Oracle Clusterware。
所以我們可以看出,在整個RAC 集群中,實際上有2個集群環(huán)境的存在,一個是由Clusterware 軟件組成的集群,另一個是由Database 組成的集群。

2.2 Clusterware 組成
Oracle Cluster 是一個單獨的安裝包,安裝后,在每個結(jié)點上的Oracle Clusterware 會自動啟動。Oracle Clusterware的運行環(huán)境由2個磁盤文件(OCR,Voting Disk),若干進(jìn)程和網(wǎng)絡(luò)元素組成。
2.2.1 磁盤文件:
Clusterware 在運行期間需要兩個文件:OCR和Voting Disk. 這2個文件必須存放在共享存儲上。OCR 用于解決健忘問題,Voting Disk 用于解決健忘問題。Oracle 建議使用裸設(shè)備來存放這2個文件,每個文件創(chuàng)建一個裸設(shè)備,每個裸設(shè)備分配100M左右的空間就夠了。
2.2.1.1 OCR
健忘問題是由于每個節(jié)點都有配置信息的拷貝,修改節(jié)點的配置信息不同步引起的。Oracle 采用的解決方法就是把這個配置文件放在共享的存儲上,這個文件就是OCR Disk。
OCR 中保存整個集群的配置信息,配置信息以”Key-Value” 的形式保存其中。在Oracle 10g以前,這個文件叫作Server Manageability Repository(SRVM). 在Oracle 10g,這部分內(nèi)容被重新設(shè)計,并重名為OCR.在Oracle Clusterware 安裝的過程中,安裝程序會提示用戶指定OCR位置。并且用戶指定的這個位置會被記錄在/etc/oracle/ocr.Loc(Linux System) 或者/var/opt/oracle/ocr.Loc(Solaris System)文件中。而在Oracle 9i RAC中,對等的是srvConfig.Loc文件。Oracle Clusterware在啟動時會根據(jù)這里面的內(nèi)容從指定位置讀入OCR 內(nèi)容。
1). OCR key
整個OCR 的信息是樹形結(jié)構(gòu),有3個大分支。分別是SYSTEM,DATABASE 和CRS。每個分支下面又有許多小分支。這些記錄的信息只能由root用戶修改。
2) OCR process
Oracle Clusterware 在OCR中存放集群配置信息,故OCR 的內(nèi)容非常的重要,所有對OCR的操作必須確保OCR 內(nèi)容完整性,所以在ORACLE Clusterware運行過程中,并不是所有結(jié)點都能操作OCR Disk.
在每個節(jié)點的內(nèi)存中都有一份OCR內(nèi)容的拷貝,這份拷貝叫作OCR Cache。每個結(jié)點都有一個OCR Process 來讀寫OCR Cache,但只有一個節(jié)點的OCR process能讀寫OCR Disk中的內(nèi)容,這個節(jié)點叫作OCR Master結(jié)點。這個節(jié)點的OCR process 負(fù)責(zé)更新本地和其他結(jié)點的OCR Cache內(nèi)容。
所有需要OCR 內(nèi)容的其他進(jìn)程,比如OCSSD,EVM等都叫作Client Process,這些進(jìn)程不會直接訪問OCR Cache,而是像OCR Process發(fā)送請求,借助OCR Process獲得內(nèi)容,如果想要修改OCR 內(nèi)容,也要由該節(jié)點的OCR Process像Master node 的OCR process 提交申請,由Master OCR Process完成物理讀寫,并同步所有節(jié)點OCR Cache中的內(nèi)容。
2.2.1.2 Voting Disk
Voting Disk 這個文件主要用于記錄節(jié)點成員狀態(tài),在出現(xiàn)腦裂時,決定那個Partion獲得控制權(quán),其他的Partion必須從集群中剔除。在安裝Clusterware時也會提示指定這個位置。安裝完成后可以通過如下命令來查看Voting Disk位置。
$Crsctl query css votedisk
2.2.2 Clusterware 后臺進(jìn)程
Clusterware 由若干進(jìn)程組成,其中最重要的3個是:CRSD,CSSD,EVMD. 在安裝clusterware的最后階段,會要求在每個節(jié)點執(zhí)行root.sh 腳本,這個腳本會在/etc/inittab 文件的最后把這3個進(jìn)程加入啟動項,這樣以后每次系統(tǒng)啟動時,Clusterware 也會自動啟動,其中EVMD和CRSD 兩個進(jìn)程如果出現(xiàn)異常,則系統(tǒng)會自動重啟這兩個進(jìn)程,如果是CSSD 進(jìn)程異常,系統(tǒng)會立即重啟。
1). OCSSD
OCSSD 這個進(jìn)程是Clusterware最關(guān)鍵的進(jìn)程,如果這個進(jìn)程出現(xiàn)異常,會導(dǎo)致系統(tǒng)重啟,這個進(jìn)程提供CSS(Cluster Synchronization Service)服務(wù)。CSS 服務(wù)通過多種心跳機制實時監(jiān)控集群狀態(tài),提供腦裂保護(hù)等基礎(chǔ)集群服務(wù)功能。
CSS 服務(wù)有2種心跳機制: 一種是通過私有網(wǎng)絡(luò)的Network Heartbeat,另一種是通過Voting Disk的Disk Heartbeat.
這2種心跳都有最大延時,對于Disk Heartbeat,這個延時叫作IOT (I/O Timeout);對于Network Heartbeat, 這個延時叫MC(Misscount)。這2個參數(shù)都以秒為單位,缺省時IOT大于MC,在默認(rèn)情況下,這2個參數(shù)是Oracle 自動判定的,并且不建議調(diào)整?梢酝ㄟ^如下命令來查看參數(shù)值:
$crsctl get css disktimeout
$crsctl get css misscount
注:除了Clusterware 需要這個進(jìn)程,在單節(jié)點環(huán)境中如果使用了ASM,也需要這個進(jìn)程;這個進(jìn)程用于支持ASM Instance 和RDBMS Instance之間的通信。如果在使用了ASM的節(jié)點上安裝RAC,會遇到一個問題:RAC節(jié)點要求只有一個OCSSD進(jìn)程,并且應(yīng)該是運行$CRS_HOME目錄下的,這時就需要先停止ASM,并通過$ORACLE_HOME/bin/localcfig.Sh delete 刪除之前的inittab 條目。之前安裝ASM時,也使用這個腳本來啟動OCSSD: $ORACLE_HOME/bin/localconfig.Sh add.
2). CRSD
CRSD是實現(xiàn)”高可用性(HA)”的主要進(jìn)程,它提供的服務(wù)叫作CRS(Cluster Ready Service) 服務(wù)。
Oracle Clusterware是位于集群層的組件,它要為應(yīng)用層資源(CRS Resource) 提供”高可用**”,所以,Oracle Clusterware 必須監(jiān)控這些資源,并在這些資源運行異常時進(jìn)行干預(yù),包括關(guān)閉,重啟進(jìn)程或者轉(zhuǎn)移服務(wù)。CRSD進(jìn)程提供的就是這些服務(wù)。
所有需要 高可用性 的組件,都會在安裝配置的時候,以CRS Resource的形式登記到OCR中,而CRSD 進(jìn)程就是根據(jù)OCR中的內(nèi)容,決定監(jiān)控哪些進(jìn)程,如何監(jiān)控,出現(xiàn)問題時又如何解決。也就是說,CRSD 進(jìn)程負(fù)責(zé)監(jiān)控CRS Resource 的運行狀態(tài),并要啟動,停止,監(jiān)控,F(xiàn)ailover這些資源。默認(rèn)情況下,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 就是說每個節(jié)點只需要一個就夠了,比如每個節(jié)點只有一個Listener,而Database-Related Resource 就是說這些資源和數(shù)據(jù)庫有關(guān),不受節(jié)點的限制,比如一個節(jié)點可以有多個實例,每個實例可以有多個Service。
GSD,ONS,VIP 這3個服務(wù)是在安裝Clusterware的最后,執(zhí)行VIPCA 時創(chuàng)建并登記到OCR中的。而Database,Listener,Instance 和Service 是在各自的配置過程中自動或者手動登記到OCR中的。
3). EVMD
EVMD 這個進(jìn)程負(fù)責(zé)發(fā)布CRS 產(chǎn)生的各種事件(Event). 這些Event可以通過2種方式發(fā)布給客戶:ONS 和 Callout Script. 用戶可以自定義回調(diào)腳本,放在特定的目錄下,這樣當(dāng)有某些事件發(fā)生時,EVMD會自動掃描該目錄,并調(diào)用用戶的腳本,這種調(diào)用是通過racgevt進(jìn)程來完成的。
EVMD 進(jìn)程除了復(fù)雜發(fā)布事件之外,它還是CRSD 和CSSD 兩個進(jìn)程之間的橋梁。CRS 和CSS 兩個服務(wù)之前的通信就是通過EVMD 進(jìn)程完成的。
4). RACGIMON
RACGIMON 這個進(jìn)程負(fù)責(zé)檢查數(shù)據(jù)庫健康狀態(tài),負(fù)責(zé)Service的啟動,停止,故障轉(zhuǎn)移(Failover)。這個進(jìn)程會建立到數(shù)據(jù)庫的持久連接,定期檢查SGA中的特定信息,該信息由PMON 進(jìn)程定時更新。
5). OPROCD
OPROCD 這個進(jìn)程也叫作 Process Monitor Daemon. 如果在非Linux 平臺上,并且沒有使用第三方的集群軟件時,就會看到這個進(jìn)程。這個進(jìn)程用來檢查節(jié)點的Processor Hang(CPU 掛起), 如果調(diào)度時間超過1.5秒,就會認(rèn)為CPU 工作異常,會重啟節(jié)點。也就是說這個進(jìn)程提供 “IO 隔離” 的功能。從其在Windows 平臺上的服務(wù)名: OraFnceService 也可以看出它的功能。而在Linux 平臺上,是利用Hangcheck-timer 模塊來實現(xiàn)”IO 隔離”的。

2.3 VIP 原理和特點
Oracle 的TAF 就是建立在VIP 技術(shù)之上的。IP 和VIP 區(qū)別在與: IP 是利用TCP層超時,VIP 利用的是應(yīng)用層的立即響應(yīng)。VIP 它是浮動的IP. 當(dāng)一個節(jié)點出現(xiàn)問題時會自動的轉(zhuǎn)到另一個節(jié)點上。
假設(shè)有一個2個節(jié)點的RAC,正常運行時每個節(jié)點上都有一個VIP。VIP1 和VIP2. 當(dāng)節(jié)點2發(fā)生故障,比如異常關(guān)系。RAC 會做如下操作:
1). CRS 在檢測到rac2節(jié)點異常后,會觸發(fā)Clusterware 重構(gòu),最后把rac2節(jié)點剔除集群,由節(jié)點1組成新的集群。
2). RAC的Failover 機制會把節(jié)點2的VIP轉(zhuǎn)移到節(jié)點1上,這時節(jié)點1的PUBLIC 網(wǎng)卡上就有3個IP 地址: VIP1,VIP2, PUBLIC IP1.
3). 用戶對VIP2的連接請求會被IP層路由轉(zhuǎn)到節(jié)點1
4). 因為在節(jié)點1上有VIP2的地址,所有數(shù)據(jù)包會順利通過路由層,網(wǎng)絡(luò)層,傳輸層。
5). 但是,節(jié)點1上只監(jiān)聽VIP1和public IP1的兩個IP地址。并沒有監(jiān)聽VIP2,故應(yīng)用層沒有對應(yīng)的程序接收這個數(shù)據(jù)包,這個錯誤立即被捕獲。
6). 客戶段能夠立即接收到這個錯誤,然后客戶段會重新發(fā)起向VIP1的連接請求。
VIP 特點:
1). VIP 是通過VIPCA腳本創(chuàng)建的
2). VIP 作為Nodeapps類型的CRS Resource 注冊到OCR中,并由CRS 維護(hù)狀態(tài)。
3). VIP 會綁定到節(jié)點的public 網(wǎng)卡上,故public 網(wǎng)卡有2個地址。
4). 當(dāng)某個節(jié)點發(fā)生故障時,CRS 會把故障節(jié)點的VIP 轉(zhuǎn)移到其他節(jié)點上。
5). 每個節(jié)點的Listener 會同時監(jiān)聽public 網(wǎng)卡上的 public ip 和VIP
6). 客戶端的tnsnames.Ora 一般會配置指向節(jié)點的VIP.

2.4 Clusterware 的日志體系
Oracle Clusterware的輔助診斷,只能從log 和trace 進(jìn)行。而且它的日志體系比較復(fù)雜。
alert.log:
$ORA_CRS_HOME\log\hostname\alert.Log, 這是首選的查看文件。
Clusterware后臺進(jìn)程日志:
crsd.Log: $ORA_CRS_HOME\log\hostname\crsd\crsd.Log
ocssd.Log: $ORA_CRS_HOME\log\hostname\cssd\ocsd.Log
evmd.Log: $ORA_CRS_HOME\log\hostname\evmd\evmd.Log
Nodeapp日志位置:
$ORA_CRS_HOME\log\hostname\racg\
這里面放的是nodeapp的日志,包括ONS和VIP,比如:ora.Rac1.ons.Log
工具執(zhí)行日志:
$ORA_CRS_HOME\log\hostname\client\
Clusterware 提供了許多命令行工具:
比如ocrcheck, ocrconfig,ocrdump,oifcfg和clscfg, 這些工具產(chǎn)生的日志就放在這個目錄下
還有$ORACLE_HOME\log\hostname\client\ 和$ORACLE_HOME\log\hostname\racg 也有相關(guān)的日志

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP