Heartbeat CRM 如何识别集群中要关闭的节点?

Heartbeat CRM 如何识别集群中要关闭的节点?

我正在尝试了解Heartbeat新环境中的设置。这是一个 2 节点集群,仍在使用 Heartbeat 版本 1(不使用 Pacemaker CRM 的版本),我有一个基本问题,我无法从 Google 上找到易于理解的答案。

问题是,如果集群中的节点之间发生通信故障,但两个节点仍然运行良好,集群管理器如何识别要关闭哪个节点?ping_group在 中看到一条指令/etc/ha.d/ha.cf。从我读到的内容来看,我看到集群管理器将检查与 中提到的任何节点的连接,ping_group并检查哪个集群节点处于活动状态的连接,并据此决定关闭哪个节点(?) 如果从两个节点到 ping 节点的连接都处于活动状态,而集群中两个节点之间的心跳网络仅处于关闭状态,该怎么办?我在这里遗漏了什么?

情况:只有心跳网络发生故障,但两个节点均处于 UP 状态且正常。

root@automan00:/root : cat /etc/ha.d/ha.cf
debugfile       /var/log/ha-debug
logfile         /var/log/ha-log
logfacility     local0
keepalive       500ms
deadtime        30
warntime        10
initdead        120
udpport         694
baud            19200
bcast           bond1 eth2
auto_failback   off
node            automan00
node            automan01
ping_group group1 1.1.1.1 2.2.2.2
respawn hacluster /usr/lib64/heartbeat/ipfail
realtime on

# stonith directive
stonith external/riloe /etc/ha.d/riloe.cfg

答案1

也许您可以在具有一些私有 IP 的节点之间设置交叉电缆作为 HB 上的另一个私有网络。

但是:当仅有 2 个节点之间的通信失败时,您不知道要关闭哪个节点,这就是为什么在投入生产之前需要第三个节点的原因。

如果第三个节点无法确定谁工作正常、谁工作不正常,你将会发现自己陷入了脑裂的情况。

https://en.wikipedia.org/wiki/Split-brain_(计算)

使用类似“最后一条人”按钮之类的“自杀工具”并不是一个好习惯,因为你永远不知道其他节点发生了什么。如果通信失败或其他主机出现故障,你会看到相同的行为,因此在任何这些情况下你都无法自杀。从其他节点的角度来看也是如此。

我知道这不是解决方案,但我希望它能帮助您理解 CRM 的工作方式。如果您构建集群,请尝试使用 2 个以上的节点,就这么简单。

相关内容