ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于RAC仲裁: 比较仲裁盘数量还是节点数票数

关于RAC仲裁: 比较仲裁盘数量还是节点数票数

原创 Linux操作系统 作者:tolywang 时间:2011-03-01 18:15:52 0 删除 编辑
Oracle 10g , 11g   

下面是网络上关于brain split的一段资料:  

脑裂(Split Brain)
在集群中,节点间通过某种机制(心跳)了解彼此的健康状态,以确保各节点协调工作。 假设只有"心跳"出现问题, 各个
节点还在正常运行, 这时,每个节点都认为其他的节点宕机了, 自己是整个集群环境中的"唯一建在者",自己应该获得
整个集群的"控制权"。 在集群环境中,存储设备都是共享的, 这就意味着数据灾难, 这种情况就是"脑裂"
解决这个问题的通常办法是使用投票算法(Quorum Algorithm). 它的算法机理如下:
集群中各个节点需要心跳机制来通报彼此的"健康状态",假设每收到一个节点的"通报"代表一票。对于三个节点的集群,
正常运行时,每个节点都会有3票。 当结点A心跳出现故障但节点A还在运行,这时整个集群就会分裂成2个小的partition
。 节点A是一个,剩下的2个是一个。 这是必须剔除一个partition才能保障集群的健康运行。
对于有3个节点的集群, A 心跳出现问题后,B和C 是一个partion,有2票, A只有1票。 按照投票算法, B 和C 组成的
集群获得控制权, A 被剔除。
如果只有2个节点,投票算法就失效了。 因为每个节点上都只有1票。 这时就需要引入第三个设备:Quorum Device.
Quorum Device 通常采用的是共享磁盘,这个磁盘也叫作Quorum disk。 这个Quorum Disk 也代表一票。 当2个结点的心
跳出现问题时, 2个节点同时去争取Quorum Disk 这一票, 最早到达的请求被最先满足。 故最先获得Quorum Disk的节
点就获得2票。另一个节点就会被剔除。

-------------------------------------

根据以上文章, 是否可以有这样的结论, 如果RAC节点数为奇数, 因每个节点都有一票,一旦出现异常,集群“总是”
将这些节点分为两个阵营,不需要仲裁盘进行判断, 拥有多票的一边会踢掉票少的一边 。  如果RAC节点数为偶数个,
假设4个, 如果是1个节点与其他3个在internal 心跳通信发生问题, 那么还是不需要引入仲裁盘, 只有当相等数目的
节点(2:2) 被集群分为两个partition, 这时才需要仲裁盘 。  

仲裁盘也是代表一票,那么votingdisk的多镜象需要是1,3,5 等奇数,难道代表的是1,3,5票 ? 多镜象应该仅仅是
备份吧(2份备份),按道理也应该只是代表一票。

假设8个节点的RAC,   3个votingdisk 镜象。 以下各种情况Oracle是如何处理的 ?
1. 如果这时由于故障, 2,4,5 节点的心跳端口(交换机上)不能正常通信
2. 由于故障, 2,4,5,8 节点的心跳端口(交换机上)不能正常通信
3. 由于心跳线交换机出现问题,所有节点都不能通信


假设11个节点的RAC,   3个votingdisk 镜象。 以下各种情况Oracle是如何处理的 ?
1. 如果这时由于故障, 2,4,5 节点的心跳端口(交换机上)不能正常通信
2. 由于故障, 2,4,5,7, 8,10  六个节点的心跳端口(交换机上)不能正常通信
3. 由于心跳线交换机出现问题,所有节点都不能通信

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-688214/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13468972