暂无图片
Oracle RAC脑裂的时候总是节点数字大的那一个先down,这是为什么呢?
我来答
分享
墨天轮问答君
2021-09-01
Oracle RAC脑裂的时候总是节点数字大的那一个先down,这是为什么呢?

Oracle RAC脑裂的时候总是节点数字大的那一个先down,这是为什么呢?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
三笠丶
暂无图片

额,可以说是Oracle制定的规则吧~

集群层脑裂问题的处理方法:

  • 包含更多节点的集群保留下来,包含少节点的集训将被从集群中驱逐。

  • 如果形成脑裂的2个集群包含相同的节点,节点号小的集群被好留,节点号大的被驱逐。

  • 当由于由于负载问题导致驱逐发生时,Oracle选择负载低的节点保留。

脑裂(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)个以上。

暂无图片 评论
暂无图片 有用 0
暂无图片
唯唯

总裁没结果吧,是几个节点的

暂无图片 评论
暂无图片 有用 0
果达

因为oracle的机制是默认在未特殊设置的情况下,会让节点数字小的当master节点,比如1和2,会采用2,当然,要是1出问题了,就会是2把1踢出去了

暂无图片 评论
暂无图片 有用 1
墨天轮问答君

感谢大家!

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