在 11gR2 版本集群中, 除了 ohasd, 其他的一切守护进程和资源都被称为资源, 包括 crsd.bin 守护进程也会以 ora.crsd 初始化资源的形式存在, 每一个资源都会被对应的代理进程管理, 每个代理进程会根据需要被启动, 并管理自己的资源.
OS 启动 OHASD
- 1,exec /etc/init.d/init.ohasd run>/dev/null 2>&1 </dev/null
- cat /etc/init/oracle-ohasd.conf
- # Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
- #
- # Oracle OHASD startup
- start on runlevel [35]
- stop on runlevel [!35]
- respawn
- exec /etc/init.d/init.ohasd run>/dev/null 2>&1 </dev/null
2,init.ohasd.run 被启动, 该进程负责启动 ohasd.bin 守护进程
3,ohasd.bin 进程被启动
阶段一
OHASD 会启动 4 个代理进程: orarootagent,oraagent,CSSdagent,cssdmonitor
阶段二
OHASD 启动的 4 个代理进程会启动集群的初始化资源
orarootagent: 启动 ora.crsd,ora.ctssd,ora.cluster_interconnect.hai,ora.crf
oraagent: 启动 ora.asm,ora.evmd,ora.gipcd,ora.gpnpd,ora.mdnsd
cssdagent: 启动 ora.cssd
cssdmonitor: 启动 ora.cssdmonitor
阶段三
CRSD 会启动 3 个代理进程: oraagent_root,oraagent_grid,oraagent_oracle
orarootagent: 这个代理进程负责管理以 root 身份运行的 crsd 资源
oraagent: 这个 agent 会有两个, 分别负责管理以 grid,oracle 身份运行的 crsd 资源
阶段四
CRSD 启动的 3 个代理进程会启动 crsd 管理的资源, 例如数据库, 监听器
oraagent_root: 启动 ora.net1.network,ora.<节点名>.vip,ora.scan<x>.vip
oraagent_grid: 启动 ora.asm,ora.<磁盘组名>.dg,ora.ons,ora.<节点名>.lsnr,ora.<scan_listener>.lsnr
oraagent_oracle: 启动 ora.<数据库名>.db,ora.<数据库名>.<服务名>.svc
为什么会存在两个 ora.asm 资源?
OHASD 管理的 ASM 资源负责管理集群的 ASM 实例, CRSD 管理的 ASM 资源只会显示 ASM 实例的状态. 由于在 11gR2 版本集群中, OCR 和 VF 都保存在 ASM 磁盘组中, 对应 OCSSD 可以通过 gpnp profile 中的 discovery string 来扫描对应路径下的所有磁盘头信息, 进而发现集群的 VF. 但是对于 CRSD, 需要在 ASM 实例启动并且 OCR 所在的磁盘组被 mount 之后才 能够访问 OCR, 与此同时 ASM 实例本身也作为集群的应用程序之一, 需要被集群管理, 而负责管理集群应用程序的进程是 CRSD, 因此, 在 11gR2 版本集 群中, 出现了两个 ASM 资源, OHASD 管理的 ASM 资源负责管理本地节点的 ASM 实例, CRSD 管理的 ASM 资源负责反映 ASM 实例的状态, 同时对 ASM 实例进行一些全局性操作.
对于磁盘组资源 (ora.<磁盘组名>.dg) 负责反映对应磁盘组的状态, 该资源在磁盘组被 mount 后会自动上线, 并开始监控磁盘组的状态.
mdnsd 为集群中的其他守护进程, 主要是 gpnpd 和 ohasd 进程提供资源发现服务, 帮助集群中的其他守护进程发现远程节点.
gpnpd 读取本地节点的 gpnp profile, 之后和远程节点的 gpnpd 守护进程通信, 获得集群中最新的 gpnp profile 信息.
gipcd 作为管理集群私网的进程负责检查本地节点私网的网卡状态, 获取并向集群中的其他进程提供集群私网信息.
OCSSD 启动流程
1,ocssd.bin 被 cssdagent 代理进程启动.
2,ocssd.bin 访问 gpnp profile, 获得集群的名称, 私网, VF 搜索路径等基本信息.
3,ocssd.bin 在 VF 搜索路径中找到 VF, 并在 VF 的租借块中续租本地节点的节点编号, 同时将本地节点的信息添加到 VF 中, 并开始和 VF 进行磁盘心跳.
4,ocssd.bin 根据 gpnp profile 中的信息, 和 gipcd 进程通信, 获取集群间通信的私网信息(endpoint).
5,ocssd.bin 根据获取的私网信息与远程节点的 ocssd.bin 建立连接.
6, 集群重新配置开始, 重新配置主节点向集群的其他节点发送消息, 通知其他节点有新节点加入, 其他节点接收消息.
7, 重新配置结束, 本地节点加入集群.
来源: http://www.bubuko.com/infodetail-2673509.html