我正在尝试添加 Pacemaker 虚拟 IP 地址;同时添加网关和它在不同子网上服务的两个虚拟机。我之前只对同一子网上的所有 IP 执行过此操作,我需要一些帮助。
我在 200.xx.xxx.9 和 200.xx.xxx.10 上有两个虚拟机,其中/etc/network/interfaces
auto eth0
iface eth0 inet static
address 200.xx.xxx.9
gateway 200.xx.xxx.9
netmask 255.255.255.255
post-up route add yy.yyy.yyy.1 dev eth0
post-up route add default gw yy.yyy.yyy.1
和
auto eth0
iface eth0 inet static
address 200.xx.xxx.10
gateway 200.xx.xxx.10
netmask 255.255.255.255
post-up route add yy.yyy.yyy.1 dev eth0
post-up route add default gw yy.yyy.yyy.1
它们都显示在 Pacemaker 中,并且似乎通信正常。两个/etc/corosync/corosync.conf
文件中的 bindnetaddr 参数为:
bindnetaddr: address 200.xx.xxx.9
和
bindnetaddr: address 200.xx.xxx.10
分别。
如果所有内容都在同一个子网上,我希望使用以下命令添加虚拟 IP:
sudo crm configure primitive eth0_virtual ocf:heartbeat:IPaddr params ip="200.zzz.z.162" nic="eth0" cidr_netmask="24" broadcast="200.zzz.z.255" op monitor interval="10s" timeout="20s"
虽然这在 crm_mon 中显示为资源,但它不允许我通过虚拟 IP 访问其中一个虚拟机。显然还有更多问题,但是什么呢?
编辑:在 ClusterLabs 邮件列表中提出这可能是潜在的网络问题之后,我的情况如下:
我使用 online.net 托管 ESXi,他们提供可分配给我托管的虚拟机的额外“故障转移”IP。我有三个;200.xx.xxx.9 和 200.xx.xxx.10,我将它们用于列出的两个 Ubuntu 虚拟机,第三个 200.zzz.z.162,我尝试将其用作 ocf_heartbeat_IPaddr 资源代理。至关重要的是,online.net 要求您为每个 IP 分配一个与虚拟机上的接口匹配的 MAC 地址。我对前两个 IP 执行了此操作(使用不同的 MAC 地址),但没有对第三个执行此操作。当我尝试将其中一个现有 MAC 地址与第三个 IP 一起使用时,我立即获得了连接:
因此,现在我拥有了所有三个 IP,并且两个虚拟机接口共享同一个 MAC 地址。这让我觉得真是个坏主意但它实际上似乎在工作,没有产生任何数据包错误或连接或 HA 集群问题……至少到目前为止我还没有发现,除了记录的火星流量。这是我正在使用的 ocf:heartbeat:IPaddr 设置:
sudo crm configure primitive eth0_virtual ocf:heartbeat:IPaddr params ip="200.zzz.z.162" nic="eth0" cidr_netmask="32" broadcast="200.zzz.z.162" op monitor interval="10s" timeout="20s"