![Linux 绑定模式 4 (802.3ad) - 2 个交换机 - 4 个网卡](https://linux22.com/image/583996/Linux%20%E7%BB%91%E5%AE%9A%E6%A8%A1%E5%BC%8F%204%20(802.3ad)%20-%202%20%E4%B8%AA%E4%BA%A4%E6%8D%A2%E6%9C%BA%20-%204%20%E4%B8%AA%E7%BD%91%E5%8D%A1.png)
我知道您可以在 1 台服务器上使用绑定模式 4,该服务器有 2 个网卡,使用 2 个交换机。
绑定 0 由以下部分组成:网卡 1 端口 1 -> 交换机 A 网卡 2 端口 1 -> 交换机 B
在这种情况下,我可以丢失一个交换机、一个网卡或一根电缆,但我的网络仍然可以正常工作,如果一切正常,我将在高可用性之上实现链路聚合。
我的问题是,您是否可以做同样的事情,但使用 4 个 NIC 来获得更快的速度并且仍然安全。
绑定 0 由以下部分组成:网卡 1 端口 1 -> 交换机 A 网卡 1 端口 2 -> 交换机 B 网卡 2 端口 1 -> 交换机 A 网卡 2 端口 2 -> 交换机 B
交换机可能是CISCO的。
干杯
答案1
您实际上可以将 LACP 绑定配置到两个独立的交换机。
假设您有以下内容:
+------+ +-----+
| eth0 =-----= sw1 |
| eth1 =-----= |
| | +-----+
| | +-----+
| eth2 =-----= sw2 |
| eth3 =-----= |
+------+ +-----+
所有ethX
接口均处于 状态bond0
,并且每个交换机都有单独的活动 LACP 端口通道。
该绑定将正常工作,并将识别两个不同的聚合器 ID,但一次只能激活一个聚合器,因此任何时候都只能使用一个开关。
因此绑定启动并具有两个聚合器,一个到 sw1,一个到 sw2。第一个聚合器默认处于活动状态,因此所有流量都将在 eth0/eth1 和 sw1 之间。eth2/eth3 和 sw2 保持空闲待机状态。
假设 sw1 的端口 1 发生故障,那么 sw1 的聚合器只有一个端口处于活动状态。sw1 将继续作为活动聚合器。但是,您可以使用ad_select=bandwidth
(哪个聚合器具有最多带宽)或ad_select=count
(哪个聚合器具有最多从属设备)bonding 模块参数使其故障转移到 sw2。
假设 sw1 完全失败,那么该聚合器将会关闭,而 sw2 将接管。
答案2
我刚刚在 Ubuntu 服务器 14.04 LTS 上配置了完全相同的设置。
对于通过接口文件配置网络的任何 Linux 发行版,过程应该相同。(例如 Debian 及其大多数衍生产品,如 Ubuntu 和 Mint。)
在每个交换机上:
在 802.3ad 以太通道中配置两个端口。无需定义连接两个交换机的通道。应在每个交换机上分别定义通道。
在服务器上:
首先通过包管理器安装包“ifenslave-2.6”。
然后编辑 /etc/modules 并在其中添加一行带有单词“bonding”的额外行。
例如:
# /etc/modules: kernel modules to load at boot time
loop
lp
rtc
bonding
运行一次“modprobeboning”来立即加载bonding模块。
然后编辑/etc/network/interfaces,将真实NIC定义为手动接口,作为新接口“bond0”的从属。
例如:
# The loopback interface
auto lo
iface lo inet loopback
# The individual interfaces
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
auto eth2
iface eth2 inet manual
bond-master bond0
auto eth3
iface eth3 inet manual
bond-master bond0
# The bond interface
auto bond0
iface bond0 inet static
address 192.168.1.200
gateway 192.168.1.1
netmask 255.255.255.0
bond-mode 4
bond-miimon 100
bond-slaves eth0 eth1 eth2 eth3
bond-ad_select bandwidth
最后一条语句确保当 1 个接口发生故障时,2 对中具有完全连接性的那一个将接收所有流量。
因此,如果 eth0 和 eth1 连接到交换机 A,而 eth2-eth3 连接到交换机 B,则如果 eth0 或 eth1 发生故障,连接将使用交换机 B。
最后但并非最不重要的:
ifup eth0 & ifup eth1 & ifup eth2 & ifup eth3 & ifup bond0
就是这样。它可以正常工作,并在重启后自动恢复在线状态。
您可以通过使用 ifdown 关闭单个 ethX 接口来观察故障转移行为,并通过“ethtool bond0”观察由此产生的聚合带宽。
(无需前往服务器机房并拔出电缆。)
答案3
请记住,使用 802.3ad 时,绑定中的所有链路都需要连接到同一交换机,除非该交换机支持通过堆栈/虚拟交换机类型配置与其他交换机共享 802.3ad 信息。
也就是说,您仍然可以通过与每个交换机建立绑定来实现具有 4 个网卡和 2 个交换机的配置,例如:
NIC1/port1 -> bond0 -> switch1
NIC1/port2 -> bond1 -> switch2
NIC2/port1 -> bond0 -> switch1
NIC2/port2 -> bond1 -> switch2
这样,您就可以获得针对单个 NIC 或交换机故障的冗余,并在交换机工作时增加带宽,但您必须自己管理 IP 故障转移。
或者,您可以切换到绑定模式 6,放弃 802.3ad 的要求并运行您在问题中建议的配置。