![冗余架构上的第 2 层负载平衡](https://linux22.com/image/611994/%E5%86%97%E4%BD%99%E6%9E%B6%E6%9E%84%E4%B8%8A%E7%9A%84%E7%AC%AC%202%20%E5%B1%82%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1.png)
一些带有 2 个 NIC 的 PC 绑定在 2 个交换机上,以避免单点故障(交换机也相互连接)。在什么情况下,PC 可以主动使用两个链路来执行负载平衡,以便更有效地使用可能的带宽?链路聚合 (802.1ax) 仅在与单个设备互连时才有效,但我有一个 SPoF。那怎么办呢?是否有标准或方法可以做到这一点?如何在冗余网络架构上获得类似 LA 的东西?
答案1
您可以将模式 4(LACP 或 802.3ad)绑定配置到两个独立的交换机,最终会得到两个独立的“捆绑包”,您可以通过 Linux 中 /proc/net/bonding/bondX 中两个不同的“聚合器 ID”来查看。(抱歉,我不确定 Windows 是否支持)
如果第一台交换机(一个聚合器 ID)发生故障,则第二台交换机(另一个聚合器 ID)将接管。整个绑定将故障转移到第二台交换机。
您一次只能拥有一个活跃的聚合器 ID。这意味着如果您丢失一活动聚合器的端口,那么您将在剩余的单个端口上运行,尽管事实上有一个完好的聚合器并且有两个良好的端口处于空闲状态。
如果您希望在两个交换机之间实现负载平衡,那么您需要以某种方式共享 MAC 表的交换机。供应商中立的术语是“多机箱链路聚合”或 MLAG。思科将其称为“虚拟端口通道”或 VPC。
当使用 MLAG 时,只有一个聚合器 ID,并且绑定只会妥善处理端口或交换机丢失并相应地进行负载平衡。
正如他们所说,一张图片胜过千言万语......
Two Separate Switches:
+----------+ +----------+
| Switch A | | Switch B |
| Agg ID 1 | | Agg ID 2 |
+--+----+--+ +--+----+--+
| | | |
| | | |
+---+----+---------+----+---+
| eth0 | eth1 | eth2 | eth3 |
+---------------------------+
| bond0 |
+---------------------------+
Multi-Chassis Link Aggregation:
+-------------------------+
| Aggregator ID 1 |
+----------+---+----------+
| Switch A | | Switch B |
+--+----+--+ +--+----+--+
| | | |
| | | |
+---+----+---------+----+---+
| eth0 | eth1 | eth2 | eth3 |
+---------------------------+
| bond0 |
+---------------------------+