oracle手动启动gpnpd,[Oracle 11g r2(11.2.0.4.0)]集群守護進程gpnp介紹

首先來看下oracle11g r2進程關系:

0d916f07a58c8401c756adea5021ce25.png

gpnp 全稱為grid plug and play,是Oracle 11 gR2 版本集群管理軟件新增的組件。該組件的功能由即npd.bin 守護進程實現的。Oracle 設計gpnp 的目的主要有以下兩點:

目的1:將集群的基本配置信息保存在本地,以便在啟動集群時能夠從本地文件中獲得足夠的信息,而不再需要完全依賴於OCR。

目的2: 通過和mdnsd 進行通信,能夠更加靈活地識別集群中的節點,使集群結構更加靈活,而不再需要從OCR 中獲取節點列表。

gpnp 組件由兩部分構成:gpnp wallet 和gpnp profile。

gpnp wallet

gpnp wallet 的功能是保存需要訪問gpnp profile 文件的客戶簽名信息, 當客戶訪問gpnp profile 時通過wallet 中的簽名信息進行驗證,以確保只有指定的客戶能夠訪問profile 文件。

這部分內容是不需要用戶配置的,在安裝GI 時,Oracle 會自動完成簽名信息的初始化。另外,gpnp 的wallet 文件可以在路徑<GI_home>/gpnp/wallets/peer 下找到。例如:

-rwx—— 1 grid oinstall 6301 Sep 19 11:45 cwallet.sso

gpnp profile

gpnp profile 是gpnp組件的重要部分,它是一個XML 文件,用於保存啟動( bootstrap )集群節點時所需的必要信息。換句話說,當GI 在啟動時,所有必需的信息都保存在gpnp profile中,從某種意思上說 gpnp profile中的信息類似於數據庫bootstrap時所需要的信息。

文件存在 < grid_home>/gpnp/profiles/peer 下:

-rw-r–r– 1 grid oinstall 1890 Oct 12 12:56 profile.xml

接下來查看一下gpnp profile文件具體內容:

通過gpnptool 來獲取gpnp profile內容,[grid@node1.localdomain$]gpnptool get

Warning: some command line parameters were defaulted. Resulting command line:

/u01/app/11.2.0/grid/bin/gpnptool.bin get -o-

<?xml version="1.0" encoding="UTF-8"?>9oqCcRP6viy+3oPQFv67uN6XAIg=YauI3XibSmhwnekQAUvOw2T6coLFl4UerlHg0YyENFw6rUY3Jo5Q2jcbVObJBNNxn0wKtCSgMUVFgZR9bNhAK/MOgy0x6ifztQKjaTdPdwIueKUQNtM2a8XfNQ+VxjWS98htWgTKL/YpqEHpgEetWv9EF60kc+WrBUpVwSa8pzc=

Success.

1 . ProfileSequence 表示該gpnp profile 的序列號, 該文件每做一次修改, 序列號就會增加1 , 也就是說, 序列號最大的gpnp profile 包含的信息是最新的。

2 . ClusterUid 表示集群的Global ID。從版本12C 開始GI 通過ClusterUid 來唯一標識一個集群。這個Global ID 是在安裝時隨機產生的, 而且不能修改。

3 . ClusterName 表示集群名稱。在版本12C 之前, GI 通過集群名稱來標識集群, 也就是說在同一個子網中不能存在同名的集群。

4 . 即np:Network id=”net1” IP=”* .* . * .* ” Adapter=”eth0” Use=”public” 表示集群的公網信息。選項Use用於區分網絡的用途, 這個選項只能為public 或者cluster_interconnect。

5 . gpnp:Network id=”net2” IP=’* * * *’ Adapter=”eth1 ” Use=”cluster_ interconnect” 表示集群的私網信息。選項id 表示網絡資源的名稱;選項IP指定子網信息;選項Adapter為網卡信息。

6 . orcl:CSS-Profile id=”css ” DiscoveryString=”+asm” LeaseDuation=”40。” , 其中id=”css ”表示這部分信息是css需要使用的。DiscoveryString=”+asm ” 表示表決盤( VF)保存的路徑, cssd 在啟動時會到這個路徑下去掃描表決盤, 在這個例子中+asm 表示讀者使用了asm, cssd 會掃描ASM 的disk_string來發現表決盤。LeaseDuration 定義了節點號的租借有效期。

