Oracle clusterware的组成

RAC从逻辑上分为层:应用层,集群层,存储层,网络层,其中存储层,网络层对应着硬件资源;而集群层,应用层对应着软件资源,接下来我们详细讨论集群层 集群层由各个节点上的集群软件组成,集群软件在集群环境的地位与作用与OS Kernel在单机系统的地位和作用

RAC从逻辑上分为层:应用层,集群层,存储层,网络层,其中存储层,网络层对应着硬件资源;而集群层,应用层对应着软件资源,接下来我们详细讨论集群层

集群层由各个节点上的集群软件组成,集群软件在集群环境的地位与作用与OS Kernel在单机系统的地位和作用是一样的,在单机系统中,硬件资源是由OS Kernel管理的,应用软件(比如oracle)是不能直接访问硬件的,必须通过OS  Kernel提供的API接口间接访问,OS Kernel除了要完成用户请求,还通过进程调度等机制来控制多进程对资源的使用,但是到了集群环境,硬件尤其存储设备是共享使用的,不仅需要协调每台主机内多进程的共享使用,还需要协调主机间进程的共享使用,这种要求靠传统的OS Kernel就没法满足了,这就需要集群软件的介入

在整个RAC集群中,实际有两个集群环境存在,一个是由clusterware软件组成的集群,另一个是由database组成的集群,其中clusterware集群负责管理整个集群环境的硬件资源,并为上层的database集群软件提供基础服务,二者非常类似于单机环境下应用程序和OS的关系,可以把这个clusterware集群看作是OS Kernel,那么RAC就是其上的DATABASE应用,或者可以这样说,clusterware组成的集群把所有节点虚拟成一个计算机,而RAC又把所有节点上的实例(INSTANCE)虚拟成一个实例,严格意义上说RAC特指借助与某种集群件产品搭建出来的一个多实例,单一数据库的环境,也就是上面提到的第二个集群环境,这个环境是一个应用层的概念,之所以说是某种集群件产品因为可以选用oracle clusterware这个产品,也可以选用其他厂商提供的产品,集群软件的选择不是唯一的,不同的厂商有不同的产品,如Sun Cluster,Vertias等,而Oracle Cluseterware是指oracle提供的集群件产品,并且oracle 10g之前的RAC,必须选用厂商的集群件,只是从版本10以后oracle自己提供了能支持所有平台的clusterware产品

Oracle Cluster 是一个单独的安装包,安装后,在每个结点上的Oracle Clusterware 会自动启动

Oracle Clusterware的运行环境由2个磁盘文件(OCR,Voting Disk),若干进程和网络元素组成

Clusterware 在运行期间需要两个文件:OCR和Voting Disk. 这2个文件必须存放在共享存储上,OCR 用于解决健忘问题,Voting Disk 用于解决脑裂问题, Oracle 建议使用裸设备来存放这2个文件,每个文件创建一个裸设备,每个裸设备分配100M左右的空间就够了

OCR的位置:被记录在/etc/oracle/ocr.Loc(Linux 系统) ,orc.loc的内容如下:

1
2
ocrconfig_loc=/dev/raw/raw130
local_only=FALSE

查看Voting Disk位置:

1
$Crsctl query css votedisk

clusterware由若干个进程组成,其中最重要的3个是CRSD,CSSD和EVMD,在安装clusterware的最后阶段,会要求在每个节点执行root.sh脚本,这个脚本会在/etc/initab文件的最后添加如下3行,这样以后每次系统启动时,clusterware也会自动启动,其中EVMD和CRSD两个进程如果出现异常,则系统会自动重启这两个进程,但是如果CSSD进程异常,系统会立即重启

OCSSD这个进程是Clusterware最关键的进程,如果这个进程出现异常,会导致系统重启,这个进程提供CSS(Cluster Synchronization Service)服务

CSS 服务通过多种心跳机制实时监控集群状态,提供脑裂保护等基础集群服务功能

注:

除了Clusterware 需要这个进程,在单节点环境中如果使用了ASM,也需要这个进程

这个进程用于支持ASM Instance 和RDBMS Instance之间的通信

如果在使用了ASM的节点上安装RAC,会遇到一个问题:RAC节点要求只有一个OCSSD进程

并且应该是运行$CRS_HOME目录下的,这时就需要先停止ASM,并通过$ORACLE_HOME/bin/localcfig.Sh delete 

