[Oracle 11g r2(11.2.0.4.0)]集群守护进程gpnp介绍

首先来看下oracle11g r2进程关系:
这里写图片描述
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"?><gpnp:GPnP-Profile Version="1.0" xmlns="http://www.grid-pnp.org/2005/11/gpnp-profile" xmlns:gpnp="http://www.grid-pnp.org/2005/11/gpnp-profile" xmlns:orcl="http://www.oracle.com/gpnp/2005/11/gpnp-profile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.grid-pnp.org/2005/11/gpnp-profile gpnp-profile.xsd" ProfileSequence="4" ClusterUId="9e8b46d3fe3cefefbf18cc7235f3b531" ClusterName="node-cluster" PALocation=""><gpnp:Network-Profile><gpnp:HostNetwork id="gen" HostName="*"><gpnp:Network id="net1" IP="10.37.2.0" Adapter="eth0" Use="public"/><gpnp:Network id="net2" IP="192.168.52.0" Adapter="eth1" Use="cluster_interconnect"/></gpnp:HostNetwork></gpnp:Network-Profile><orcl:CSS-Profile id="css" DiscoveryString="+asm" LeaseDuration="400"/><orcl:ASM-Profile id="asm" DiscoveryString="/dev/asm-*" SPFile="+DATA/node-cluster/asmparameterfile/registry.253.957185753"/><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><ds:Reference URI=""><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="gpnp orcl xsi"/></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><ds:DigestValue>9oqCcRP6viy+3oPQFv67uN6XAIg=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>YauI3XibSmhwnekQAUvOw2T6coLFl4UerlHg0YyENFw6rUY3Jo5Q2jcbVObJBNNxn0wKtCSgMUVFgZR9bNhAK/MOgy0x6ifztQKjaTdPdwIueKUQNtM2a8XfNQ+VxjWS98htWgTKL/YpqEHpgEetWv9EF60kc+WrBUpVwSa8pzc=</ds:SignatureValue></ds:Signature></gpnp:GPnP-Profile>
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=<xxxx> 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><[cont)
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 pofile

2014-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 getif

ethO *.*.*.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 被增加了1

2014-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></gpnp:Network-Profile><orcl:CSS-P[cont]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值