1.资源和代理进程的关系
代理进程:资源拥有者:资源名称
oraagent_grid:grid:ora.gsd
oraagent_grid:grid:ora.LISTENER.lsnr
oraagent_grid:grid:ora.asm
oraagent_grid:grid:ora.ons
oraagent_grid:grid:ora.oc4j
oraagent_grid:grid:ora.SCAN_LISTENER.lsnr
oraagent_grid:grid:ora.DATA.dg
oraagent_oracle:oracle:ora.orcldb.db
oraagent_oracle:oracle:ora.orcldb.orcl.srv
scriptagent:grid:ora.cvu
orarootagent_root:root:ora.registry.acfs
orarootagent_root:root:ora.scan1.vip
orarootagent_root:root:ora.test1.vip
orarootagent_root:root:ora.gns
orarootagent_root:root:ora.gns.vip
orarootagent_root:root:ora.net1.network
2.资源管理框架的基本概念
EP:Entry Point:它非常类似于10gR2版本中的CRSD 对应资源的动作,
用于指定agent 可对这个资源执行哪些操作、动作。支持的EP有:
Start:启动资源
Stop:停止资源
Check:检查资源的状态,如果发现资源状态改变,agent则会通知GI资源
状态发生了改变。
Clean:清理资源,一般来说清理资源会在资源存在问题而需要重新启动或
failover之前发生。
Abort:终止资源。
状态:当资源进入某一个EP之后,一定会返回一个状态,支持的状态有:
ONLINE:在线。
OFFLINE:离线。即使资源被离线,GI仍然会探测这个资源的状态,以便在资源
恢复正常时能够自动将资源重新上线。
UNKOWN:未知,对应资源的unkown 状态,这种状态下,agent会继续对该资源进行检查。
PARTIAL:部分在线,对应资源的 intermediate 状态。这种状态下 agent会继续对该
资源进行检查,并及时更新资源状态。
FAILED:失败,返回值说明资源存在问题,不能正常工作。之后会进行failover 或者restart;
INTERMEDIATE:资源正处于一个状态到另一个状态之间的中间状态。这说明agent
目前还不知道这个资源的状态。
agent:代理进程:agent 只能被 ohasd 或者CRSD 启动。其中ohasd启动agent 负责管理集群
的初始化资源;CRSD启动的agent负责管理集群的应用程序资源。ohasd 和CRSD 根据
集群的不同会启动不同的agent,有些agent是root用户启动的,有些是grid用户启动的,
还有些是由Oracle用户启动的。
PE(Policy Engine):由于CRSD 是一个分布式的集群组件,也就是说集群中的每一个节点
都会运行该组件,而且它们要对一些共享的资源进行管理,所以在对资源进行管理的时
需要一种协调机制以保证操作能够顺利执行。Oracle采用的的主从模式,或者master-slave
模式。集群中第一个节点被选择为PE的主节点。集群中所有对资源的操作都会先被发送给
PE主节点的CRSD守护进程。再由这个主节点统一发送给需要执行相关操作的节点的agent;
3.CRSD的模块
CRSD 是由多个模块构成的:
PE模块:主要负责制定CRSD的策略决定。
agent模块:负责和代理进程(agent)进行通信并完成对具体资源的操作。
UI(User Interface)模块:负责响应客户端发送的请求,并和底层的PE模块,agent 模块通信。
OCR模块:当操作需要多OCR进行操作时,该模块负责完成对OCR的操作。
通告模块:由于有些操作会导致资源状态的变化,这个模块负责向外发布资源的变化信息,
其他的集群组件(如EVMD)需要接收这些通告。
通信模块:负责节点间CRSD通信。
--查看CRSD模块列表
su - root
crsctl lsmodules crs
资源类型:
由于CRSD需要管理很多的资源,所以它把资源分成了很多类型,每一种类型的资源
都会有一些共同的资源属性。比较常见的资源类型有:
ora.diskgrou.type :磁盘组相关的资源
ora.listener.type: 监听程序相关的资源
ora.asm.type: ASM 实例相关的资源。
ora.database.type: 数据库相关的资源。
资源属性:
每个资源都会有相关属性被定义,agent在对资源进行操作时需要具体的资源属性
以决定对资源执行哪些具体的操作。资源属性可以分为只读属性,资源特定的属性,
可修改属性。
资源依赖关系:
依赖关系,就是资源和资源之间的彼此依赖关系。10g版本,资源依赖关系主要靠资源属性
REQUIRED_RESOURCES 类决定。11gr2 版本的集群上,Oracle对资源依赖关系做了非常
详细的区分,它会以资源属性 START_DEPENDENCIES 和 STOP_DENPENDENCIES 的形式存在。
也就是存在两种依赖关系:启动依赖关系,停止依赖关系。
--检查数据库资源和其他资源的依赖关系。
su - root
crsctl stat res ora.orcldb.db -p
4.CRSD的运行方式
客户端-->UI模块-->PE模块-->PE模块主节点-->远程AGENT模块-->结果返回给PE模块主节点。
-->返回给请求的UI模块-->返回客户端。
(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模块将请求结果发送给对应的客户端。
--停止监听的命令
srvctl stop listener -n rac2 -l LISTENER
5.CRSD管理的新资源
CRSD管理的资源分为两种:本地资源,集群资源。
本地资源:
是指该资源只能在本地节点商行运行,不能转移到集群的其他节点上运行。
本地资源包括:network 资源,GSD 资源,监听程序资源,ONS 资源,
ASM 代理资源和磁盘组资源。
集群资源:
是指该资源会选择在集群的某一个或多个节点上运行,当某个节点出现问题时,
资源可以切换到集群中的其他节点上继续运行。集群资源包括:VIP资源,
SCAN VIP 资源,GNS 资源,数据库资源和数据库服务资源。
(1)网络资源
--查看网络资源的属性
su - grid
crsctl stat res ora.net1.network -p
由于这个资源管理着集群的公网,很多资源都需要依赖于这个资源,例如 VIP资源,
SCAN VIP资源,监听程序资源,CVU 资源,数据库服务资源。一旦这个资源出现了问题,
依赖于这个资源的其他资源都会被离线。
(2)VIP资源
节点VIP资源
SCAN VIP资源
GNS VIP 资源。
GNS 实际上可以认为是Oracle推出的DNS,在大型网络当中,如果DHCP 被使用,
GNS可以作为DNS 定义的域(Domain)的一个子域存在,为GI张红的VIP,
SCAN VIP 和节点公网IP提供域名解析服务,使得GI不再需要固定的IP地址。
而是从DHCP租用地址。如果需要使用GNS的话,就需要一个GNS VIP地址来定义
所在的子域位置。
应用VIP资源:用户可以根据自己的需要自定义VIP地址。
(3)监听程序资源
有两种类型的监听程序资源,分别是 SCAN 监听程序和节点监听程序。
SCAN监听程序:SCAN 监听程序需要和SCAN VIP成对出现,负责接受从SCAN VIP
到数据库的连接。SCAN VIP 和对应的 SCAN监听程序需要运行在相同的节点上,
当SCAN VIP 切换到其他节点上之后,SCAN 监听程序也会随之切换。
每个SCAN 监听程序只负责监听对应的SCAN VIP的IP地址。不会监听其他的IP地址。
节点监听程序
节点的监听程序实际上和10gr2版本的监听程序基本上是相同的,负责接收通过节点
VIP或者公网IP到数据库的连接。
(4)ONS 资源
ONS 资源负责监控Oracle Notification Service 的状态,ONS 对应的配置文件位于
{GI_HOME}/opmn/config/ons.config.test1 .
(5)GSD资源
GSD 资源的作用是为了向后兼容9i版本的数据库资源,这个资源默认处于离线状态。
如果集群中存在运行9i版本的数据库与软件,那么这个资源需要上线,否则
这个资源对集群没有任何作用,应该保持离线。
(6)GNS 资源
GNS 资源负责为集群提供域名解析服务,它的功能是配合DHCP为集群的公网,
VIP,SCAN VIP 提供域名解析服务。GNS除了在12C版本集群的Flex Cluster
中需要使用外,在其他实际应用中很少使用。
(7)ASM代理资源
由CRSD管理的ASM资源(ora.asm)实际上是OHASD管理的ASM资源的一个代理资源。
而OHASD管理的ASM资源才是真正负责管理集群的ASM实例。
CRSD管理的ASM资源只会显示真正的ASM实例的状态。
(8)磁盘组资源
磁盘组资源:
ora.DATA.dg
负责管理对应的ASM磁盘组,该资源在磁盘组被挂载后会自动上线,并开始
监控磁盘组的状态。如果某一个使用了磁盘组的数据库被打开后,
CRSD会自动设置数据库资源和磁盘组资源之间的依赖关系。
(9)数据库资源
数据库资源 ora.orcldb.db 是11gr2版本集群中新增加的资源,它替代了原有的
10.2版本中的数据库实例资源和数据库资源。该资源负责管理集群中运行的数据库。
--查看数据库的资源属性。
crsctl stat res ora.orcldb.db -p
(10)数据库服务资源
ora.orcldb.orcl.svc
在11gr2版本集群中,数据库服务资源变成了一个资源(.svc资源),之前版本中的
.cs/.srv 资源已经不再存在。
(11)CVU资源
从11.2.0.2开始,GI会定期(默认情况下每6个小时)运行 cluvfy 命令对集群的健康
性进行检查。默认情况下,第一个加入集群的节点会运行ora.cvu资源,并定期对集群
进行健康性检查。需要说明的是,该资源只会对集群进行健康检查,并将查询到的
问题显示出来,但是不会对集群做任何修改。
crsctl stat res ora.cvu -p
(12)使用srvctl 命令
--查看网络资源
srvctl config network -k l
--VIP资源
srvctl config vip -n test1
--SCAN VIP 资源
srvctl config scan
--Listener资源
srvctl config listener -l LISTENER
--SCAN LISTENER
srvctl config scan_listener
--ASM资源
srvctl config asm -a
--磁盘组资源:
srvctl status diskgroup -g DATA1
--数据库资源
srvctl config database -d orcldb -a
--数据库服务资源
srvctl config service -d orcldb -s test -v
(13)小结
绝大部分的资源都是由root或者grid用户对应的代理进程来管理的,
只有数据库资源和数据库服务资源是由Oracle用户对应的代理进程管理的。
这样反应了一个集群的方向:数据库越来越像是GI管理的一个资源,
在集群中的地位也变得不那么重要了,ASM会变成集群的基础组件,
提供存储服务,卷管理器和文件系统服务,集群管理的资源越来越多。