删除之前的inittab 条目, 之前安装ASM时,也使用这个脚本来启动

OCSSD: $ORACLE_HOME/bin/localconfig.Sh add


CRSD是实现"高可用性(HA)"的主要进程,它提供的服务叫作CRS(Cluster Ready Service) 服务,Oracle Clusterware是位于集群层的组件,它要为应用层资源(CRS Resource) 提供"高可用性服务",所以, Oracle Clusterware 必须监控这些资源。在这些资源运行异常时进行干预,包括关闭,重启进程或者转移服务,CRSD进程提供的就是这些服务


所有需要高可用性的组件,都会在安装配置的时候,以CRS Resource的形式登记到OCR中,而CRSD进程就是根据OCR中的内容,决定监控哪些进程如何监控,出现问题时又如何解决,也就是说,CRSD进程负责监控CRS Resource 的运行状态,并要启动,停止,监控,Failover这些资源


CRS Resource 包括GSD(Global Serveice Daemon),ONS(Oracle Notification Service),VIP, Database, Instance 和 Service.

这些资源被分成2类:

GSD,ONS,VIP 和 Listener 属于Noteapps类

Database,Instance 和Service 属于 Database-Related Resource 类


GSD,ONS,VIP 这3个服务是在安装Clusterware的最后执行VIPCA 时创建并登记到OCR中的,而Database, Listener, Instance 和Service 是在各自的配置过程中自动或者手动登记到OCR中的

EVMD这个进程负责发布CRS 产生的各种事件(Event). 这些Event可以通过2种方式发布给客户:ONS 和 Callout Script. 用户可以自定义回调脚本放在特定的目录下,这样当有某些事件发生时,EVMD会自动扫描该目录,并调用用户的脚本,这种调用是通过racgevt进程来完成的

EVMD进程除了复杂发布事件之外,它还是CRSD 和CSSD 两个进程之间的桥梁, CRS 和CSS 两个服务之前的通信就是通过EVMD进程完成的

RACGIMON这个进程负责检查数据库健康状态,负责Service的启动,停止,故障转移(Failover),这个进程会建立到数据库的持久连接定期检查SGA中的特定信息,该信息由PMON 进程定时更新

OPROCD这个进程也叫作 Process Monitor Daemon. 如果在非Linux 平台上并且没有使用第三方的集群软件时,就会看到这个进程这个进程用来检查节点的Processor Hang(CPU 挂起), 如果调度时间超过1.5秒, 就会认为CPU 工作异常会重启节点,也就是说这个进程提供 "IO 隔离" 的功能,从其在Windows 平台上的服务名: OraFnceService 也可以看出它的功能, 而在Linux 平台上, 是利用Hangcheck-timer 模块来实现"IO 隔离"的

oracle clusterware不像数据库那样,有丰富的视图,工具可以用来辅助诊断,它的日志和trace文件是唯一的选择,但不像oracle只有alert日志和几种trace文件,oracle clusterware的日志体系还是比较复杂的

alert.log:这个日志类似于数据库的alert.log,一般应该作为检查的起点

Clusterware后台进程日志:

crsd,cssd,evmd,分别是3个目录,分别对应着CRS三个同名的进程的日志,日志的名字和进程名字一致,分别叫crsd.log,ocssd.log,evmd.log

crsd.Log: $ORA_CRS_HOME\log\hostname\crsd\crsd.Log

ocssd.Log: $ORA_CRS_HOME\log\hostname\cssd\ocsd.Log

evmd.Log: $ORA_CRS_HOME\log\hostname\evmd\evmd.Log


racg:这是个目录,这里面放置的是所有nodeapp的日志,包括ONS和VIP,每个日志从名字上很容易辨别对应的nodeapp,比如ora.dbp.ons.log对应的就是ONS的日志,Nodeapp日志位置:$ORA_CRS_HOME\log\hostname\racg\

client:这个目录里面放置的是工具执行日志,oracle clusterware提供了许多命令行工具,比如ocrcheck,ocrconfig,ocrdump,oifcfg和clscfg,这些工具运行时产生的日志就放在这个目录下,同样从日志名称上,可以判别对应的是哪个工具,比如ocrconfig_6836.log对应就是ocrconfig工具的日志,$ORACLE_HOME\log\hostname\client\ 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值