与一般的集群产品一样,ORACLE RAC实现需要考虑以下几个问题:
1,并发管理,当集群中多个节点同时接受外部客户端访问,如何使每个客户端得到的数据一样,这就需要保证在集群中每个节点看到的数据都要一样的,这就是在节点中如何保持数据一致性的问题。ORACLE RAC主要是使用DLM(分布式锁管理器)来保证集群节点之间的数据一致性
2,健忘症,如我们需要修改集群配置时,只是在集中一台节点上修改,这一台节点会自动把配置信息分发到其他的节点。考虑一种这样的情形,在节点A上修改了集群配置,而这时候节点B处理关机状态。当节点B开始的时候,并不知道配置已经发生了改变,这种情形称为健忘症,在ORACLE RAC中,主要通过把SPFILE存放在共享存储上来解决配置丢失的问题。
3,脑裂症,在一个共享存储的集群中,当集群中hearbeat丢失时,如果各节点还是同时对共享存储去进行操作,那么在这种情况下所引发的情况是灾难的。ORACLE RAC采用投票算法来解决这个问题,思想是这样的:每个节点都有一票,考虑有A,B,C三个节点的集群情形,当A节点由于各种原因不能与B,C节点通信时,那么这集群分成了两个DOMAIN,A节点成为一个DOMAIN,拥有一票;B,C节点成为一个DOMAIN拥有两票,那么这种情况B,C节点拥有对集群的控制权,从而把A节点踢出集群,对要是通IO FENCING来实现。如果是两节点集群
,则引入了仲裁磁盘,当两个节点不能通信时,请求最先到达仲裁磁盘的节点拥用对集群的控制权。
阅读(5871) | 评论(0) | 转发(1) |