A. linux 網卡bond的七種模式
網卡bond是通過多張網卡綁定為一個邏輯網卡,實現本地網卡的冗餘,帶寬擴容和負載均衡,在生產場景中是一種常用的技術。Kernels 2.4.12及以後的版本均供bonding模塊,以前的版本可以通過patch實現。可以通過以下命令確定內核是否支持 bonding:
鏈路負載均衡,增加帶寬,支持容錯,一條鏈路故障會自動切換正常鏈路。交換機需要配置聚合口,思科叫port channel。
這個是主備模式,只有一塊網卡是active,另一塊是備用的standby,所有流量都在active鏈路上處理,交換機配置的是捆綁的話將不能清租橡工作,因為交換機往兩塊網卡發包,有一半包是丟棄的。
表示XOR Hash負載分擔,和交換機的聚合強制不協商方式配合。(需要xmit_hash_policy,需要交換機配置port channel)
表示所有包從所有網路介面發出,這個不均衡,只有冗餘機制,但過於浪費資源。此模式適用於金融行業,因為他們需要高可靠性的網路,不允許出現任何問題。需要和交換機的聚合強制不協商方式配合。
表示支持802.3ad協議,和交換機的聚合LACP方式配合(需要xmit_hash_policy).標准要求所有設備在聚合操作時,要在同樣的速率和雙工模式,而且,和除了balance-rr模式外的其它bonding負載均衡模式一樣,任何連接都不能使用多於一個介面的帶寬。
是根據每個slave的負載情況選擇slave進行發送,接收時使用當前輪到的slave。該模式要求slave介面的網路設備驅動有某種ethtool支持;而且ARP監控不可用。
在5的tlb基礎上增加了rlb(接收負載均衡receive load balance).不需要任何switch(交換機)的支持。接收負載均衡是通過ARP協商實現的.
mode5和mode6不需要交換機端的設置,網卡能自動聚合。mode4需要支持802.3ad。mode0,mode2和mode3理論上需要靜態聚合方式。
但實測中mode0可以通過mac地址欺騙的方式在交換機不設置的情況下不太均衡地進行接收。
1、首先要看linux是否支持bonding,大部分發行版都支持
如輸出以上信息,則說明支持bonding,如果沒有,說明內核不支持bonding,需要重新編譯內核
2、答旁網卡配置文件
兩個物理網口分別是:eth0,eth1 綁定後的虛擬口是:bond0
開機自動載入模塊到內核
每100毫秒 (即0.1秒) 監測一次路連接狀態,如果有一條線路不通就轉入另一條線路; Linux的多網卡綁定功能使用的是內核中的"bonding"模塊
如果修改為其它模式,只需要在BONDING_OPTS中指定mode=Number即可。USERCTL=no --是否允許非root用戶控制該設備
查看bond0狀態:可以看到調用的是哪幾個物理網卡
三、擴展
上邊是兩個網卡(eth0、eth1)綁定成一個bond0,如果我們要設置多個bond口,比如物理網口eth0和eth1組成bond0,eth2和型罩eth3組成bond1,那麼網口設置文件的設置方法和上面
是一樣的,只是/etc/modprobe.d/dist.conf文件就不能疊加了。正確的設置方法有兩種:
1、第一種
這樣所有的綁定只能使用一個mode了。
2、第二種
這種方式不同的bond口可以設定為不同的mode,注意開機自動啟動/etc/rc.d/rc.local文件的設置
http://lixin15.blog.51cto.com/3845983/1769338
http://linuxnote.blog.51cto.com/9876511/1680315
B. linux綁定bond的七種模式
目前網卡綁定mode共有七種(0~6)bond0、bond1、bond2、bond3、bond4、bond5、bond6
常用的有三種:
mode=0:平衡負載模式,有自動備援,但需要」Switch」支援及設定。
mode=1:自動備援模式,其中一條線若斷線,其他線路將會自動備援。
mode=6:平衡負載模式,有自動備援,不必」Switch」支援及設定。
Linux網口綁定:
通過網口綁定(bond)技術,可以很容易實現網口冗餘,負載均衡,從而達到高可用高可靠的目的。前提約定:
2個物理網口分別是:eth0,eth1
綁定後的虛擬口是:bond0
伺服器IP是:10.10.10.1
第一步,配置設定文件:
[root@woo ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.10.10.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
[root@woo ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
[root@woo ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1 飢行
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
第二步,修改modprobe相關設定文件,並載入bonding模塊:
1.在這里,我們直接創建一個載入bonding的襲肢毀專屬設定文件/etc/modprobe.d/bonding.conf
[root@woo ~]# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bonding mode=0 miimon=200
2.載入模塊(重啟系統後就不用手動再載入了)
[root@woo ~]# modprobe bonding
3.確認模塊是否載入成功:
[root@woo ~]# lsmod | grep bonding
bonding 100065 0
第三步,重啟一下網路,然後確認一下狀拍備況:
[root@db01 ~]# service network restart
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]
[root@db01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
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: 0
Permanent HW addr: 40:f2:e9:db:c9:c2
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 40:f2:e9:db:c9:c3
[root@db01 ~]# ifconfig | grep HWaddr
bond0 Link encap:Ethernet HWaddr 40:F2:E9:DB:C9:C2
eth0 Link encap:Ethernet HWaddr 40:F2:E9:DB:C9:C2
eth1 Link encap:Ethernet HWaddr 40:F2:E9:DB:C9:C2
從上面的確認信息中,我們可以看到3個重要信息:
1.現在的bonding模式是active-backup
2.現在Active狀態的網口是eth0
3.bond0,eth1的物理地址和處於active狀態下的eth0的物理地址相同,這樣是為了避免上位交換機發生混亂。
任意拔掉一根網線,然後再訪問你的伺服器,看網路是否還是通的。
第四步,系統啟動自動綁定、增加默認網關:
[root@woo ~]# vi /etc/rc.d/rc.local
#追加
ifenslave bond0 eth0 eth1
route add default gw 10.10.10.1