本章的结构安排是以介绍Sun Cluster中重要的概念为主线。相关的工作原理分布在各个概念的介绍之中。
quorum的概念在分布式系统中经常被用到。原本的概念上,quorum是在具备竞争关系的关键时刻时一个多数成员达成的一致意见,从而得出最好的解决方案。这里能够理解为多数人达成一致的意见的一种机制,或达成一致意见的这些多数成员。组成可被接收的quorum的实际数量在不同的情况下也不同。或许需要2/3,或许只要超过50%即可。
在分布式电脑系统中,一组有通讯关系的进程由quorum的潜在成员组成。为确保系统有效运行连同对系统行为作出关键决策,该组进程通过交互信息以在一些关键问题上达成一致,直到quorum的最终形成。
在Sun Cluster中,有两种类型的quorum被使用:
群集成员关系监控器CMM(Cluster Membership Monitor)需要获取关于一组群集节点列表的quorum,这些节点具备成为Cluster成员的能力。编者注:这个意思就是CMM需要在具备Cluster节点关系的一组节点中得到一个多数人的同意。所以quorum:“多数人的同意”中的这个“人”的主体并不具体代表是什么东西,仅仅是表明这些东西形成多数同意的关系,那这里肯定是指节点了。这种类型的quorum被称为CMM quorum,或Cluster quorum。
Cluster配置数据库CCD(Cluster Configuration Database)需要获得quorum,以挑选出一个有效一致的CCD拷贝。这里的主体就是CCD了。
4.1 CMM quorum
Cluster2.2中,假如使用SSVM或CVM,quorum由Cluster的框架软件决定,假如使用disksuite作为卷管理器,则quorum由disksuite来决定。
CMM quorum这样被决定:
假如使用SSVM和CVM作为卷管理器,quorum是在多个具备投票权利的节点和其他的中性设备上达成的多数通过意见。在两节点中,为了产生quorum,一个quorum device提供一个投票的第三方。注意:quorum device和quorum是两个概念。quorum device的概念在后面讲到。
用disksuite作为卷管理器,就不讨论了。
当节点加入、离开Cluster时和Cluster之间的私网连接失败的情况下形成quorum是很必要的。Cluster2.x努力达到在不要人为干预的情况下,既确保了数据的完整性,也维系Cluster的可用性,所以就使用到了quorum device。在多节点中,甚至用到了TC。Cluster 2.2在Cluster心跳连接失败的情况下决定quorum时,卷管理器起到了主要的因素作用。心跳失败的具体情况请参见后面quorum device章节内容。
4.2 CCD quorum
群集配置数据库CCD(Cluster Configuration Database)需要获得quorum,以挑选出一个有效一致的CCD拷贝。有关CCD的内容参考后面的相关章节。
CCD中保存了Cluster的配置信息。CCD在每个Cluster节点上都有一个,正常情况下,各节点的CCD间应该是保持同步的。CCD间的通信通过私网连接。但由于故障后,可能会导致各CCD不能报错同步,这时就需要用到CCD quorum了。
一个有效的CCD在故障恢复后必须被决定出来,假如一个有效的CCD不能够被决定出来,任何对于CCD的查询和更新操作随着一个CCD错误的告警而失败。
在决定有效CCD拷贝之前需要启动任何节点是个很受限制的条件。能够通过对更新操作作一个强制限制来使该限制放松。
假如n是当前Cluster中配置的节点数,对于Cluster重启时,有ceiling(n)个同样的拷贝就足以选出一个有效的CCD拷贝。当n为奇数时,ceiling(n)=(n+1)/2;当n为偶数时,ceiling(n)=(n/2)。对于一个节点,拷贝数为1个时足够;对于2个节点时,1个拷贝足够;对于3个节点时,2个拷贝足够;对于4个节点,2个拷贝足够。所以该ceiling(n)能够理解为大于等于n的一半的最大整数。有效的CCD将被知会到任何没有最新CCD的节点中去。注意:即使CCD是无效的,一个节点依旧被允许加入到Cluster中。但是,在这种情况下,CCD既不能被更新也不能被查询(检验:一个节点启动时,是否有查询CCD的打印消息)。这就意味着任何依赖CCD的Cluster的组件处于功能失常状态。特别的,在这种情况下,逻辑主机不能被掌控,Data Service不能被激活。仅仅当有足够数量的节点加入到Cluster中能够得到一个quorum时,CCD才处于有效状态。
当至少有一个或更多的节点在CCD重配置过程中处于“清醒”状态时,CCD的quorum问题能够被避免。既然这样,这些节点中任意一个节点的有效拷贝将被知会到最近加入Cluster的节点,另一个可供选择的是确保Cluster在具备最新CCD拷贝的节点上启动。然而,恰好在CCD更新过程中,系统崩溃了,在这之后,很有可能的是系统的恢复算法找到一个不一致的CCD拷贝。在这种情况下,系统管理员的就需要用ccdadm带一些参数去重新恢复CCD。CCD也提供检查点操作的工具去备份现在CCD当前的内容。在系统配置有了任何变化以后,对CCD作一个备份是个很好的习惯,这个拷贝可能在以后的恢复中有用。CCD的规模和常见的关系型数据库比较起来很小,备份和恢复只需要几秒钟。
在双机的情况下,推荐先启动具备最新CCD的节点,然后再启动另外一个节点,最新的CCD会被拷贝到另外一个节点上,这样能够大大减少CCD quorum的机会,连同由此引起的故障。
4.3 quorum device
在特定情况下,例如两节点的Cluster中,当节点间的私网连接失败,且节点们仍然是Cluster中的成员。Sun Cluster需要在一个物理设备的帮助下来解决CMM quorum的问题,这个物理设备就是quorum device。
quorum device仅仅是个在安装过程中指定的磁盘或控制器。quorum device是个逻辑概念,一个硬件被指定为quorum device和否对于其使用上并没有任何影响。Sun 的官方资料中,SSVM不允许一个磁盘的分区(如c1t1d1s5)作为一个单独的DG-disk group(但实际上能够实现),所以一个完整的磁盘和他的丛(映像)被需要用作quorum device。
quorum device确保在任何一个时间点,仅仅只能有一个节点能够更新共享磁盘。假如双机间的心跳信号丢失,就无法确保由那个节点访问共享磁盘了,这时就需要用到quorum device。每个节点只有在能够确定他是多数意见quorum中的一员时,才会去试图更新共享磁盘数据。节点们进行一个投票,或quorum,去决定哪些节点留在Cluster中。每一个节点都要确定他能和多少节点进行通信(当然是通过私网连接)。假如他能够和Cluster中超过一半的节点通信,他就成为quorum的一员,并且被同意继续保留Cluster成员的身份。假如不能称为quorum中的一员,则自动退出。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




