集群仲裁盘voting disk的原理

我们在配置各种cluster系统时总会要求配置仲裁盘(oracle叫voting disk,IBM GPFS里边叫tiebreaker)。那么为什么cluster必须配置仲裁盘,它有什么作用呢?

集群(cluster)也就是由多个节点组成的一个协同工作的系统。就像人一样,一个人的力量是有限的,把许多人召集在一起才能做大事业,因此人类社会才有了政府、公司等组织形式的出现。目前常见的计算机集群软件有Oracle RAC,IBM HACMP, IBM GPFS文件系统,VMware vSphere里边的VMFS等等。不管是哪种cluster,其工作原理都大致相同。任何组织和单位都要有个领导,进行统一协调。同理,在计算机集群软件中也有个领导者,我们称之为cluster manager(CM).

集群中的领导者CM一般是通过投票的方式由集群中的所有符合资格的成员(quorum node)采用少数服从多数的原则共同推举产生。被选举出的CM通过网络通信协调各个节点的工作。这就有个问题,当网络出现故障的情况下,部分节点将失去与集群的联系无法得到CM指令,从而产生两个或多个孤立系统,俗称split brain(脑裂)。一个健康的集群是不允许产生脑裂情况的,因为多个无法协调行为的系统一起使用共享数据会造成数据的不一致。

下面举个简单的例子说明:

比如,原来一个集群由2个节点组成,分别是A、B,其中A是CM.B节点受A控制与A协同工作。某一天B突然无法获得A的指令了,那么在B看来有两种可能的情况发生了:

1)A节点坏掉了,网络正常

2)A还活着,是网络故障造成AB不能通信的

如果是1)的情况,那么B应该主动退出集群的操作,因为没有A的指令B是不能随便操作的,以避免整个集群数据的不一致。我们经常碰到Oracle RAC网络心跳线断了,其中一个Oracle节点就自动down,就是这个原因。

如果是2)的情况,那么B应该接管集群的控制权成为CM,以维持集群的继续工作。

两种不同的情况下,B应该采取的措施是截然不同的。但问题是B如何才能判断到底是1)还是2)的情况发生了呢?没有第三方的帮助,B是无法做出正确判断的。这时仲裁盘就起作用了。

所谓的仲裁盘,就是各个节点都可以访问的一个或多个共享存储盘。共享盘一般走的是SAN网络,所以当IP网络故障时,共享盘是不受影响的。一旦IP网络不通后,各个节点则通过仲裁盘进行通信来做出正确的判断。

还是拿上面的情况举例子。当B与A失联后,B会在仲裁盘的特定区域写上一条信息“我是B,请问A的情况如何?”。此时有可能出现两种情况:

1)如果只是网络故障,A还活着,则A会看到B的询问并回答:“我是A,我还好,你可以退出了”。B选择退出

2)如果A死掉了,则B始终不会收到A的回复。在等待一段时间后,B认为A不在工作,自己将成为A的继任者,主动成为CM来指挥集群的工作。

以上只是举的最简单的情况,实际上的算法会更复杂一些,但基本原理是一样的。了解了这些,在配置仲裁盘时就知其所以然了。

时间: 2024-10-10 02:54:51

集群仲裁盘voting disk的原理的相关文章

VMware Workstation 集群仲裁磁盘和数据共享磁盘的创建

最近项目需要对SQL Server建立集群服务,多个SQL Server数据库建立集群服务,对外提供唯一的URL访问地址.当主节点断电.断网后,通过心跳线将消息传递到备用节点,备用节点在3秒内接管数据库访问任务,实现双机热备. 由于台式机过2天才能到位,所以就先在虚拟机上装了2套windows Server 2008 R2系统,模拟集群创建过程.关于SQL Server建立集群的文章,网上是众说纷纭,对于一个新手来说,可谓是不知所措.但集群中仲裁磁盘和共享磁盘的创建是每个集群所必须的,在此我把虚

VMware 虚拟环境下微软的故障转移集群测试

VMware 虚拟环境下微软的故障转移集群测试 主机配置 两台win2008 R2企业版服务器 test01 public10.10.1.146  private 172.16.0.1 test02 public10.10.1.147  private 172.16.0.2 存储 在EMC存储中划分两个LUN,一个用于集群仲裁盘,一个用于存储数据. 在EMC存储中创建两个LUN 把新建的LUN加入的存储组中: 安装上述步骤再建一个LUN. 2.把两个LUN分别挂载到两台服务器中 Test01 挂

故障转移集群的仲裁

Windows服务器故障转移集群(Windows Server Failover Cluster,简称WSFC)使用仲裁投票(Quorum Voting)决定集群的健康状况,或使故障自动转移,或使集群离线.当集群中的结点发生故障时,会由其他结点接手继续提供服务,不过,当结点之间通信出现问题,或大多数结点发生故障时,集群就会停止服务,可是集群可以容忍多少个结点发生故障呢?这要由仲裁配置(Quorum Configuration)决定,仲裁配置使用多数(Majority)原则,只要集群中健康运行的结

定时组件quartz系列<二>quartz的集群原理

1.基本信息: Quartz是一个开源的作业调度框架,它完全由java写成,并设计用于J2Se和J2EE应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它 来为执行一个作业而创建简单的或复杂的调度.它有很多特征,如:数据库支持,集群,插件,EJB作业预构建,JavaMail及其它,支持cron- like表达式等等.其中集群配置一般比较复杂,那么在Quartz中如何配置它的集群特性呢? 2 Quartz的集群配置:      2.1 实现集群的基本原理           Quartz是通过

部署AlwaysOn第一步:搭建Windows服务器故障转移集群

在Windows Server 2012 R2 DataCenter 环境中搭建集群之前,首先要对Windows服务器故障转移集群(Windows Server Failover Cluster,简称WSFC)有基本的了解.WSFC必须部署在域管理环境中,由多台服务器组成,每台服务器称作一个"结点"(Node),每个结点上都运行了Windows服务器故障转移集群服务,整个集群系统允许部分结点掉线.故障或损坏而不影响整个系统的正常运作.集群自动检测结点的健康状态,一旦活跃结点发生异常,变

Windows?Server2016下安装SQL?Server2012集群

准备工作:真实环境中的三台服务器:一台作为域控服务器,另外两台作为的数据库节点. 第一步:ip安排ip:节点1: 172.19.5.123 心跳 192.168.1.1节点2:172.19.5.122 心跳 192.168.1.2域控DC: 172.19.5.124故障转移集群: 172.19.5.101分布式事务ip: 172.19.5.102数据库集群ip: 172.19.5.103注意把两个节点的dns写成域控的ip 第二步:磁盘准备工作 需要4个磁盘卷: 仲裁盘(1G).集群共享盘(20

分布式架构高可用架构篇_02_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于ZooKeeper + LevelDB的 Master-Slave实现方式,其他两种方式目录共享和数据库共享依然存在. 三种集群方式的对比: (1)基于共享文件系统(KahaDB,默认): <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persi

Openstack之Ceph集群操作

Oepnstack之CEPH系列是根据Ceph Cookbook整理的笔记,分为以下几个部分: 1. <Ceph简介> 2. <Ceph集群操作> 3. <Ceph块设备管理与Openstack配置> 4. <深入Ceph> 5. <ceph优化与性能测试> **注意:此文对应ceph版本为10.1.2** ~~~bash #ceph -v ceph version 10.1.2(4a2a6f72640d6b74a3bbd92798bb913ed

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html 第二篇http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Wind