通过 2 个 NIC 将 N 个虚拟机连接到互联网。桥接?绑定?两者皆用?

通过 2 个 NIC 将 N 个虚拟机连接到互联网。桥接?绑定?两者皆用?

我已经做过很多次并且非常有效的是以下场景:

1 个 NIC 连接到网桥,然后 N 个 VM 通过该网桥连接到网络(在 Ubuntu 10.4 上)。

我最新的服务器现在有 2 个 NIC,我想我也可以这样做,此外只需将第二个 NIC 添加到同一个物理 LAN 和网桥(使用 bridge_ports eth0 eth1);希望获得冗余和更高的吞吐量。这似乎不太管用。无论网络负载如何,网络流量都极不稳定。甚至我的 ssh 会话也一直在断开连接并重新连接。

现在我的问题是:

  • 我的方法应该基本有效还是我做错了什么?例如从根本上误解了网桥用 2 个 NIC 可以做什么?
  • 我读到还有一种 NIC 绑定,可以将两个 NIC 组合在一起。这种方法成功的可能性更大吗?如果成功,我是否仍会将网桥添加到绑定中,并将虚拟机添加到网桥中?

供参考我的 /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface   
auto lo
iface lo inet loopback

# The primary network interface
auto br0
iface br0 inet dhcp
      bridge_ports eth0 eth1

注意:这个问题与这个服务器故障。由于没有得到答案,而且我正在使用 Ubuntu,所以我希望在这里能有更多的运气。

谢谢,卡斯滕

答案1

桥接两个物理接口导致了这个问题。如果你想提高速度,你应该使用绑定。这种配置的缺点是你必须在两端进行绑定。

另一种可能性是使用 ECMP 和 ip-tables 在这两个接口上进行负载平衡。ip-tables 提供连接计数器(至少我认为它们有),因此可以使用它们来选择奇数和偶数连接并通过一个或另一个连接发送它们。如果中间有 NAT,请小心,因为这可能会导致建立相关连接时出现问题。此外,具有多个连接的服务可能会失败。

我无法提供如何执行此操作的正确语法,因为我只能在某些专有系统上执行此操作。

相关内容