什麼是“腦裂”以及如何避免它
正如我們所討論的,在一個高可用性集群環境中有一個活動節點和一個或多個備用節點,當活動節點發生故障或停止響應時,它們將接管服務。
在考慮節點之間的網絡層之前,這聽起來像是一個合理的假設。 如果節點之間的網絡路徑出現故障怎麼辦?
任何一個節點現在都不能與另一個節點通信,在這種情況下,備用服務器可能會在它認為活動節點發生故障的基礎上將自己提升為活動服務器。 這導致兩個節點都變得“活躍”,因為每個節點都會認為另一個節點已經死了。 結果,數據完整性和一致性受到損害,因為兩個節點上的數據都會發生變化。 這被稱為“裂腦” .
為避免出現腦裂情況,應在集群中安裝 Quorum 節點(也稱為“見證”)。 添加仲裁節點(到由偶數個節點組成的集群)會創建奇數個節點(3、5、7 等),節點投票決定哪個應該充當集群中的活動節點。
在下面的示例中,包含節點 B 的服務器機架丟失了局域網連接性。 在這種情況下,通過在集群環境中添加第 3 個節點,系統仍然可以確定哪個節點應該是活動節點。
Quorum/Witness 功能包含在西歐保護套件。 安裝時,在所有節點(不僅是仲裁節點)上選擇 Quorum / Witness,並在所有節點(包括仲裁節點)之間定義通信路徑。
仲裁節點不託管任何活動服務。 它的唯一作用是參與節點通信,以確定哪些是活動的,並在通信中斷的情況下提供“平局投票”。
西歐也支持IO 防護和存儲作為仲裁設備,在這些配置中不需要額外的仲裁節點。