linux bonding 技術

Linux網口綁定

通過網口綁定(bond)技術,可以很容易實現網口冗餘,負載均衡,從而達到高可用高可靠的目的。

前提約定:

2個物理網口分別是:eth0,eth1

綁定後的虛擬口是:bond0

服務器IP是:192.168.0.100

第一步,配置設定文件:

/etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0

BOOTPROTO=none

ONBOOT=yes

IPADDR=192.168.0.100

NETMASK=255.255.255.0

NETWORK=192.168.0.0

BROADCAST=192.168.0.255

#BROADCAST廣播地址

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

第二步,修改modprobe相關設定文件,並加載bonding模塊:

1.在這裏,我們直接創建一個加載bonding的專屬設定文件/etc/modprobe.d/bonding.conf

[root@test ~]# vi /etc/modprobe.d/bonding.conf

#追加

alias bond0 bonding

options bonding mode=0 miimon=200

2.加載模塊(重啓系統後就不用手動再加載了)

[root@test ~]# modprobe bonding

3.確認模塊是否加載成功:

[root@test ~]# lsmod | grep bonding

bonding 100065 0

第三步,重啓一下網絡,然後確認一下狀況:

[root@test ~]# /etc/init.d/network restart

[root@test ~]# cat /proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

Bonding Mode: fault-tolerance (active-backup)

Primary Slave: None

Currently Active Slave: eth0

MII Status: up

MII Polling Interval (ms): 200

Up Delay (ms): 0

Down Delay (ms): 0

Slave Interface: eth0

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:16:36:1b:bb:74

Slave Interface: eth1

MII Status: up

Link Failure Count: 0

Permanent HW addr: 00:16:36:1b:bb:80

[root@test ~]# ifconfig | grep HWaddr

bond0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74

eth0 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74

eth1 Link encap:Ethernet HWaddr 00:16:36:1B:BB:74

從上面的確認信息中,我們可以看到3個重要信息:

1.現在的bonding模式是active-backup

2.現在Active狀態的網口是eth0

3.bond0,eth1的物理地址和處於active狀態下的eth0的物理地址相同,這樣是爲了避免上位交換機發生混亂。

任意拔掉一根網線,然後再訪問你的服務器,看網絡是否還是通的。

第四步,系統啓動自動綁定、增加默認網關:

[root@test ~]# vi /etc/rc.d/rc.local

#追加

ifenslave bond0 eth0 eth1

route add default gw 192.168.0.1

#如可上網就不用增加路由,0.1地址按環境修改.

------------------------------------------------------------------------

留心:前面只是2個網口綁定成一個bond0的情況,如果我們要設置多個bond口,比如物理網口eth0和eth1組成bond0,eth2和eth3組成bond1,

那麼網口設置文件的設置方法和上面第1步講的方法相同,只是/etc/modprobe.d/bonding.conf的設定就不能像下面這樣簡單的疊加了:

alias bond0 bonding

options bonding mode=1 miimon=200

alias bond1 bonding

options bonding mode=1 miimon=200

正確的設置方法有2種:

第一種,你可以看到,這種方式的話,多個bond口的模式就只能設成相同的了:

alias bond0 bonding

alias bond1 bonding

options bonding max_bonds=2 miimon=200 mode=1

第二種,這種方式,不同的bond口的mode可以設成不一樣:

alias bond0 bonding

options bond0 miimon=100 mode=1

install bond1 /sbin/modprobe bonding -o bond1 miimon=200 mode=0

仔細看看上面這2種設置方法,現在如果是要設置3個,4個,甚至更多的bond口,你應該也會了吧!

後記:簡單的介紹一下上面在加載bonding模塊的時候,options裏的一些參數的含義:

miimon 監視網絡鏈接的頻度,單位是毫秒,我們設置的是200毫秒。

max_bonds 配置的bond口個數

mode bond模式,主要有以下幾種,在一般的實際應用中,0和1用的比較多,

如果你要深入瞭解這些模式各自的特點就需要靠讀者你自己去查資料並做實踐了。

0或balance-rr 輪轉策略,提供負載均衡和耐故障功能,按順序輪流把包發給包含在bond口內的網口。

1或active-backup 主備策略,提供高耐故障功能,邏輯簡單,一個處於激活狀態,一個失敗,另外一個自動激活。

2或balance-xor XOR策略,提供負載均衡和耐故障功能。

3或broadcast 廣播策略,耐故障功能。把數據以廣播的方式,發給包含在該bond口內的所有網口。

4或802.3ad IEEE 802.3ad動態鏈接集合。

5或balance-tlb 自動適應傳輸負載均衡策略。

6或balance-alb 自動適應負載均衡策略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章