這兩天我實驗使用了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中加入MASTERSLAVE

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)

這樣就正確嚕!

 

實作影片_請點此!!!

 

 

 

 

 

 

 

 

文章標籤
全站熱搜
創作者介紹
創作者 資訊嗑 的頭像
資訊嗑

資訊嗑

資訊嗑 發表在 痞客邦 留言(0) 人氣(5,444)