21 1 月 2013

Ubuntu bonding 小技巧

作者:Ben哥|發布日期:2010/11/12   Linux (RedHat, Ubuntu, etc.) Bonding 共提供了六種模式: 名辭解釋: 在bonding的領域裡, 英文slave interface表示某個實體連線的意思; 因此指令名稱為: ifenslave

  • mode=0 (balance-rr): 採取依序使用的連線的方式,提供了負載均衡及容錯的功能
  • mode=1 (active-backup): 眾多的連線中,只有一個是啟用的狀態,當啟用的連線失效(敗),則由備援的連線接手,提供容錯機制
  • mode=2 (balance-xor): 採用xor的演算法來選擇傳輸的連線,其結果是以目的地MAC為基準選擇哪一條連線;提供了負載均衡及容錯機制
  • mode=3 ( broadcast): 把封包送到所有的連線,當有連線失效沒有任何downtime,但此法過於浪費連線資源;有容錯機制
  • mode=4 (802.3ad, LACP): IEEE 802.3ad Dynamic Link Aggregation協定;提供較好的機制,並可搭配802.1Q trunking同時介接不同的VLAN;惟獨此法必須與支援802.3ad的交換機介接,並且每個slave的驅動程式都需支援ethtool擷取介面的訊息, 較為豪華,但是提供了相當優良的應用,負載均衡及容錯機制
  • mode=5 (balance-tlb): Adaptive Transmit load balancing; 無須交換機支援但slave驅動程式需支援ethtool;根據連線介面卡的負載決定traffic如何送出,回覆的traffic則由送出的salve接收
  • mode=6 (balance-alb): 包含了mode 5所有功能及需求,再加上接收traffic時的負載均衡.

如何安裝並設定:
1. sudo apt-get install ifenslave
2. sudo echo "bonding mode=6 miimon=100" >> /etc/modules
3. 修改 /etc/network/interfaces 並加入以下內容(到時候把#拿掉):
#auto bond0
# iface bond0 inet static
# address (IP定址)
# netmask (網路遮罩)
# gateway (gateway IP定址)
# dns-nameservers (DNS IP定址)
# post-up ifenslave bond0 eth0 eth1 eth2 eth3
# post-down ifenslave -d bonding eth0 eth1 eth2 eth3
4. sudo modprobe bonding mode=6 miimon=100
5. sudo /etc/init.d/networking restart
就完成了Ubuntu bonding的設定及啟用了