linux - 关于软件桥连接问题的债券

标签 linux networking load-balancing

你拥有什么:

  1. bond (bond0) 接口(interface)(除 4 之外的所有模式),至少有 2 个 iface(例如 eth0/eth1)连接在同一个外部交换机上
  2. bond0 接口(interface)连接到软件桥 (br0)
  3. 虚拟机 (vm0)(例如 LibVirt::LXC),其接口(interface)位于 br0

你得到什么:

  1. vm0 无法通过 br0 上的 bond0 连接到(大多数)IP 地址
  2. 系统日志中的“bond0:收到以自己的地址作为源地址的数据包”

为什么你会得到这个:

当 vm0 想要联系外部 IP 地址时,它会发出 ARP 请求。具有 vm0 的源 mac 的 L2 广播将通过(取决于绑定(bind)模式)例如 eth0 离开,但通过外部交换机通过 eth1 重新进入,从而通过 bond0 重新进入。因此,交换机 br0 将学习连接到 bond0 的端口上 vm0 的 mac 地址。因此 vm0 永远不会收到 ARP 回复。

您可以采取什么措施来解决:

除了分享信息之外,我发布此内容的原因是我无法找到足够好的解决方案。我找到的有:

  1. 在 vm0 上设置静态 ARP 条目
  2. 使用 bond0 mode=4,但您的外部交换机必须支持此
  3. 将外部 siwtch 配置为在 eth0/eth1 上使用专用 VLAN,但仅适用于某些用例并会增加复杂性
  4. 将两个物理接口(interface)添加到启用生成树的网桥,而不是使用绑定(bind)驱动程序
  5. 在 Linux 上无法在正确的 br0 端口上静态配置 vm0 的 MAC(但可以在 OpenBSD 上运行)

我真的希望这里有一个更优雅的解决方案......有人吗?

谢谢

最佳答案

我也遇到了同样的问题,我也做出了同样的分析。 我发现的唯一非侵入/可扩展的解决方案是使用主动/备份绑定(bind)(模式 1)。代价是您失去了聚合。

IMO,最好的解决方案是使用 802.3ad,但我不能总是使用它,因为我的大多数交换机上的端口 channel 数都有限。

关于linux - 关于软件桥连接问题的债券,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11206910/

相关文章:

apache - 使用 Apache 负载均衡器和 node/io.socket 后端捕获断开连接

java - 使用 Zookeeper 和 Thrift 负载均衡服务

amazon-web-services - 为什么 Elastic Load Balancing 报告 'Out of Service' ?

linux - 如何让 git 与远程服务器一起工作?

java - 使用 Batik to SVG 将 SVG 转换为 PNG 时,Linux 和 OSX 之间的文本差异

postgresql - 如何从 docker-compose 连接到主机 PostgreSQL?

java - 如何通过网络传递对象的静态数据?

linux - ubuntu 14.04 Kylin install - 无法下载metalink

node.js - 正确安装后,Ionic 在服务器 CentOS 7.99 上无法正常运行

linux - docker 覆盖网络是否支持从主机到容器的通信?