7.orcl:ASM-Profile id=”asm” DiscoveryString=”/dev/asm-*” SPFile=”+DATA/node- cluster/asmparameterfile/registry.253.957185753” , 其中id=”asm ” 表示這部分信息是ASM需要使用的。SPFile指定了ASM實例啟動時需要訪問的SPFile位置。

那么當這些信息發生變化時, Oracle是如何實現信息的同步的呢?

gpnpd是一個多線程的進程, 主要的線程包括:

1 . gpnp主線程( clsgpnpd Main Work):該線程負責完成主要的工作, 例如, 訪問gpnp profile , 對該文件進行讀取。

2 . push 線程( clsgpnpd_pushThread):當本地的gpnp profile發生改變或者需要向遠程節點推送gpnp profile 時, 該線程負責傳輸gpnp profile 。

3 . 派遣線程( clsgpnpd dispatch Thread):該線程負責接收gpnpd收到的各種消息並分派給對應的線程。

4 . OCR線程( clsgpnp ocrDetectThread):該線程在發現OCR中相關的信息發生改變時通知派遣線程。

首先, 本地gpnpd 的派遣線程通知所有遠程節點的派遣線程發生了配置改變;然后, 本地gpnpd 的push 線程將新版本的gpnp profile發送給所有的遠程節點;接着, 遠程節點的派遣線程在收到該消息之后開始接收新版本的gpnp profile 。而當gpnpd被啟動時, 會發生以下的過程。

過程1 : gpnpd 的主線程訪問gpnp profile , 並加載到cache 當中打開。如果本地節點的gpnp profile 已經丟失, gpnpd 可以通過OLR 中的信息重新構建gpnp profile 。

過程2 :派遣線程向集群的所有節點發送消息, 並確認最新版本的gpnp profile 位置。

過程3 :擁有最新版本gpnp profile 的節點向該節點發送信息。

過程4 :本地節點接收到最新版本的gpnp profile 后, 開始向外提供服務。

1 . 啟動集群2014-10-22 21:31:44.208: [default) [4143449792)gpnpd START pid= Oracle Grid

Plug-and-Play Daemon

gpnp 守護進程被啟動。2014-10-22 21:31:45.234: [GPNP) [4143449792)clsgpnpkwf_initwfloc: [at clsgpnpkwf.

c:399) Using FS Wallet Location : /uOl/app/11.2.0.4/grid/gpnp/test/wallets/

peer/

訪問gpnp wallet 文件。2014-10-22 21:31:45.349: [default) [4143449792)GPNPD started on node testl.

