對於bonding的網路負載平衡是我們在檔案伺服器中常用到的,比如把三塊網卡,當做一塊來用,解決一個IP地址,流量過大,伺服器網路壓力過大的問題。對於檔案伺服器來說,比如NFS或SAMBA檔案伺服器,沒有所有一個管理員會把內部網的檔案伺服器的IP地址弄非常多個來解決網路負載的問題。如果在內網中,檔案伺服器為了管理和應用上的方便,大多是用同一個IP地址。對於一個百M的本網來說,檔案伺服器在多個使用者同時使用的情況下,網路壓力是極大的,特別是SAMABA和NFS伺服器。為瞭解決同一個IP地址,突破流量的限制,畢竟網線和網卡對資料的輸送量是有限制的。如果在有限的資源的情況下,實現網路負載平衡,最佳的辦法就是 bonding ;
另一種情況就是伺服器的一個網卡失效或網路連接意外斷開,如果做了bonding就能轉換到另一個網卡的網路連接上.確保服務的不中斷.
首先要看linux是否支援bonding,RHEL4已預設支援了.(大部分發行版都支援)
# modinfo bonding
filename:       /lib/modules/2.6.18-8.el5/kernel/drivers/net/bonding/bonding.ko
author:         Thomas Davis,
tadavis@lbl.gov
and many others
description:    Ethernet Channel Bonding Driver, v3.0.3
version:        3.0.3
license:        GPL
srcversion:     2547D22885C2FDF28EF7D98
如果有類似上面的資訊輸出,說明已支援了.
如果沒有,說明核心不支援bonding,需要重新編譯核心
編譯核心的步驟這裡就不多寫了,在make menuconfig裡面
找到Bonding driver support這樣的對話方塊,選中他.
如果是模組編譯,還需要掛載模組.掛載bonding 模組的方法;
[root@localhost#] modprobe bonding
如果/sbin/ifenslave沒有,我們還需要把他也獨立編譯出來
[root@lin:/home/beinan#] cd /usr/src/linux-2.6.20/Documentation/networking
[root@lin:/home/networking#] gcc -Wall -Wstrict-prototypes -O -I/usr/src/linux-2.6.20/include ifenslave.c -o ifenslave
[root@lin:/home/networking#] cp ifenslave /sbin/ifenslave
1.#cp  ifcfg-etho   ifcfg-bond
2.#vim ifcfg-bond
DEVICE=bond0
IPADDR=192.168.100.2
NETMASK=255.255.255.0
NOBOOT=yes
BOOTPROTO=none
USERCTL=no
#vim ifcfg-eth0
DEVICE=eth0
HWADDR=xxxxxxxxxx
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet
#vim ifcfg-eth1
DEVICE=eth1
HWADDR=xxxxxxxxxx
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
TYPE=Ethernet