我正在尝试在绑定中设置故障恢复配置,但无法绕过接口配置。我的界面如下:
auto bond0
iface bond0 inet static
address 192.168.1.39
netmask 255.255.255.0
up /sbin/ifenslave bond0 eth1 eth3
down /sbin/ifenslave -d bond0 eth1 eth3
我的 /etc/modprobe.d/bonding.conf 文件是:
alias bond0 bonding
options bonding mode=3
我通过从其他系统运行 ping 来测试它。我的绑定状态如下:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (broadcast)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 44:a8:42:03:68:2c
Slave queue ID: 0
Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 44:a8:42:03:68:2c
Slave queue ID: 0
当我移除 eth1 电缆时,故障转移起作用,并且 eth3 传输数据(ping 仍然继续)。
如果我重新连接 eth1 并移除 eth3,则 ping 将停止,并且绑定状态不包含任何接口。绑定状态为:
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (broadcast)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
我尝试了绑定中的所有模式(0 到 6)。但没有一个配置提供故障恢复支持。我哪里做错了?
答案1
编辑2019-01-10:这些说明适用于 Ubuntu 16.04 及更早版本。我将尝试使用 18.04 的说明进行更新。
在此答案中,我们使用active-backup
绑定和bond-primary
接口集,允许故障转移在主服务器可用时返回到主服务器。更多信息可以找到:https://wiki.linuxfoundation.org/networking/bonding
Ubuntu 中的绑定设置与 RedHat 等其他 Linux 发行版中的设置不同。我在 Ubuntu 中完成了一些绑定配置,我将尽可能详细地介绍如下。
看起来您已经ifenslave
安装了,但如果没有,请安装ifenslave
:
sudo apt-get install ifenslave
接下来,查看/etc/modules
并确保它包含以下几行:
loop
lp
rtc
bonding
在/etc/network/interfaces
文件中,设置您的loopback
、eth1
和eth3
接口:
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth1
auto eth3
iface eth3 inet manual
bond-master bond0
现在设置您的bond0
接口,active-backup
以便在其中一个 NIC 连接发生故障时进行故障转移:
auto bond0
iface bond0 inet static
address 192.168.1.39
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
bond-mode active-backup
bond-miimon 100
bond-slaves none
保存文件更改/etc/network/interfaces
并重新启动网络服务:
sudo /etc/init.d/networking restart
现在您可以检查您的绑定设置。确保您的bond0
、eth1
和eth3
正确无误:
sudo ethtool bond0
sudo ethtool eth1
sudo ethtool eth3
eth1
通过删除以下内容来检查故障转移现在是否有效bond0
:
sudo ifenslave -d bond0 eth1
检查是否仍可以 ping 通网关:
ping -c2 192.168.1.1
添加eth1
回bond0
:
sudo ifenslave bond0 eth1
希望这可以帮助!