在运行Debian Stretch的服务器上,我使用802.3ad 模式配置了一个bond0 ,如下所示:
auto bond0
iface bond0 inet manual
slaves eth0 eth2
bond_miimon 100
bond_mode 802.3ad
bond0接口已启动并正在运行,但它正在使用负载平衡(循环)模式:
root@servir01:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: e4:1f:13:65:f0:c4
Slave queue ID: 0
Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: e4:1f:13:36:a3:ac
Slave queue ID: 0
在交换机上,LAG 是在启用 LACP 的情况下正确创建的,并且它的两个端口都已启动并正在运行:
[
同一台机器有另一个以相同方式配置的绑定接口(eth1 和 eth3 接口上的bond1),连接在相同的交换机上,并且 LACP 工作良好:
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: e4:1f:13:65:f0:c6
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 9
Partner Key: 1010
为什么bond0 接口不想启用LACP?我哪里错了?
老问题,但由于它在搜索中很早就出现了,而且我有一个类似的设置,同样的问题。这是我如何让它工作的,(在 Debian stretch 上使用 ifenslave)......
/etc/网络/接口...
原因是什么?
好吧,网卡会出现,绑定驱动程序会抓住它们,然后网卡会重新配置为从站,绑定驱动程序会恐慌,因为它没有从站,并且像无头鸡一样跑来跑去(循环)。
现在,bonding 驱动程序出现,发现它没有从设备,所以它坐下来等待...... NIC 看到他们有一个主设备,所以他们去报告,从 bond0 获取他们的地址,然后开始工作他们都走了。
在 debian 10 上测试(在阅读了这个线程和 debian 绑定文档之后)
配置在下面(没有编辑其他文件 - 模块或类似的东西)
什么是新的:
在 Debian 10 buster 升级(full-upgrade)到 Debian 11 Bullseye 后花了几天时间,所以想分享一下绑定问题的解决方案。
Debian Linux 升级后,现有的中继配置不再工作。有重大更改,称为错误:
以前在 Debian 10 上工作的 bond0 配置是这样的:
这导致没有配置bond0,甚至出现如下错误:
或者
显示错误线
其中“节”是所谓的模块配置,开发人员使用的术语。
其根本原因是
ifenslave
包被重构了很多,主要思想是从子项目中删除“节”,它们是物理接口(nic),并将其全部保存在一个地方,例如绑定接口它自己。即使在
ifenslave
版本 1.22 中也存在错误,指的ifstate
是 Debian 11 中不存在的命令。简单快速的修复是:即使在修复此问题后,绑定也不起作用,这意味着存在问题的错误,为什么绑定在 Bullseye 上不起作用。
翻阅代码,我发现关键的变化不仅是
bond-mode
从 child 中删除并重新设置为bond接口配置,就像早期的 package 时代一样,而且还恢复到早期的bond-slaves
.因此工作的 Debian 11 Bullseye 绑定配置文件如下所示:
2022 年更新:
最近在一台金属服务器上,我遇到了一个问题,即在内核升级和删除旧内核后,系统变得无网络。长话短说 - 可能存在绑定内核模块未加载、不存在或由于版本混淆或 initrd 混乱而导致任何加载失败的情况。检查:
如果它不存在,这是问题的罪魁祸首。尝试手动加载模块
modprobe bonding
并检查它是否加载。调查加载的内核版本是否与应有的版本相对应,uname -r
并检查该版本是否存在模块目录。参考:https ://www.kernel.org/doc/Documentation/networking/bonding.txt
我解决了这个问题,将以下内容添加到债券配置中
/etc/network/interfaces
:添加此配置并重新启动网络后,一切正常。