PaceMaker 虚拟 IP 的 IP 源地址问题

PaceMaker 虚拟 IP 的 IP 源地址问题

我在设置虚拟/浮动 IP 时遇到问题。在这种特定情况下,我使用 Pacemaker+Corosync 来管理 2 个虚拟 IP。一个是内部的,另一个是 SIP 中继的外部。 VOIP Asterisk/FreePBX。

问题似乎是这样的我们的 SIP 干线看到的数据包来自直接注册到 NIC 上的 IP,而不是来自绑定到 NIC 的 Virtual_IP

这可能吗?关于如何解决/解决这个问题有什么想法吗?

用于创建虚拟 IP 的集群虚拟 IP 命令:

pcs resource create www_virtual_ip ocf:heartbeat:IPaddr2 ip=10.1.8.32 cidr_netmask=32 nic=eth0 op monitor interval=30s
pcs resource create sip_virtual_ip ocf:heartbeat:IPaddr2 ip=10.251.0.52 cidr_netmask=32 nic=eth1 op monito

我在 CentOS 7 上使用 Asterisk 11 + FreePBX 2.12。我读到这可能是一个 nic 上 2 个 IP 的 asterisk 11 问题,但与尝试配置 Asterisk 相比,我想让它在 PaceMaker 级别工作。

答案1

我在 Pacemaker HA 设置中的 IAX2 中继上遇到了类似的问题。解决方案不是禁用 NIC 的主 IP 地址,而是从虚拟 IP 地址获取所有流量。甚至还有一个起搏器资源代理专门用于此目的。这ocf:heartbeat:IPsrcaddr

例如,我有一个虚拟(辅助)IP 192.168.5.4。该 IP 在节点 A 和 B 之间浮动。节点 A 和 B 的 IP 地址分别为 192.168.5.2 和 192.168.5.3。该网络的网关位于 192.168.5.1。

我希望所有流量都显示为来自当前由 nodeA 托管的虚拟 IP 地址 192.168.5.4。为此,我们只需添加具有特定源地址集的默认路由即可。

ip route add default via 192.168.5.1 src 192.168.5.4

然后您可能想要删除旧的默认路由。您可以尝试进行初步测试,看看是否可以解决您的问题。

如果这对您有用,那么只需ocf:heartbeat:IPsrcaddr在您的pacemaker cib 中配置资源代理,即可在虚拟192.168.5.4 地址发生故障转移时自动设置此默认源路由。在我的 CIB 中,我是这样的:

primitive asterisk_srcaddr IPsrcaddr \
        params ipaddress=192.168.5.4 cidr_netmask=24

只需确保此 asterisk_srcaddr 资源在 192.168.5.4 IPaddr2 资源之后启动。

相关内容