Clusterware由若干进程组成,其中最重要的是CRSD,CSSD,EVMD
GSD(GLOBAL SERVICE DAEMON)
在Clusterware安装的最后阶段,会要求在每个节点执行root.sh脚本,这个脚本实际的作用就是在/etc/inittab文件最后添加3行
hi:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 < /dev/null
hi:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 < /dev/null
hi:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 < /dev/null
如果EVMD和CRSD出现异常,系统或自动重启这两个进程,如果CSSD进程异常,系统会立即重启
------------------------------------------------------------------------------------------------------
1、OCSSD
OCSSD(cluster synchronization service集群同步服务)这个进程是clusterware最关键的进程,如果这个进程异常,会导致系统重启,CSS通过多种心跳机制实时监控集群健康状态,提供脑裂保护等基础集群服务功能。
CSS服务有两种心跳:
network heartbeat:通过私有网络
disk heartbeat :通过voting disk‘
这两个心跳都有最大时延,对于disk heartbeat,这个延时叫做IOT(I/O TIMEout),对于network heartbeat 这个延时叫做MC(MISCOUNT),都是以秒为单位,默认IOT大于MC,这两个参数由oracle自动判定,不需要调整。
可以通过下面命令查看参数设置:
crsctl get css disktimeout
crsctl get css misscount
TIP:
除了clusterware 需要这个进程,在单节点的ASM环境也需要这个进程,这个进程用于支持ASM 实例和database实例之间的通信。但是如果在已经使用了ASM的节点上安装RAC,会遇到一个问题,因为RAC要求节点只有一个OCSSD进程,并且应该是运行在$CRS_HOME目录下,这时就需要先停止ASM,并通过$ORACLE_HOME/bin/localconfig.sh delete删除 之前的inittab条目。之前安装ASM时也曾经使用这个脚本来启动OCSSD,那个命令式$ORACLE_HOME/bin/localconfig.sh add.
------------------------------------------------------------------------------------------------------
2、CRSD
CRSD是实现高可用的主要进程,它所提供的服务叫做CRS(cluster ready service)。
oracle clusterware 必须要监控资源运行异常,并进行干预,包括关闭,重启或者转移服务等,CRSD进程提供的就是这些服务。
默认情况下,CRS会自动尝试重启资源5次,如果还失败则放弃
CRS监管的软件分为两组
nodeapps:【表示这些资源每个节点只需要一个就够了,比如每个节点只需要一个listener】
ONS(ORACLE NOTIFICATION SERVICE DAEMON)
LISTENER
database-related-resource:【这些资源与数据库相关,不受节点限制,如一个节点可以有多个instance,每个instance可以有多个service】
VIP
DATABASE
INSTANCE
SERVICE
GSD、ONS、VIP是在OCR的安装过程中自动创建并注册
listener、database、instance、service可以在安装过程中自动创建,也可以 在安装完成后通过DBCA NETCA SRVCTL工具创建并注册
这些注册到CRS resource的对象是以元数据(metadata)的形式被记录在OCR磁盘上,这些元数据包括这些对象的名称、如何启动、停止、如何检查健康状况等配置信息。
------------------------------------------------------------------------------------------------------
3、EVMD
这个进程负责发布CRS产生的各种事件(Event),这些event可以通过俩种方式发布给客户----ONS和callout script,用户可以自定义回调脚本,放在特定目录下,这样当某些事件发生时,EVMD会自动扫描改目录,并调用脚本,这个调用由racgevt进程来完成。
EVMD进程出来发布事件之外,还是CRSD和CSSD两个进程之间通信的桥梁。
------------------------------------------------------------------------------------------------------
4、RACGIMON
这个进程负责检查数据库健康状态,负责service的启动,停止,故障转移(failover),这个进程会建立到数据库的持久连接,定期检查SGA中的特定信息,该信息由PMON进程定期更新。
------------------------------------------------------------------------------------------------------
5、OPROCD
这个进程也叫做 Process monitor daemon 。这个进程用来检测节点的processor hang(CPU 挂起),如果调度时间超过1.5秒,就会认为CPU工作异常,会重启节点,也就是说这个进程提供的是"I O隔离"功能,
在非linux下使用会看到这个进程,但在linux 下,是利用hangcheck-timer模块来实现"I O"隔离功能。