corosync/pacemaker/fencing - 有 2 个节点的被动/主动集群

drk*_*kzs 4 pacemaker corosync fencing

我正在使用起搏器/corosync 配置集群 2 节点,我对此有一些疑问(也许是最佳实践:我远非专家)

**OS:** redhat 7.6

I configurated the cluster with those properties

 - **stonith-enabled:** true

 - **symmetric-cluster:** true (even if is default value i think)


and added in corosync.conf

 - **wait_for_all:** 0 (i want a Node be able to start/work even if his twin is KO)

 - **two_nodes:** 1


Considering the fencing:

- Using ILO of blade HP (ILO1 for Node1, ILO2 for Node2)

I read that it was sometimes a good practice to prevent a node suicide, so added constraints 

- ILO1-fence can't locate in node1 

- ILO2-fence can't locate on node2
Run Code Online (Sandbox Code Playgroud)

我遇到的问题如下,在 Node1 关闭时启动 Node2 时发生:

  • 起搏器/corosync 无法在节点 1 上启动 ILO2-fence(当然是因为节点 1 已关闭),因此不要启动其他资源,因此我的集群无法正常工作 >:[

我想知道我是否遗漏了配置中的某些内容,或者我不太了解这样的集群应该如何工作。

因为我希望 Node2 启动,集群看到 Node1 是 KO 并且只是启动资源以使 Node2 自己工作。

但确实如此,因为 ILO2-fence 只能位于 Node1 上(因为约束避免自杀),那么这个资源将总是失败......(在没有那些“反自杀”约束的情况下尝试时,如果 Node2 有一些服务失败,然后它在启动后直接关闭,这是我不想要的)

我会欣赏一些回报和启示:)

谢谢 :)

bat*_*a09 7

假设您的集群中有 4 票 - 2 个节点和 2 个 ILO 围栏。如果 >2 (3) 是可访问的,则集群可以运行。ILO2 仅配置有 node1,因此如果 node1 关闭 - 仲裁将丢失。不建议使用 ILO 围栏:

“人们在选择 STONITH 设备时常犯的一个错误是使用远程电源开关(例如许多板载 IPMI 控制器)与其控制的节点共享电源。如果在这种情况下电源出现故障,集群将无法确定节点是真的离线,还是处于活动状态并遭受网络故障,因此集群将停止所有资源以避免可能的裂脑情况。” 关联

2 节点集群有 2 个选项:

  1. 使用一台外部防护设备(见证节点、投票 VSA 或 SMB2/3 文件共享)。

  2. 使用为 2 节点集群开发的解决方案(如 Microsoft Hyper-V Storage Spaces Direct (S2D) aka Azure Stack HCI、VMware Virtual SAN (vSAN) esp. ROBO Edition 或StarWind Virtual SAN (VSAN))开箱即用。

  • 3) 作为具有备份或异步复制的独立服务器,解决方案受到的保护较少。如果出现 1 个节点故障,整个集群将宕机。这里有一些针对 2 节点起搏器集群的解释 - https://www.thegeekdiary.com/most-common-two-node-pacemaker-cluster-issues-and-their-workarounds/ (4认同)
  • 只是为了澄清:您是否使用共享存储(iSCSI/NFS/etc)? (3认同)
  • 是的,但至少解决方案 3) 仍然提供 HA,因为节点 1 上出现故障的资源将移动到节点 2 上。Node1 将保持故障状态,但仍提供服务。我错了吗 ? (2认同)
  • 是的,有一个共享磁盘托架 (2认同)