1. 什麼是Bonding
2. Bonding的工作模式
3. Bonding的實現
1. 什麼是Bonding
bonding提供了一種把多塊網卡聚合成一個邏輯網卡的方法(將多塊網卡綁定同一IP地址對外提供服務,多塊物理網卡被修改爲相同的MAC地址)。該邏輯網卡的工作方式取決於工作模式,通常有熱備或負載均衡,此外還可提供鏈路完整性監視。
大部分主流發行版已經將bonding集成爲內核中的一個模塊。
若你安裝的發行版不支持該功能,需自行編譯安裝內核,並在編譯時選擇開啓此功能。
2. Bonding的工作模式
Mode 0 (balance-rr)
輪轉(Round-robin)策略:從頭到尾順序的在每一個slave接口上面發送數據包。本模式提供負載均衡和容錯的能力
Mode 1 (active-backup)
活動-備份(主備)策略:只有一個slave被激活,當且僅當活動的slave接口失敗時纔會激活其他slave。 爲了避免交換機發生混亂此時綁定的MAC地址只有一個外部端口上可見
Mode 3 (broadcast)
廣播策略:在所有的slave接口上傳送所有的報文,提供容錯能力
active-backup、 balance-tlb 和 balance-alb 模式不需要交換機的任何特殊配置。其他綁定模式需要配置交換機以便整合鏈接。如: Cisco 交換機需要在模式 0、 2 和 3 中使用EtherChannel,但在模式4中需要 LACP和 EtherChannel
該功能試驗應在物理機中進行,在虛擬機中進行時,會因爲虛擬機的機制,不能實現自動切換網卡。
3. Bonding的實現(CentOS 6)
3.1 虛擬機添加兩塊網卡,選擇同一網絡Vmnet 15
3.2 在目錄/etc/sysconfig/network-scripts下添加配置文件如下
ifcfg-bond0
DEVICE=bond0
#mode=運行模式,miimon=NUM 相互之間通訊檢查對方是否存活的時間間隔。
BONDING_OPTS="mode=0 miimon=100"
IPADDR=192.168.25.100
PREFIX=24
ifcfg-eth2
EVICE=eth2
MASTER=bond0
SLAVE=yes
ifcfg-eth3
DEVICE=eth3
MASTER=bond0
SLAVE=yes
miimon:是用來進行鏈路監測的。如果miimon=100,那麼系統每100ms 監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路
MASTER:指定MASTER的設備名
SLAVE:是否工作在SLAVE模式下
3.3 添加完成後重啓網絡服務(需關閉NetworkManager服務)
[root@magedu network-scripts]# cat /proc/net/bonding/bond0 #查看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: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:b5:04:b7
Slave queue ID: 0
Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:b5:04:ad
Slave queue ID: 0
3.4 測試:
用另一臺虛擬機ping該主機bond0的地址
因虛擬機對bonding支持不好,無法進行進一步測試。
3.5 刪除bond0
關閉bond0網卡並刪除bonding模塊
[root@magedu ~]# ifdown bond0
[root@magedu ~]# rmmod bonding
刪除bond配置文件(eth2,eth3網卡需重建網卡配置文件)
[root@magedu network-scripts]# rm ifcfg-bond0 ifcfg-eth{2,3}
rm: remove regular file `ifcfg-bond0'? y
rm: remove regular file `ifcfg-eth2'? y
rm: remove regular file `ifcfg-eth3'? y```