我在 Corosync + Pacemaker 中有下一个场景
节点1:
eth0:10.143.0.21/24
eth1:10.10.10.1/30(Corosync 通信)
eth2:192.168.5.2/24
节点2:
eth0:10.143.0.22/24
eth1:10.10.10.2/30(Corosync 通信)
eth2:192.168.5.3/24
浮动 IP
eth0:10.143.0.23/24
eth2:192.168.5.1/24
接口 eth1 仅用于 corosync 通信。
例如,我断开了接口 eth0 上的网线,但什么也没发生;再比如,我断开了接口 eth2 上的网线,结果也一样,但我断开了接口 eth1 上的网线(corosync 通信),并将浮动 IP 传递到了另一个节点。
断开任何接口时如何将资源传递给另一个节点?
问候
更新
我使用以下设置进行了测试
crm configure primitive PING-WAN ocf:pacemaker:ping params host_list="10.143.0.1" multiplier="1000" dampen="1s" op monitor interval="1s"
crm configure primitive Failover-WAN ocf:heartbeat:IPaddr2 params ip=10.143.0.23 nic=eth0 op monitor interval=10s meta is-managed=true
crm configure primitive Failover-LAN ocf:heartbeat:IPaddr2 params ip=192.168.5.1 nic=eth2 op monitor interval=10s meta is-managed=true
crm configure group Cluster Failover-WAN Failover-LAN
crm configure location Best_Connectivity Cluster rule pingd: defined pingd
它对我有用,当断开 eth0 上的网线并丢失对目标 10.143.0.1(网关)的 ping 时,资源被移动到另一个节点,但我的情况是 3 个接口,所以我决定再添加一个 ping 测试
crm configure primitive PING-LAN ocf:pacemaker:ping params host_list="192.168.5.4" multiplier="1000" dampen="1s" op monitor interval="1s"
但现在需要失去与两台主机(10.143.0.1和192.168.5.4)的连接,以便将资源移动到另一个节点。
我正在寻找信息,但无法使以下场景发挥作用:
如果节点与任何添加到 ping 测试的主机失去连接,则其他资源将传递到另一个节点,而无需同时失去所有 ping 测试的连接。
答案1
您需要告诉 Pacemaker 您关心接口故障。查看资源ocf:pacemaker:ping
。您可以使用该资源代理对不同接口网络上的其他主机列表进行 ping,如果这些 ping 失败,Pacemaker 将做出反应。
如果您对ocf:pacemaker:ping
资源进行分组或使用约束将它们关联到您在 Pacemaker 中管理的其他内容,它们都会一起移动。
此外,我敢打赌,eth1
在之前的测试中,当您拔掉电源时,IP 并没有“移动”,而是同时在两个集群节点上启动;对于集群节点来说,它们都认为它们的对等节点已经丢失。您实际上是在测试集群分区后会发生什么。
在这一点上,您绝对应该按照另一个答案中的建议在 Corosync 配置中配置第二个冗余环,但这不会产生您想要的效果。
更新0:您应该将两个 IP 都添加到同一个ping
原语中host_list
,而不是添加额外的原语,然后将该原语ping
设置为可接受的任何内容。failure_score
来自ocf:pacemaker:ping
资源代理(# crm ra info ocf:pacemaker:ping
):
...
failure_score (integer):
Resource is failed if the score is less than failure_score.
Default never fails.
host_list* (string): Host list
A space separated list of ping nodes to count.
...
就像是:# crm configure primitive PING-O-DOOM ocf:pacemaker:ping params host_list="10.143.0.1 192.168.5.4" failure_score="2" op monitor interval="10s"
答案2
您需要在 corosync 环中配置两个接口。
例子:
pcs cluster auth node1 node2
pcs cluster setup --start --name zfs-cluster zfs-node1,zfs-node1-ext zfs-node2,zfs-node2-ext
在哪里:
# Management addresses of both nodes
172.16.40.15 zfs-node1.ewwhite.net zfs-node1
172.16.40.16 zfs-node2.ewwhite.net zfs-node2
# Cluster ring address for heartbeat
192.168.91.1 zfs-node1-ext
192.168.91.2 zfs-node2-ext