知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
綁定的前提條件:晶片集型號相同,而且網卡應該具備自己獨立的BIOS晶片。
# 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.localifenslave 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
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