我正在设置一个非常简单的 3 主机 Proxmox (Debian) HA 集群。所有虚拟机都应位于同一子网中,当一个虚拟机故障转移到虚拟机内的另一个主机时,无需重新配置,并且应保持与其余主机上所有虚拟机的连接。
我可以通过 OVS 桥上的 OpenVSwitch GRE 隧道轻松实现这一点,所有虚拟机都在这样的网状拓扑中使用该隧道:
ovs-vsctl add-br vmbr1
ip addr add 10.0.10.110/24 dev vmbr1
ovs-vsctl add-port vmbr1 gre0 -- set interface gre0 type=gre options:remote_ip=1.1.1.1
ovs-vsctl add-port vmbr1 gre1 -- set interface gre1 type=gre options:remote_ip=2.2.2.2
其中 1.1.1.1 和 2.2.2.2 是其他两台主机的外部 IP,而 10.0.10.110/24 是该主机在虚拟机子网中的 IP。显然,我必须在另外两台主机上使用相应的参数重复此操作。
现在的问题是,我得到了一个循环,因此网络完全无法正常工作vmbr1
。http://docs.openvswitch.org/en/latest/faq/issues/我可以通过添加来修复循环
ovs-vsctl set bridge vmbr1 stp_enable=true
混合使用。这有效,但出于某种原因,我现在总是有两台主机(似乎是随机的,具体是哪两台)不直接连接,而是使用第三台主机作为中介。
这导致这两个延迟增加一倍,并且中间主机 3 会产生不必要的流量。所以我想解决这个问题,但到目前为止还没有找到办法。我读到过使用 OpenFlow 可能会有所帮助,但不知道该怎么做。有没有办法在这里获得真正的网状网络?
答案1
我建议你尝试使用一些 SDN 控制器。也许你可以使用 ONOS 或 Open Day Light。或者如果你想要一些灵活的探索,你可以使用 Ryu 控制器,这里有一些带有 Web GUI 的 Ryu 控制器。https://github.com/dektiram/SDNColdBrew