1并发控制在集群环境中,关键数据通常是共享存放的,比如放在共享磁盘上
而各个节点的对数据有相同的访问权限,这时就必须有某种机制能够控制节点对数据的访问
OracleRAC是利用DLM(DistributeLockManagement)机制来进行多个实例间的并发控制
2健忘症(Amnesia)集群环境配置文件不是集中存放的,而是每个节点都有一个本地副本,在集群正常运行时,用户可以在任何节点更改集群的配置,并且这种更改会自动同步到其他节点
有一种特殊情况:节点A正常关闭,在节点B上修改配置,关闭结点A,启动结点B
这种情况下,修改的配置文件是丢失的,就是所谓的健忘症
3脑裂(SplitBrain)在集群中,节点间通过某种机制(心跳)了解彼此的健康状态,以确保各节点协调工作
假设只有"心跳"出现问题,各个节点还在正常运行,这时,每个节点都认为其他的节点宕机了,自己是整个集群环境中的"唯一建在者",自己应该获得整个集群的"控制权"
在集群环境中,存储设备都是共享的,这就意味着数据灾难,这种情况就是"脑裂"解决这个问题的通常办法是使用投票算法(QuorumAlgorithm)
它的算法机理如下:集群中各个节点需要心跳机制来通报彼此的"健康状态",假设每收到一个节点的"通报"代表一票
对于三个节点的集群,正常运行时,每个节点都会有3票
当结点A心跳出现故障但节点A还在运行,这时整个集群就会分裂成2个小的partition
节点A是一个,剩下的2个是一个
这是必须剔除一个partition才能保障集群的健康运行
对于有3个节点的集群,A心跳出现问题后,B和C是一个partion,有2票,A只有1票
按照投票算法,B和C组成的集群获得控制权,A被剔除
如果只有2个节点,投票算法就失效了
因为每个节点上都只有1票
这时就需要引入第三个设备:QuorumDevice
QuorumD