Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

13.7. bonding

綁定的前提條件:晶片集型號相同,而且網卡應該具備自己獨立的BIOS晶片。

13.7.1. bonding

#vi ifcfg-bond0
# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.252.0
BROADCAST=172.16.3.254
ONBOOT=yes
TYPE=Ethernet
		

這裡要主意,不要指定單個網卡的IP 地址、子網掩碼。將上述信息指定到虛擬適配器(bonding)中即可

[root@rhas-13 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp

[root@rhas-13 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dhcp
		

編輯 /etc/modules.conf 檔案,加入如下一行內容,以使系統在啟動時加載bonding模組,對外虛擬網絡介面設備為 bond0.加入下列兩行:

* /etc/modules.conf 檔案已經不再使用
		
cat >> /etc/modprobe.d/bonding.conf <<EOF
alias bond0 bonding
options bond0 miimon=100 mode=1
EOF
        
			

說明:miimon是用來進行鏈路監測的。比如:miimon=100,那麼系統每100ms監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路;mode的值表示工作模式,他共有0, 1,2,3四種模式,常用的為0,1兩種。mode=0表示load balancing (round-robin)為負載均衡方式,兩塊網卡都工作。mode=1表示fault-tolerance (active-backup)提供冗餘功能,工作方式是主備的工作方式,也就是說預設情況下只有一塊網卡工作,另一塊做備份。bonding只能提供鏈路監測,即從主機到交換機的鏈路是否接通。如果只是交換機對外的鏈路down掉了,而交換機本身並沒有故障,那麼bonding會認為鏈路沒有問題而繼續使用。

# vi /etc/rc.d/rc.local
ifenslave bond0 eth0 eth1
route add -net 172.31.3.254 netmask 255.255.255.0 bond0
		

到這時已經配置完畢 重新啟動機器。重啟會看見以下信息就表示配置成功了

................
Bringing up interface bond0 OK
Bringing up interface eth0 OK
Bringing up interface eth1 OK
................
		

mode=1工作在主備模式下,這時eth1作為備份網卡是no arp的 [root@rhas-13 network-scripts]# ifconfig 驗證網卡的配置信息

那也就是說在主備模式下,當一個網絡介面失效時(例如主交換機掉電等),不回出現網絡中斷, 系統會按照cat /etc/rc.d/rc.local裡指定網卡的順序工作,機器仍能對外服務,起到了失效保護的功能。在mode=0 負載均衡工作模式,他能提供兩倍的頻寬,下我們來看一下網卡的配置信息:

在這種情況下出現一塊網卡失效,僅僅會是伺服器出口頻寬下降,也不會影響網絡使用。通過查看bond0的工作狀態查詢能詳細的掌握bonding的工作狀態

Linux下通過網卡邦定技術既增加了伺服器的可靠性,又增加了可用網絡頻寬,為用戶提供不間斷的關鍵服務。

		    
cat >> /etc/modprobe.d/bonding.conf <<EOF
alias bond0 bonding
options bond0 mode=balance-alb miimon=1000
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
DEVICE="eth0"
ONBOOT="yes"
BOOTPROTO="none"
USERCTL="no"
NM_CONTROLLED="no"
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-eth1 <<EOF
DEVICE="eth1"
ONBOOT="yes"
BOOTPROTO="none"
USERCTL="no"
NM_CONTROLLED="no"
EOF

cat > /etc/sysconfig/network-scripts/ifcfg-bond0 <<EOF
DEVICE="bond0"
ONBOOT="yes"
BOOTPROTO="none"
TYPE="Ethernet"
IPADDR=172.16.0.5
NETMASK=255.255.255.0
NETWORK=172.16.0.0
USERCTL="no"
NM_CONTROLLED="no"
EOF

modprobe bonding mode=balance-alb miimon=1000
ifconfig bond0 up
ifconfig bond0 172.16.0.5 netmask 255.255.255.0 up
ip route add default via 172.16.0.254 dev bond0
ifenslave bond0 eth0
ifenslave bond0 eth1

cat >> /etc/rc.local <<EOF
#-------------------------
ifenslave bond0 eth0
ifenslave bond0 eth1
ip route add default via 172.16.0.254 dev bond0
#-------------------------
EOF

more /proc/net/bonding/bond0
			
			

13.7.2. Ubuntu

ifenslave

apt-get install ifenslave-2.6
			

/etc/modules

bonding
			

modprobe bonding

/etc/modprobe.d/aliases

alias bond0 bonding
options bonding mode=0 miimon=100

or

options bonding mode=1 miimon=100 downdelay=200 updelay=200
			

例 13.1. bonding example

/etc/network/interfaces

auto lo
iface lo inet loopback

iface eth0 inet dhcp
iface eth1 inet dhcp

auto bond0
iface bond0 inet static
address 172.16.0.1
netmask 255.255.255.0
gateway 172.16.0.254
up ifenslave bond0 eth0 eth1
down ifenslave -d bond0 eth0 eth1