我对 Linux 网络配置还很陌生
我通过 ssh + drbd + nginx 为 3 个节点配置了 linux pacemaker + corosync + stonith。
电脑状态:
3 nodes configured
7 resources configured
Online: [ main-node second-node third-node ]
Full list of resources:
ClusterIP (ocf::heartbeat:IPaddr2): Started main-node
WebSite (ocf::heartbeat:nginx): Started main-node
Master/Slave Set: WebDataClone [WebData]
Masters: [ main-node ]
Slaves: [ second-node third-node ]
WebFS (ocf::heartbeat:Filesystem): Started main-node
ssh-fencing (stonith:ssh): Started third-node
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
我正在通过拔掉网络电缆来测试这些机器中的 stonith。它工作正常,当再次插入时,stonith 会关闭拔掉的机器。所有其他机器都在处理集群。
当我拔掉首选提供 WebSite 资源的机器时,问题就出现了。然后其他插入的机器的 pcs 状态如下所示:
3 nodes configured
7 resources configured
Node main-node: UNCLEAN (offline)
Online: [ second-node third-node ]
Full list of resources:
ClusterIP (ocf::heartbeat:IPaddr2): Started main-node (UNCLEAN)
WebSite (ocf::heartbeat:nginx): Started main-node (UNCLEAN)
Master/Slave Set: WebDataClone [WebData]
WebData (ocf::linbit:drbd): Master main-node (UNCLEAN)
Slaves: [ second-node third-node ]
WebFS (ocf::heartbeat:Filesystem): Started main-node (UNCLEAN)
ssh-fencing (stonith:ssh): Started third-node
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
网站瘫痪了。这是为什么?其他节点不应该提供资源吗?
答案1
SSH STONITH 并不是真正的防护,不应该在生产中使用,除非您接受它可能会让您陷入某些类型的故障,就像您在测试中看到的那样。
当您拔下节点的网线时,集群将尝试对从集群/网络中消失的节点进行 STONITH。SSH STONITH 代理使用您拔下的同一网络尝试关闭丢失的节点。在网络恢复(重新插入)之前,它将无法执行此操作。由于集群在 STONITH 代理成功关闭丢失的节点之前不会采取任何操作(故障转移),因此您只能使用 UNCLEAN(挂起)服务。
如果您切断主节点的电源,您将遇到同样的问题,因为当系统没有电源时,您无法通过 SSH 进入系统。
简而言之,这是使用 SSH STONITH 时的预期行为,并且需要适当的隔离设备才能从您正在测试的场景中恢复。