脑裂(split brain):描述的是私有网络心跳出现故障的时候,而每个节点都正常运行,这时侯每个节点都认为其他的节点宕机了,自己应该获得集群的控制权,这种状况就是脑裂。
为了帮助解决脑裂的问题,引入了voting disk ,voting disk oracle 建议至少3个以上,那么脑裂是怎么发生的?voting disk是怎么仲裁的?
rac正常情况下,没秒钟都是监听各个节点间的心跳信息,若某个节点在miscount秒内没有被接收到心跳信息,就会形成了两个或多个子集群,,这样的状况就是脑裂,如果发生了脑裂,决定子集群存活的因素(voting disk正常的时候)是:
1、拥有节点最多的子集群存活
2、如果两个子集群节点相等,那么节点级别低将别踢出
如: xxxx2, is smaller than cohort of 1 nodes led by node 1
当节点别踢出集群以后,为了保证被踢出的节点不能访问共享存储的数据,io fencing来解决这个问题,oracle rac会重启被踢出集群的节点,来保证共享存储的数据。
voting disk是为了解决私有网络通信故障的,所以每个节点必须要对voting disk进行通信,具体就是向voting disk写入心跳信息,由css读取这个块的信息来确定节点的状态,如果有多个voting disk,存活的节点必须可以访问(N/2+1)个以上
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)