首页 > 代码库 > CLUSTER三大后台进程和OCSSD、OPROCD进程

CLUSTER三大后台进程和OCSSD、OPROCD进程

CSS(Cluster synchronizationservice)

这个服务通过管理集群中的节点成员身份完成整个集群的配置工作,每当有新的节点加入到集群,或者有节点离开时,CSS服务负责通知集群的所有节点变更集群配置信息。如果某个节点上的整个进程失败,就会重启这个节点,这个进程是以root身份运行。

 

CRSclusterready service

 

这个组件负责集群的高可用性。被CRS管理的对象叫做集群资源。这些资源包括数据库、实例、监听、VIP地址以及应用程序进程。缺省情况下CRS管理着4个应用程序:oracle监听器、VIP地址、GSD(globalservice daemon)ONSoraclenotification service这些资源的配置信息都保存在OCR中。每个资源的状态发生了变化,CRS就会生成一个事件

CRS会监控这些资源的状态,如果某个资源失效了CRS就会重启这些组件。如果尝试几次都失败了就会放弃尝试,缺省时CRS会尝试5此重启然后放弃。CRS也是通过root身份运行的。如果CRS本身失败,实例就会重启。

 

EVMeventmanager

这个组件负责对外发布CRS生成的事件,我们可以自行定义回调脚本,这样当有事件发生时,EVM就可以调用我们自己的脚本,这种调用是通过racgevt进程进行的。这个组件也是以root身份运行的。

除了通过这个组件,oracle clusterware还会和ONS(oracle notificationService)通信这个组件支持客户端订阅和发布FAN事件。

 

在执行root脚本是会在/etc/inittab中添加三行:

[oracle@felix2 ~]$ cat  /etc/inittab

#

# inittab      This file describes how the INIT process should set up

#              the system in a certain run-level.

#

# Author:      Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>

#              Modified for RHS Linux by Marc Ewing and Donnie Barnes

#

 

# Default runlevel. The runlevels used by RHS are:

#   0 - halt(Do NOT set initdefault to this)

#   1 -Single user mode

#   2 -Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Fullmultiuser mode

#   4 -unused

#   5 - X11

#   6 -reboot (Do NOT set initdefault to this)

#

id:5:initdefault:

 

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

 

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

 

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

 

# When our UPS tells us power has failed, assumewe have a few minutes

# of power left. Schedule a shutdown for 2 minutes from now.

# This does, of course, assume you have powerdinstalled and your

# UPS connected and working correctly. 

pf::powerfail:/sbin/shutdown -f -h +2 "PowerFailure; System Shutting Down"

 

# If power was restored before the shutdown kickedin, cancel it.

pr:12345:powerokwait:/sbin/shutdown -c "PowerRestored; Shutdown Cancelled"

 

 

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

 

# Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm -nodaemon

h1:35:respawn:/etc/init.d/init.evmdrun >/dev/null 2>&1 </dev/null

h2:35:respawn:/etc/init.d/init.cssdfatal >/dev/null 2>&1 </dev/null

h3:35:respawn:/etc/init.d/init.crsdrun >/dev/null 2>&1 </dev/null

[oracle@felix2 ~]$

这样在以后每次系统启动时cluster就会自动启动,如果EVMDCRSD两个进程如果出现异常,则系统会自动重启这两个进程,如果CSSD进程出现异常,系统会自动重启

 

OCSSD

这个进程是clusterware最关键的进程,如果这个进程出现异常,会导致系统重启。这个进程提供CSS服务,CSS服务负责整个集群配置,确定哪些节点是集群里的成员,每当有一节节点加入或者离开集群时,CSS都负责其他节点跟新进群配置。CSS服务通过多种心跳机制,实施监控集群健康状态,一旦发生异常,则重启问题节点以避免发生数据损坏以及提供 脑裂保护等基础集群服务功能。

CSS服务有两种心跳机制:一种是通过私有网络的net我认可heartbeat,另一种是通过voting diskdisk heartbeat;这两个心跳都有最大延时,对于disk heartbeat,这个延时叫做IOT(I/O Timeout);对于network heartbeat,这个延时叫做MC(MisCount);

 

[oracle@felix2 ~]$ crsctl get css disktimeout

unrecognized parameter disktimeout specified.

[oracle@felix2 ~]$ crsctl get css misscount

60

[oracle@felix2 ~]$

 

 

[oracle@felix2 ~]$ ps -ef | grep css

oracle   7171  5395  0 01:00 pts/2    00:00:00 grep css

root    28575     1  0 00:09 ?        00:00:01 /bin/sh /etc/init.d/init.cssdfatal

root    29007 28575  0 00:11 ?        00:00:00 /bin/sh /etc/init.d/init.cssd daemon

root    29148 29007  0 00:11 ?        00:00:00 /bin/su -l oracle -c /bin/sh-c ‘ulimit -c unlimited; cd /u01/oracle/10.2.0/crs_1/log/felix2/cssd;  /u01/oracle/10.2.0/crs_1/bin/ocssd  || exit $?‘

oracle  29149 29148  0 00:11 ?        00:00:00 /bin/sh -c ulimit -cunlimited; cd /u01/oracle/10.2.0/crs_1/log/felix2/cssd;  /u01/oracle/10.2.0/crs_1/bin/ocssd  || exit $?

oracle  29181 29149  0 00:11 ?        00:00:03/u01/oracle/10.2.0/crs_1/bin/ocssd.bin

[oracle@felix2 ~]$

 

OPROCD

这个进程也叫做process Monitor daemon这个进程是用来检测节点的ProcessHangCPU挂起)。这个进程锁定在内存中,用于IOFencing功能OPROC进程会定期唤醒,检查从上次唤醒以来经历的时间,如果这个时间超过了某个期待值(1.5秒),OPROCD进程就会重启节点。