跳信息,同时也会将自己能够联系到的集群中其他节点的信息写入表决盘中,一旦发 生脑
裂,css 的重新配置线程就可以通过表决盘中的信息了解集群中节点之间的连通性,从而决定
集群会分裂成几个子集群,以及每个子集群包含的节点情况和每个节点的状态。
示例:
一个两节点的集群(node1,node2)配置了三块 VF(VF1,VF2,VF3),node1无法访问 VF1,
node2 无法访问 VF2,这意味着两个节点仍然同时能够访问 VF3。而当集群中某一节点无法
访问大多数 VF 时([VF/2]+1),这就意味着当需要通过 VF 中的信息决定节点去留时,可能
会出现没有任何一个 VF 可被集群中的全部节点访问到的情况,这也意味着无法决定哪些节
点应该离开集群,哪些节点应该被保留。
一个两节点的集群(node1,node2) 配置 了 3 块 VF(VF1,VF2,VF3),node1 无 法 访 问
VF1,VF2 node2 无法访问 VF3,这意味着当出现网络问题时,集群无法通过 VF 的信息获得
一致的所有节点的状态,也就无法完成集群的重新配置。所以无论如何变化,只要节点必须
能够访问到[VF/2]+1 个 VF 的规则,就一定能够保证至少一个 VF 能够被所有节点访问到。
三:本地心跳
本地心跳的作用是监控 ocssd.bin 进程以及本地节点的状态。
cssdagent 和 cssdmonitor 的功能就是监控本地节点的 ocssd.bin 进程状态和本地节点
的状态,对于 ocssd.bin 进程的监控是通过本地心跳来实现的,Oracle 会在每一秒钟,在发
送网络心跳的同时向 cssdagent和 cssdmonitor 发送本地 ocssd.bin 进程的状态(本地心跳)。
如果本地心跳没有问题,cssdagent 就认为 ocssd.bin 进程正常。如果 ocssd.bin 进程持续丢
失本地心跳(到达 misscount 的时间)ocssdagent 就会认为本地节点的 ocssd.bin 进程出现
了问题,并重启该节点。
脑裂:
集群的网络心跳丢失,但是磁盘心跳正常。当脑裂出现后,集群会分裂成为若干个子
集群。对于这种情况的出现,集群需要进行重新配置。
重新配置的基本原则:节点数多的子集群存活,如果子集群包含的节点数相同,那么
包含最小编号节点的子集群存活。
四:网络心跳 misscount 和磁盘心跳 disktimeout 查询及设置
misscount:用来定义集群网络心跳的超时时间,默认值是 30s。当集群中的一个或多个节点
连续丢失网络心跳超过 misscount 时间后,集群需要进行重新配置,某一个或多个节点需要
离开集群。在 11gR2 版本的集群,这个值也是节点本地心跳超时时间,因为本地心跳和网
络心跳是由相同的线程发送的。
查询网络心跳 NHB misscount
[root@node1 ~]# crsctl get css misscount;
CRS-4678: Successful get misscount 30 for Cluster Synchronization Services.
查询磁盘心跳 DHB disktimeout
[root@node1 ~]# crsctl get css disktimeout;
评论