CRS(Cluster Ready Service)主要负责管理集群中的应用程序资源,实现集群资源的高可用,CRSD的另一部分功能是管理OCR,包括OCR的更新与备份。
CRSD的启动过程
1)crsd.bin被ohasd的代理进程orarootagent启动。
2)crsd.bin访问OCR,获得需要启动的资源列表。
3)crsd.bin启动对应的代理进程:oraagent_root,oraagent_grid,oraagent_oracle
4)oraagent_root启动集群的公网资源,之后集群的vip和scan vip资源也被启动。
5)oraagent_grid启动和vip对应的node listener资源,以及和scan vip对应的scan listener资源。
6)oraagent_grid启动ora.asm代理资源,并启动其他的磁盘组资源。
7)oraagent_oracle启动数据库资源,并启动对应的数据库服务资源。
8)script_agent启动ora.cvu资源。
?
PE(Policy Engine):crsd是一个分布式的集群组件,集群中的每一个节点都会运行该组件,而且它们要对一些共享的资源进行管理,所以对资源进行管理时需要一种协调机制保障操作能够被顺序执行,oracle采用的是主从模式,集群中的一个节点会被选择称为PE主节点,集群中所有对资源的操作都会被发送给PE主节点的crsd守护进程,再由这个主节点发送给需要执行相关操作节点的agent。
CRSD的运行方式
步骤1:在请求节点的客户端发出请求,例如:一个crsctl命令。
步骤2:请求节点CRSD的UI模块收到对应的请求,并将请求发送给本地节点CRSD的PE模块。
步骤3:本地节点的PE模块在分析了请求所需要执行的操作之后,将该请求发送给PE主节点的PE模块。
步骤4:PE主节点上的PE模块在分析了收到的请求后,将需要执行的操作发送给目标节点的AGENT模块。
步骤5:目标节点的AGENT模块通知本地节点上对应的AGENT进程对资源进行操作。
步骤6;目标节点的AGENT进程完成了对资源的操作,并通知本地节点的AGENT模块。
步骤7:目标节点的AGENT模块将结果返回给PE主节点的PE模块。
步骤8:PE主节点的PE模块将返回结果发送给请求节点的PE模块。
步骤9:请求节点的PE模块将命令的返回结果发送给本节点的UI模块。
步骤10:请求节点的UI模块将请求结果发送给对应的客户端。
?
OCR的管理
OCR(Oracle Cluster Register):OCR主要用于记录和CRSD相关的资源信息,CRSD通过访问OCR来获得集群资源的列表,以及每个资源的属性。
OCR主节点(OCR Master Node):由于集群中的每个节点的crsd.bin都需要访问OCR,而且有时需要修改其中的信息,所以集群中最先启动的节点上的crsd.bin会被选取去修改OCR的进程,而对应的节点被称为OCR主节点,集群中的其他节点只会在本地将OCR信息维护在cache中,在读取信息时从cache中读取,而在写入时,会将对应的信息发送给OCR主节点,由主节点完成最后的写入操作。
OCR的自动备份
OCR主节点的crsd.bin会自动地备份OCR文件,每隔4个小时就会进行一次备份,备份文件放在$GRID_HOME/cdata/<cluster_name>目录下,并且会自动保留一份周备份,日备份以及最近3次的备份。
grid@wallet01 ~]$ ocrconfig -showbackup
wallet01 ? ? 2021/06/28 15:03:58 ? ? /u01/app/11.2.0.4/grid/cdata/wallet-cluster/backup00.ocr
wallet01 ? ? 2021/06/28 11:03:57 ? ? /u01/app/11.2.0.4/grid/cdata/wallet-cluster/backup01.ocr
wallet01 ? ? 2021/06/28 07:03:55 ? ? /u01/app/11.2.0.4/grid/cdata/wallet-cluster/backup02.ocr
wallet01 ? ? 2021/06/27 03:03:42 ? ? /u01/app/11.2.0.4/grid/cdata/wallet-cluster/day.ocr
wallet01 ? ? 2021/06/24 15:03:16 ? ? /u01/app/11.2.0.4/grid/cdata/wallet-cluster/week.ocr