我正在嘗試在綁定中設置故障恢復配置,但無法繞過介面配置。我的介面如下:
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
希望這可以幫助!