11gR2新特性---Gpnp守護程式
在這篇文章中,我們會對11gR2 新的守護程式(資源名稱ora.gpnpd)進行介紹,其中包含的gpnp的功能,啟動順序和基本的診斷方法。
我們知道,在10gR2和11gR1的版本中,當啟動叢集的時候,所有的配置資訊都要從OCR進行讀取,而OCR有存放在共享記憶體中,這樣做實際上並不是很好,因為我們相當於把叢集所有的配置資訊都存放到了共享儲存上,而一旦某個節點對共享儲存的訪問出現了問題,這個節點就不能加入叢集,對叢集的影響是很大的,所以,從11gR2開始,GI(Grid Infrastructure) 開始把叢集的配置資訊進行本地化,例如:
OLR,gpnp profile 被引入。隨著我們將叢集中重要的資訊分別存放到了各個節點,我們也會發現,從11gR2開始,如果OCR出現了問題,僅僅是某些叢集的資源(由CRSD管理的資源)會出現問題,而叢集(cssd層面)仍然可以正常執行。
接下來,我們對gpnp profile和 gpnpd守護程式進行一些介紹。首先,gpnp profile(這是個xml檔案,而對於gpnp的wallet檔案,我們並不做過多的介紹)用於存放構建叢集的bootstrap 資訊,或者可以稱為構建叢集的最基本的資訊,其中包括,叢集名稱,叢集GUID, ASM discovery string, 公網和私網資訊等等。所以,當我們在啟動叢集的某一個節點時,需要讀取這個檔案(預設檔名為<gi_home>/gpnp/<node_name>/profiles/peer/profile.xml),從而獲得構建叢集的基本資訊。另外,由於這個檔案中儲存的是整個叢集的基本資訊,所以這個檔案在所有節點之間都應該是相同的。同時,我們還需要一個守護程式,也就是gpnpd.bin(資源名為 ora.gpnpd) 來對gpnp profile 進行維護。舉個例子,一個3節點的叢集,其中節點3由於一些問題暫時沒有啟動,而在此期間,叢集的私網配置發生了改變,之後,節點3啟動,在啟動的過程中,節點3的gpnpd程式需要和其他節點的gpnpd程式通訊,獲得最新版本的gpnp profile。
下面,我們對 gpnpd守護程式的功能進行一些介紹。
1. 這個程式是由ohasd 的oraagent 負責管理的。
2. 透過gpnp 的wallet檔案進行驗證並負責讀取gpnp prfofile。當然,如果gpnpd發現本地的gpnp profile 無法讀取,會嘗試從OLR的資訊中重建gpnp profile。
3. 對gpnp profile的客戶(例如ocssd.bin)釋出資訊。
4. 發現叢集中其他節點的gpnpd 守護程式,如果有需要,透過mdns 同步在節點間同步gpnp profile。
5. 如果叢集的配置發生改變,有必要的話,修改gpnp profile.
接下來,我們透過啟動叢集過程中的一段gpnpd.log來對以上的內容進行進一步的瞭解。
2013-07-26 21:31:44.208: [ default][4143449792]gpnpd
START pid=<xxxx> Oracle Grid Plug-and-Play Daemon <<<<<< gpnpd.bin 守護程式被啟動。
……
2013-07-26 21:31:45.234: [ GPNP][4143449792]clsgpnpkwf_initwfloc: [at
clsgpnpkwf.c:399] Using FS Wallet Location : <gi_home>/gpnp/<node_name>/wallets/peer/
<<<<<<<<<< gpnp的 wallet 檔案被訪問
……
2013-07-26 21:31:45.349: [ default][4143449792]GPNPD
started on node XXXXX.
2013-07-26 21:31:45.350: [ GPNP][4143449792]clsgpnpd_MainWork: [at
clsgpnpd.c:4836] --- Local best profile:
2013-07-26 21:31:45.350: [ GPNP][4143449792]clsgpnpd_MainWork:
<?xml version="1.0"
encoding="UTF-8"?><gpnp:GPnP-Profile Version[cont]
……
2013-07-26 21:31:45.350: [ GPNP][4143449792]clsgpnpd_MainWork:
usterName="XXXXXX"
PALocation=""><gpnp:Network-Profile><[cont]
2013-07-26 21:31:45.351: [ GPNP][4143449792]clsgpnpd_MainWork:
gpnp:HostNetwork id="gen" HostName="*"><gpnp:Network
id="net1" I[cont]
2013-07-26 21:31:45.351: [ GPNP][4143449792]clsgpnpd_MainWork:
P="XXX.XXX.XXX.XXX" Adapter="eth1"
Use="cluster_interconnect"/><gpn[cont]
2013-07-26 21:31:45.351: [ GPNP][4143449792]clsgpnpd_MainWork:
p:Network id="net2" IP="XXX.XXX.XXX.XXX "
Adapter="eth0" Use="public[cont]
<<<<<<<<<< gpnp pofile 被讀取。
……
2013-07-26 21:31:46.162: [ GPNP][4143449792]clsgpnpdRCB: [at
clsgpnpd.c:3933] GPnPD endpoint url "mdns:gpnp._tcp://XXXXX:27230/agent=gpnpd,cname=xxxxx,host=xxxxx,pid=xxxx/gpnpd
h:****** c:*******" successfully advertised with RD <<<<<< gpnpd 透過mdns釋出了本地節點的endpoint.
2013-07-26 21:31:51.375: [ GPNP][120384416]clsgpnp_profileCallUrlInt:
[at clsgpnp.c:2104] put-profile call to url "tcp://xxxxx:56182" disco
"mdns:service:gpnp._tcp.local.://xxxxxx:56182/agent=gpnpd,cname=xxxxxxxxx,guid=6de9b87c2edadf6fbf4bb1fcf61e2fa0,host=xxxxxxx,pid=xxxxxx/gpnpd
h:****c:****u:6de9b87c2edadf6fbf4bb1fcf61" [f=0 claimed- host:****
cname:****** seq:4 auth:CN=GPnP_peer] <<<<<<<< 同時,gpnpd也透過mdns,在網路中搜尋其他的節點。如果,網路中有多個叢集(版本為11gR2 或者12c),那麼其他叢集的節點也會被發現,但是,gpnpd會透過叢集的GUID進行區分。
……
2013-07-26 21:32:00.954: [ GPNP][120384416]clsgpnp_profileCallUrlInt:
[at clsgpnp.c:2104] put-profile call to url "tcp://xxxxx:32774" disco
"mdns:service:gpnp._tcp.local.://xxxxxx:32774/agent=gpnpd,cname=xxxxxxxxx,host=xxxxxx,pid=8023/gpnpd
h:*** c:****" [f=0 claimed- host:**** cname:***** seq:4
auth:CN=GPnP_peer] <<<<<<<<< 叢集的另外一個節點XXXXX被發現,gpnpd 確認是否有必要在兩個節點間同步gpnp profile.
……
2013-07-26 21:32:06.625: [ GPNP][120384416]clsgpnpd_pushThread: [at
clsgpnpd.c:4770] START gpnpd start serving clients after profile updates <<<<<<<<<< push
thread被啟動。如果需要,這個執行緒負責把本地的gpnp profile傳送給其他節點。
……
2013-07-26 21:32:55.562: [ GPNP][79473568]clsgpnp_ocrDetectThread: [at
clsgpnp0.c:4508] OCR client init SUCCEEDED. OCR shared cache is now available
<<<<< gpnpd開始監控OCR cache以便在叢集的配置資訊發生改變,而且有必要更新gpnp profile時進行修改。
最後,我們對和gpnpd相關的問題的診斷進行簡單的描述。
1. 如果問題是本地的gpnp無法啟動,那麼根據gpnp的啟動過程,需要察看。
1.1 Gpnpd 的pid 檔案是否存在而且可以被訪問
1.2 mdnsd 是否啟動
1.3 gpnp 的wallet 檔案是否存在,gpnp profile是否能夠被grid 使用者訪問。
1.4 兩個節點之間的網路連線是否正常。
1.5 其他節點的gpnpd.bin 是否正常。因為,在啟動本地gpnpd.bin之後,它需要和叢集其他節點的gpnpd.bin進行通訊,以便確認叢集中最新的gpnp profile。
2. gpnpd的問題也會導致其他依賴於gpnpd的資源無法啟動,例如ocssd.bin,這個程式需要訪問gpnp profile獲取叢集的基本資訊,例如 VF的位置,叢集私網資訊等。
3. 如果我們發現問題是gpnp profile中的資訊出現了錯誤,可以使用工具gpnptool 進行修正。
4.對於診斷gpnpd問題所需要的資訊,一般是
4.1 gpnpd.log, 這個日誌能夠告訴我們gpnpd 是否被啟動,以及,啟動過程已經到達了哪一步,問題是在哪裡出現的。
4.2 命令”crsctl stat res –t -init”的輸出,它可以告訴我們ora.gpnpd資源的狀態,以及叢集中其他init資源的狀態。
4.3 mdnsd.log, 如果我們發???問題出現在mdns無法發現叢集中的其他節點,那麼,這個檔案很有幫助。
4.4 OSW 報告,它能夠告訴我們OS當時的負載狀況,叢集網路統計資訊等等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-1770473/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 守護程式
- Node 程式守護
- rstatd守護程式
- gated 守護程式
- Linux 守護程式和超級守護程式(xinetd)Linux
- 程式守護 supervisor
- 守護程式那些事
- Linux 守護程式Linux
- 11GR2新特性(轉)
- oracle 11GR2 新特性Oracle
- PHP 實現守護程式PHP
- Golang 程式守護 SupervisorGolang
- PHP 編寫守護程式PHP
- Python編寫守護程式程式Python
- 【RAC】11gR2 新特性: Rebootless RestartbootREST
- Linux守護程式及SystemdLinux
- Windows守護程式簡單示例Windows
- 11gR2新特性:LMHB Lock Manager Heart Beat後臺程式
- 守護程序
- 【11gR2新特性】extent延遲建立
- rsync 守護程式及實時同步
- rsync 守護程式備份報錯
- opentracker改造為daemon守護程式
- Linux下的守護程式分析Linux
- 程式守護系統,你懂嗎?
- 用Python實現守護程式Python
- 深入理解Linux守護程式Linux
- 一個簡單的守護程式
- 11gR2 新特性之—In-Memory Parallel executionParallel
- 11gR2新特性:STANDBY_MAX_DATA_DELAY
- oracle 11gR2 新特性 diskgroup 重新命名Oracle
- 使用 swoole 實現程式的守護(三)
- 使用 SWOOLE 實現程式的守護(一)
- 使用 SWOOLE 實現程式的守護(二)
- Linux基礎命令---httpd守護程式Linuxhttpd
- Linux守護程式的啟動方法Linux
- .Net Core 程式守護之Supervisor使用
- laravel佇列之Supervisor守護程式Laravel佇列