我倾向于集群计算的一些基本概念,我有一些问题要问。
根据本文:
群集分成两个(或多个(的节点组,这些节点无法再互相通信(又称分区(,则使用Quorum来防止资源启动的节点超过所需的节点,这可能会危害数据腐败。当所有已知节点的一半以上在同一分区中或数学上的倾斜度时,群集具有Quorum,每当以下方程式为true时:
total_nodes < 2 * active_nodes
例如,如果一个5节点群集分为3个节点和2个节点的组对,则3节点分区将具有Quorum,并且可以继续提供资源。如果一个6节点群集分为两个三节点分区,则两种分区都不会有Quorum。在这种情况下,起搏器的默认行为是停止所有资源,以防止数据腐败。
两个节点簇是特殊情况。根据上述定义,只有在两个节点运行时,两个节点群集才会有Quorum。这将使两个节点群集的创建毫无意义
问题:
从上方,我感到困惑,为什么我们不能停止所有群集资源,例如" 6节点群集>"?两个节点群集中的特殊内容在于什么?
您是正确的,两个节点群集只能在交流时具有Quorum。因此,如果群集要拆分,使用默认行为,资源将停止。
解决方案是不使用默认行为。只需将Pacemaker设置为no-quorum-policy=ignore
即可。这将指示Pacemaker即使丢失了法定人数,也将继续运行资源。
...但是,等等,现在,如果群集通信破裂,但两个节点仍在运行中会发生什么。他们会不会认为他们的同龄人死了,而且都成为活跃的节点吗?现在,我有两个初选,并且可能存在分歧的数据或网络上的冲突,对吗?这个问题是通过stonith解决的。正确配置的stonith将确保在给定时间只有一个节点活跃,并且基本上可以防止分裂的发生。
一篇很棒的文章进一步解释了Stonith及其重要性是LMB在2010年写的:http://advogato.org/person/lmb/diary/105.html