這兩天我實驗使用了Linux來架設Bonding這東西
Bonding就是一種綑綁的技術
簡單來說就是把一台主機多張網卡綑綁成一張,讓主機達到備援的效果。
首先簡單介紹一下Bonding的種類
模式0 循環負載平衡合併頻寬 (Round-robin, balance-rr)
將封包循序的從任何可用的網卡上面循環發送,這種模式有種致命的缺點,1.他無法在HUB上面運作。2.因為Switch是辨認MAC位置,容易造成Switch的誤判。所以不建議。
模式1 自動備援模式 (Active-backup)
這種模式之下,假設有三張網卡,只有一張網卡能作用,癥結點就出來了,如果只有一張網卡作用,壞掉的時候切換到下一張網卡,但是並未達到頻寬合併的效果。
模式4 LACP 鏈路聚合模式 (IEEE 802.3ad Dynamic link aggregation)
這是一個業界標準的模式,優點是可以合併頻寬,缺點是上層設備Switch必須要有LACP的功能,也就是!!一般的Switch沒有辦法嚕...
模式5 自動調整傳輸負載平衡 (Adaptive transmit load balancing, balance-tlb)
簡單的說,合併網卡後,傳送可以依據數據資料大小來作分配,讓傳送上有效率,但是缺點是!!接收的話沒辦法做合併,比較可惜且美中不足的地方。
模式6 自動調整全負載平衡 (Adaptive load balancing, balance-alb)
模式5的進化版,接收傳送都可以達到優秀的表現!!讚!我個人偏好愛用第6模式
實際操作!
我使用的是Redhat6.2版本,Bonding在Linux中Centos6和RHEL6板以上都有內建支援,免擔心。
第一步 先檢查是否有兩張網卡
[root@localhost Desktop]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:70:79:26
inet6 addr: fe80::a00:27ff:fe70:7926/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:804 (804.0 b) TX bytes:468 (468.0 b)
eth1 Link encap:Ethernet HWaddr 08:00:27:08:B1:65
inet addr:192.168.1.111 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe08:b165/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10677 (10.4 KiB) TX bytes:5828 (5.6 KiB)
第二步驟
寫出一個bonding的conf檔案
[root@localhost Desktop]# vim /etc/modprobe.d/boding.conf
文件中寫
alias bond0 bonding
存檔後退出
bond0 為我們給介面取的名稱 bonding為核心模組的意思
第三步驟
去到/etc/sysconfig/network-scripts
[root@localhost Desktop]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
從下面我們可以看出來有eth0和eth1兩張網卡
ifcfg-eth0 ifdown-ipv6 ifup ifup-plip ifup-wireless
ifcfg-eth1 ifdown-isdn ifup-aliases ifup-plusb init.ipv6-global
ifcfg-lo ifdown-post ifup-bnep ifup-post net.hotplug
ifdown ifdown-ppp ifup-eth ifup-ppp network-functions
ifdown-bnep ifdown-routes ifup-ippp ifup-routes network-functions-ipv6
ifdown-eth ifdown-sit ifup-ipv6 ifup-sit
ifdown-ippp ifdown-tunnel ifup-isdn ifup-tunnel
第四步驟
建立ifcfg-bond0檔案
[root@localhost network-scripts]# vim ifcfg-bond0
DEVICE=bond0
USERCTL=no
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.152
NETMASK=255.255.255.0
BONDING_OPTS="miimon=100 mode=6"
TYPE=Unknow
IPV6INIT=no
最主要的其實是BONDING_OPTS這一行 miimon是多少時間檢查一次的意思 mode6 模式6 往上看嚕~
第五步驟
在eth0和eth1中加入MASTER和SLAVE
DEVICE="eth1"
HWADDR="08:00:27:08:B1:65"
MASTER=bond0
SLAVE=yes
NM_CONTROLLED="yes"
ONBOOT="no"
之後重新啟動網路。
[root@localhost network-scripts]# service network restart
第六步驟
查看
[root@localhost network-scripts]# ifconfig
[root@localhost network-scripts]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.1.152 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
eth0 Link encap:Ethernet HWaddr 08:00:27:70:79:26
inet addr:192.168.1.112 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe70:7926/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:35 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7916 (7.7 KiB) TX bytes:5059 (4.9 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:08:B1:65
inet addr:192.168.1.111 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe08:b165/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:17050 (16.6 KiB) TX bytes:10627 (10.3 KiB)
其實內行的人會看出來,bonding根本沒成功。
沒錯,上面這是錯的。
Why??答案就在NetworkManager
把NetworkManager關掉,使用network,bonding就會乖乖聽話了。
第七步驟
關掉NetworkManager在查詢一次!
[root@localhost network-scripts]# ifconfig
bond0 Link encap:Ethernet HWaddr 08:00:27:70:79:26
inet addr:192.168.1.152 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe70:7926/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:398 errors:0 dropped:0 overruns:0 frame:0
TX packets:208 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:69507 (67.8 KiB) TX bytes:28350 (27.6 KiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:70:79:26
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:206 errors:0 dropped:0 overruns:0 frame:0
TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:33506 (32.7 KiB) TX bytes:8303 (8.1 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:08:B1:65
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:192 errors:0 dropped:0 overruns:0 frame:0
TX packets:126 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36001 (35.1 KiB) TX bytes:20047 (19.5 KiB)
這樣就正確嚕!