2014-10-22 21:31:45.350: [GPNP) [4143449792Jclsgpnpd MainWork: [at clsgpnpd.

c:4836] --- Local best profile:

2014-10-22 21:31:45.350: [GPNP) [4143449792)clsgpnpd MainWork: <?xrnl version=

”1.。”

encoding=

”UTF-8” ?><gpnp:GPnP-Profile Version[cont)

2014-10-22 21: 31: 45. 350: [GPNP) (4143449792) clsgpnpd_MainWork: usterNarne=

”xxxxxx”

PALocation=

””><gpnp:Network-Profile>

2014-10-22 21: 31: 45. 351: [GPNP) [4143449792)clsgpnpd_MainWork: gpnp:HostNetwork

id=

” gen” HostNarne=

” *”><gpnp:Network id=”net l” !(cont)

2014-10-22 21: 31: 45. 351: [GPNP) [4143449792) clsgpnpd_MainWork: P="XXX.XXX.XXX.XXX”

Adapter=

”ethl” Use=

”cluster interconnect”/><gpn[cont)

2014-10-22 21:31:45.351 [GPNP) [4143449792Jclsgpnpd MainWork: p:Network id=

”net2”

IP=”xxx.xxx.xxx.xxx ” Adapter=

”eth。” Use=

”public[cont)

讀取gpnp pofile2014-10-22 21:31:46.162: [GPNP) [4143449792JclsgpnpdRCB: [at clsgpnpd.c:3933)

GPnPD endpoint url ”rndns:gpnp._tcp://XXXXX:27230/agent=gpnpd,cnarne=xxxxx,hos

t=xxxxx,pid=xxxx/gpnpd h:xxxxx c:xxxxxxxx” successfully advertised with RD

gpnpd 通過mdnsd 發布了本地節點的endpoint。2014-10-22 21: 31: 51. 375: [GPNP) (120384416) clsgpnp_profileCallUrlint: [at clsgpnp.

c:2104) put-profile call to url ”tcp://xxxxx:56182” disc。”rndns:service:gpnp._

t c p. l o c a 1.://xxxxxx: 56182/a g e n t=g p n p d, c n a rn e=xxxxxxxxx, g u id=6d e9b87c2e

dadf6fb f 4bblf c f61e2f aO, hos t=xxxxxxx, pi d=xxxxxx/gpnpd h:x xxxx c:x xxxxxu:6de9b87c2edadf6fbf4bblfcf61"[f=O claimed- host:xxxxx cname:xxxxxx seq:4 auth:CN=GPnP_peer]

gpnpd 也通過mdnsd 在網絡中搜索其他的節點。2014-10-22 21: 32: 00. 954: [GPNP] (120384416] clsgpnp_profileCallUrlint: [at clsgpnp.

c:2104] put-profile call to url ” tcp://xxxxx:32774” disc。” mdns:serv1.ce:gpnp.

tcp.local.://xxxxxx:32774/agent=gpnpd,cname=xxxxxxxxx,host=xxxxxx,pid=8023/

gpnpd h: XXXXXXX C: XXXXXX

” [f=O claimed- host:xxxxxxx cname:xxxxxxx seq:4

auth:CN=GPnP peer]

集群的另外一個節點被發現, gpnpd 確認是否有必要在兩個節點之間同步gpnp profile。2014-10-22 21:32:06.625: [GPNP] [120384416]clsgpnpd_pushThread: [at clsgpnpd.

c:4770] START gpnpd start serving cl工ents after profile updates

push 線程被啟動, 這個線程負責把本地的gpnp profile 發送給其他節點。2014-10-22 21:32:55.562: [GPNP] [79473568]clsgpnp_ocrDetectThread: [at clsgpnpO.

c:4508] OCR client init SUCCEEDED. OCR shared cache is now available

gpnpd 開始監控OCR cache, 以便在集群的配置信息發生改變且有必要更新gpnp profile時進行修改。

2 . 集群配置信息發生改變

使用下面的命令添加新的集群公網信息

[root@t e s t 2 ~ ]# /u01/app/11.2.0.4/grid/bin/oifcfg setif -global

eth4/. *.0:public

查看本地節點的gpnpd.log

[root@test2~]# /u01/app/11.2.0.4/grid/bin/oifcfg getifethO *.*.*.O global public

ethl *.*.*.0 global cluster interconnect

eth4 *.*.*.0 global public

本地節點的gpnpd 發現了有新版本的gpnp profile 需要共享。2014-10-29 13:24:58 363: [GPNP] [3025607568]clsgpnpd_reconcile: [at clsgpnpd.

c: 254 7] --- New Local best profile in effect from shared:

profile 的sequence 被增加了12014-10-29 13:24:58.363: [GPNP] [3025607568]clsgpnpd reconcile: p://www.grid-pnp.org/2005/ 11/gpnp-profile gpnp-profile. xsd” Prof[cont]2014-10-29 13:24:58.363: [GPNP] [3025607568]clsgpnpd reconcile: ileSequence=” 10”ClusterUid=” 7d414c4a930cdfc4ff23e150c9acd5e。” C[cont]

新增的網絡資源net3 被加入到了gpnp profile 中。2014-10-29 13: 24: 58. 363:[GPNP] (3025607568] clsgpnpd_reconcile: t” /><gpnp:Network

id=” net3” Adapter=” eth4” I P=”*.* . *.0” Use[cont]

2014-10-29 13:24:58.363:[GPNP] [3025607568]clsgpnpd_reconcile: =” publi c” /〉〈/gpnp:HostNetwork>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值