網卡bond是通過把多張網卡綁定爲一個邏輯網卡,實現本地網卡的冗餘,帶寬擴容和負載均衡。在應用部署中是一種常用的技術,我們公司基本所有的項目相關服務器都做了bond,這裏總結整理,以便待查。
bond模式:
- Mode=0(balance-rr) 表示負載分擔round-robin,和交換機的聚合強制不協商的方式配合。
- Mode=1(active-backup) 表示主備模式,只有一塊網卡是active,另外一塊是備的standby,這時如果交換機配的是捆綁,將不能正常工作,因爲交換機往兩塊網卡發包,有一半包是丟棄的。
- Mode=2(balance-xor) 表示XOR Hash負載分擔,和交換機的聚合強制不協商方式配合。(需要xmit_hash_policy)
- Mode=3(broadcast) 表示所有包從所有interface發出,這個不均衡,只有冗餘機制...和交換機的聚合強制不協商方式配合。
- Mode=4(802.3ad) 表示支持802.3ad協議,和交換機的聚合LACP方式配合(需要xmit_hash_policy)
- Mode=5(balance-tlb) 是根據每個slave的負載情況選擇slave進行發送,接收時使用當前輪到的slave
- Mode=6(balance-alb) 在5的tlb基礎上增加了rlb。
5和6不需要交換機端的設置,網卡能自動聚合。4需要支持802.3ad。0,2和3理論上需要靜態聚合方式
但實測中0可以通過mac地址欺騙的方式在交換機不設置的情況下不太均衡地進行接收。
以上信息來自網絡,不是所有的都明白。目前我們常用的主要是1(主備冗餘)和6(與交換機無關的負載均衡)
本文以小本上虛擬機安裝的兩臺REDHAT AS 5爲環境進行說明。
1.創建bond0配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
添加內容
- DEVICE=bond0
- IPADDR=10.10.10.11
- NETWORK=10.10.10.0
- NETMASK=255.255.255.0
- USERCTL=no
- BOOTPROTO=none
- ONBOOT=yes
你需要修改上面的IPADDR,NETWORK,NETMASK爲你自己的環境配置
2.修改eth0和eth1配置文件
注意:這裏是虛擬機上配置,所以可以很方便的添加多塊網卡。
使用vi修改eth0配置文件
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加或替換內容:
DEVICE=eth0USERCTL=noONBOOT=yesMASTER=bond0SLAVE=yesBOOTPROTO=none
使用vi修改eth1配置文件
添加或替換內容:
DEVICE=eth1USERCTL=noONBOOT=yesMASTER=bond0SLAVE=yesBOOTPROTO=none
保存並退出
3.加載bond驅動
通過修改內核模塊配置文件modprobe.conf加載bond驅動。
# vi /etc/modprobe.conf
添加下面的兩行內容:
alias bond0 bondingoptions bond0 mode=6 miimon=100
注意:這裏使用的是模式6,負載均衡模式;網卡檢查時間100ms
4.測試配置
首先,加載bond module:
# modprobe bonding
然後,重新啓動網絡服務
# service network restart
查看內核中bond狀態
cat /proc/net/bonding/bond0
我機器的輸出樣例:
- Ethernet Channel Bonding Driver: v3.0.3 (March 23, 2006)
- Bonding Mode: load balancing (round-robin)
- MII Status: up
- MII Polling Interval (ms): 0
- Up Delay (ms): 0
- Down Delay (ms): 0
- Slave Interface: eth0
- MII Status: up
- Link Failure Count: 0
- Permanent HW addr: 00:0c:29:e7:21:13
- Slave Interface: eth1
- MII Status: up
- Link Failure Count: 0
- Permanent HW addr: 00:0c:29:e7:21:09
查看所有網絡配置
# ifconfig
- inet addr:10.10.10.11 Bcast:10.10.10.255 Mask:255.255.255.0
- inet6 addr: fe80::20c:29ff:fee7:2113/64 Scope:Link
- UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
- RX packets:2155 errors:0 dropped:0 overruns:0 frame:0
- TX packets:685 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:507558 (495.6 KiB) TX bytes:83759 (81.7 KiB)
- eth0 Link encap:Ethernet HWaddr 00:0C:29:E7:21:13
- inet6 addr: fe80::20c:29ff:fee7:2113/64 Scope:Link
- UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
- RX packets:889 errors:0 dropped:0 overruns:0 frame:0
- TX packets:563 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:238996 (233.3 KiB) TX bytes:59080 (57.6 KiB)
- Interrupt:67 Base address:0x20a4
- eth1 Link encap:Ethernet HWaddr 00:0C:29:E7:21:13
- inet6 addr: fe80::20c:29ff:fee7:2113/64 Scope:Link
- UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
- RX packets:1266 errors:0 dropped:0 overruns:0 frame:0
- TX packets:122 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:268562 (262.2 KiB) TX bytes:24679 (24.1 KiB)
- Interrupt:67 Base address:0x2024