我在设置虚拟/浮动 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 资源之后启动。