Pacemaker:如何配置虚拟IP的默认网关?

Pacemaker:如何配置虚拟IP的默认网关?

我在同一个子网中有三个节点和三个虚拟 IP 地址。哪个地址分配给哪个节点并不重要。IP 是公共地址。节点是将 Web 请求分发到多个后端系统的负载平衡器。

如果所有三个节点都在线,则三个地址将在三个节点上平衡,以便每个节点都有一个地址。

如果只有两个节点在线,则一个节点有一个地址,另一个节点有两个地址。

如果只有一个节点在线,则它具有全部三个地址。

这与以下资源配置配合得很好:

原始 IP_10 ocf:heartbeat:IPaddr2 参数 ip="xxx10" cidr_netmask="24" nic="eth1"
原始 IP_11 ocf:heartbeat:IPaddr2 参数 ip="xxx11" cidr_netmask="24" nic="eth1"
原始 IP_12 ocf:heartbeat:IPaddr2 参数 ip="xxx12" cidr_netmask="24" nic="eth1"

现在的情况是,我有一个默认网关 (xxx1),在分配一个 IP 地址后,需要在每个节点上设置该网关。显然,在分配地址之前设置默认网关是不可能的。

我尝试做的第一件事是为每个地址设置第二个资源,ocf:heartbeat:Route:

原始 default_gw_1 ocf:heartbeat:Route 参数目标="默认" 设备="eth1" 网关="xxx1"
原始 default_gw_2 ocf:heartbeat:Route 参数目标="默认" 设备="eth1" 网关="xxx1"
原始 default_gw_3 ocf:heartbeat:Route 参数目标="默认" 设备="eth1" 网关="xxx1"

然后将这些资源组合成组:

组 net_10 IP_10 default_gw_1
组 net_11 IP_11 default_gw_2
组 net_12 IP_12 default_gw_3

到目前为止一切正常,分配地址后默认网关设置正确。在故障转移情况下,一切仍按预期工作。此示例显示了 Node1 脱机后可能的资源分配:

节点1:离线
节点2:net_10,net_11
节点3:net_12

当 Node1 重新上线时,问题就出现了。Node2 上的资源之一(例如 net_10)将迁移到 Node1。现在 ocf:heartbeat:Route 资源管理器在 Node2 上停止,删除默认网关,并有效停止对 Node2 的访问,因为它不再有默认网关。因此,Node2 上的剩余地址(net_11)不再可访问。

然后我尝试修补 ocf:heartbeat:Route 资源管理器以禁用删除路由。这似乎有效,但感觉很丑陋。

我认为一定有更好的解决方案。如何配置才能使默认网关在节点上保持设置,只要该节点至少分配有一个 IP 地址?

(Debian Wheezy 上的 Pacemaker 1.1.7)

答案1

可能已经晚了,但万一其他人能从中受益。

在这种情况下,您应该只创建一个 GW,然后在所有节点上克隆它。下面的示例使用pcs语法演示了此场景。

pcs cluster setup --name MyCluster node1 node2 node3 --start

pcs cluster cib cluster_cfg

pcs -f cluster_cfg property set stonith-enabled="false"

pcs -f cluster_cfg resource create IP_10 ocf:heartbeat:IPaddr2 ip="x.x.x.10" cidr_netmask="24" nic="eth1"
pcs -f cluster_cfg resource create IP_20 ocf:heartbeat:IPaddr2 ip="x.x.x.11" cidr_netmask="24" nic="eth1"
pcs -f cluster_cfg resource create IP_30 ocf:heartbeat:IPaddr2 ip="x.x.x.12" cidr_netmask="24" nic="eth1"

pcs -f cluster_cfg resource create default_gw ocf:heartbeat:Route destination="default" device="eth1" gateway="x.x.x.1"
pcs -f cluster_cfg resource clone default_gw 

pcs -f cluster_cfg constraint order IP_10 then default_gw-clone
pcs -f cluster_cfg constraint order IP_20 then default_gw-clone
pcs -f cluster_cfg constraint order IP_30 then default_gw-clone

pcs -f cluster_cfg constraint colocation add IP_10 with IP_20 -1
pcs -f cluster_cfg constraint colocation add IP_10 with IP_30 -1
pcs -f cluster_cfg constraint colocation add IP_20 with IP_30 -1

pcs cluster cib-push cluster_cfg

相关内容