一定要在服務管理中關閉NetworkManager服務並禁用自動啟動。
第一步:先查看下本機網卡,使用命令到network-scripts 下
[root@root~]# cd /etc/sysconfig/network-scripts/
[root@root network-scripts~]# ll
total 202
-rw-r--r--1 root root 212 Mar 15 15:40 ifcfg-eth0
-rw-r--r-- 1 root root 212 Mar 15 15:40 ifcfg-eth1
第二步:復制ifcfg-bond0或者自己創造一個都可以,下面我介紹復制的命令
[root@root network-scripts]# cp ifcfg-eth0 ifcfg-bond0
復制好了查看一下
[root@root network-scripts]# ll
total 204
-rw-r--r-- 1 root root 212 Mar 23 15.42 ifcfg-bond0
-rw-r--r--1 root root 212 Mar 15 15:40 ifcfg-eth0
-rw-r--r-- 1 root root 212 Mar 15 15:40 ifcfg-eth1
第三步:編輯ifcfg-bond0、ifcfg-eth0、ifcfg-eth1 把里面內容替換一下內容
[root@root network-scripts]# vim ifcfg-bond0 //(IP、MASK、子網掩碼按自己服務器的需求來)
BOOTPROTO=none
DEVICE=bond0
ONBOOT=yes
IPADDR=172.26.5.16
NETMASK=255.255.255.128
GATEWAY=172.26.5.126
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
DNS1=172.26.1.1
[root@root network-scripts]# vim ifcfg-eth0
BOOTPROTO=none
DEVICE=eth0
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
[root@root network-scripts]# vim ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
TYPE=Ethernet
IPV6INIT=no
第四步:模塊加載
[root@root ~]# cd /etc/modprobe.d/
切換到modprobe.d目錄下
[root@root ~modprobe.d]#vi dist.conf
#加載bonding模塊,對外虛擬網絡接口設備為bond0,在最后加入以下2行
alias bond0 bonding
options bond0 mode=1 miimon=100
(備注本人試用mode=0,因為本人的交換機上做了雙活)
說明:(這個是上網抄的,自己最好了解下)
miimon是用來進行鏈路監測的。比如:miimon=100,單位是ms(毫秒)這邊的100,是100ms,即是0.1秒那么系統每100ms監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路;mode的值表示工作模式,他共有0,1,2,3四種模式,常用的為0、1兩種。
mode共有七種(0~6),這里解釋兩個常用的選項。
mode=0:表示load balancing (round-robin)為負載均衡方式,兩塊網卡都在工作。
mode=1:表示fault-tolerance (active-backup)提供冗余功能,工作方式是主備的工作方式,其中一塊網卡在工作(若eth0斷掉),則自動切換到另一個塊網卡(eth1做備份)。
bonding只能提供鏈路監測,即從主機到交換機的鏈路是否接通。如果只是交換機對外的鏈路down掉了,而交換機本身並沒有故障,那么bonding會認為鏈路沒有問題而繼續使用。
第六步:啟動eth0和eth1網卡(有的人可以不用做這一步,因為本人的服務器是剛剛裝的,eth0和eth1網卡都沒有啟動)
[root@root network-scripts]# ifconfig eth0 up
[root@root network-scripts]# ifconfig eth1 up
第七步:重啟網絡服務,使配置生效
[root@root network-scripts]# service network restart
Shutting down interface bond0: [正確]
Shutting down interface eth0: [正確]
Shutting down interface eth1: [正確]
Shutting down loopback interface: [正確]
Bringing up loopback interface: [正確]
Error adding address 10.1.3.210 for bond0.
RTNETLINK answers: File exists [正確]
第八步:驗證是否雙網卡綁定成功方法一:
[root@root network-scripts]#ifconfig 成功的話顯示的內容是bond0和em1、em2網卡的MAC地址是一樣的
方法二:
[root@root network-scripts]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0 // eth0主模式
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: em1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:6d:18
Slave queue ID: 0
Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:6d:22
Slave queue ID: 0
網卡綁定技術已經出來很久,在不同的平台下的叫法不同而已,在Linux下叫bonding,IBM稱為etherchanel,broadcom叫team,但是名字怎么變,效果都是將兩塊或更多的網卡當做一塊網卡使用,在增加帶寬的同時也可以提高冗余性,七種模式,一般使用較多的就是來提高冗余,分別和不同交換機相連,提高可靠性,但有時服務器帶寬不夠了也可以增加帶寬,在這里用思科交換機和HP服務器相連,思科交換機做端口匯聚,服務器做網卡綁定,配置如下:
服務器為CentOS6.2
cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
TYPE=ethernet
ONBOOT=yes
IPADDR=192.168.0.32
NETMASK=255.255.192.0
GATEWAY=10.10.0.1
cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
TYPE=ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
BOOTPROTO=static
TYPE=ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
vim /etc/modprobe.d/dist.conf
alias bond0 bonding
options bond0 miimon=100 mode=0(0,表示平衡負載雙網卡工作,RR算法,mode=1,自動主備,其中一塊工作)
思科交換機相應端口配置端口聚合:
R1#configure terminal
R1(config)#int range g0/1 - 2
R1(config-int-range)#channel-group 1 mode on
將交換機g0/1-2 與服務器相應端口相連,經測試,帶寬明顯增加
Redhat Linux的網絡配置,基本上是通過修改幾個配置文件來實現的,雖然也可以用ifconfig來設置IP,用route來配置默認網關,用hostname來配置主機名,但是重啟后會丟失。
相關的配置文件
/ect/hosts 配置主機名和IP地址的對應
/etc/sysconfig/network 配置主機名和網關
/etc/sysconfig/network-scripts/ifcfg-eth0 eth0配置文件,eth1則文件名為ifcfg-eth1,以此類推
一、網卡配置
假設我們要配置主機名為test,eth0的IP地址192.168.168.1/24,網關地址192.168.168.250
則/etc/sysconfig/network文件內容如下:
NETWORKING=yes
HOSTNAME=test
GATEWAY=192.168.168.250
eth0對應的配置文件/etc/sysconfig/network-scripts/ifcfg-eth0內容如下:
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.168.1
NETMASK=255.255.255.0
TYPE=Ethernet
ONBOOT=yes
二、單網卡綁定多個IP
有時,我們需要在一塊網卡上配置多個IP,例如,在上面的例子中,我們還需要為eth0配置IP 192.168.168.2和192.168.168.3。那么需要再在/etc/sysconfig/network-scripts下新建兩個配置文件:
ifcfg-eth0:0內容如下:
DEVICE=eth0:0
BOOTPROTO=static
IPADDR=192.168.168.2
NETMASK=255.255.255.0
ONBOOT=yes
ifcfg-eth0:1內容如下:
DEVICE=eth0:1
BOOTPROTO=static
IPADDR=192.168.168.3
NETMASK=255.255.255.0
ONBOOT=yes
三、多個網卡綁定成一塊虛擬網卡
為了提供網絡的高可用性,我們可能需要將多塊網卡綁定成一塊虛擬網卡對外提供服務,這樣即使其中的一塊物理網卡出現故障,也不會導致連接中斷。比如我們可以將eth0和eth1綁定成虛擬網卡bond0
首先在/etc/sysconfig/network-scripts/下創建虛擬網卡bond0的配置文件ifcfg-bond0,內容如下
DEVICE=bond0
BOOTPROTO=none
BROADCAST=192.168.168.255
IPADDR=192.168.168.1
NETMASK=255.255.255.0
NETWORK=192.168.168.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.168.250
USERCTL=no
然后分別修改eth0和eth1的配置文件
ifcfg-eth0內容:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
ifcfg-eth1內容
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
因為linux的虛擬網卡是在內核模塊中實現的,所以需要安裝的時候已經裝好該module。在/etc/modules.conf文件中添加如下內容(如果沒有該文件,則新建一個):
alias bond0 bonding
options bond0 miimon=100 mode=1 primary=eth0
其中miimon=100表示每100ms檢查一次鏈路連接狀態,如果不通則會切換物理網卡
mode=1表示主備模式,也就是只有一塊網卡是active的,只提供失效保護。如果mode=0則是負載均衡模式的,所有的網卡都是active,還有其他一些模式很少用到
primary=eth0表示主備模式下eth0為默認的active網卡
miimon是毫秒數,每100毫秒觸發檢測線路穩定性的事件。
mode 是ifenslave的工作狀態。
一共有7種方式:
=0: (balance-rr) Round-robin policy: (平衡掄循環策略):傳輸數據包順序是依次傳輸,直到最后一個傳輸完畢, 此模式提供負載平衡和容錯能力。
=1: (active-backup) Active-backup policy:(主-備份策略):只有一個設備處於活動狀態。 一個宕掉另一個馬上由備份轉換為主設備。mac地址是外部可見得。 此模式提供了容錯能力。
=2:(balance-xor) XOR policy:(平衡 策略): 傳輸根據原地址布爾值選擇傳輸設備。 此模式提供負載平衡和容錯能力。
=3:(broadcast) broadcast policy: (廣播策略):將所有數據包傳輸給所有接口。 此模式提供了容錯能力。
=4:(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 動態鏈接聚合:創建共享相同的速度和雙工設置的聚合組。(我不是太懂。)
=5:(balance-tlb) Adaptive transmit load balancing(適配器傳輸負載均衡):沒有特殊策略,第一個設備傳不通就用另一個設備接管第一個設備正在處理的mac地址,幫助上一個傳。
=6:(balance-alb) Adaptive load balancing: (適配器傳輸負載均衡):大致意思是包括mode5,bonding驅動程序截獲 ARP 在本地系統發送出的請求,用其中之一的硬件地址覆蓋從屬設備的原地址。就像是在服務器上不同的人使用不同的硬件地址一樣。
這些選項可以用命令:# modinfo bonding 來查看
最后,在/etc/rc.local中加入
modprobe bonding miimon=100 mode=1
重啟機器后可以看到虛擬網卡已經生效,可以通過插拔兩個物理網卡的網線來進行測試,不過linux中網卡接管的時間好象比較長
from:http://www.360doc.com/content/10/1016/14/1317564_61486325.shtml
====================================================
需要說明的是如果想做成負載均衡,僅僅設置這里modprode bonding miimon=100 mode=0是不夠的,還需要設置交換機的端口.
從原理分析一下(bond運行在mode 0下):
mode 0下bond所綁定的網卡的IP都被修改成一樣的mac地址,如果這些網卡都被接在同一個交換機,那么交換機的arp表里這個mac地址對應的端口就有多個,那么交換機接受到發往這個mac地址的包應該往哪個端口轉發呢?正常情況下mac地址是全球唯一的,一個mac地址對應多個端口肯定使交換機迷惑了。
所以mode0下的bond如果連接到交換機,交換機這幾個端口應該采取聚合方式(cisco稱為ethernetchannel,foundry稱為portgroup),因為交換機做了聚合后,聚合下的幾個端口也被捆綁成一個mac地址
由於家里沒有三層交換機,這里的試驗留給網友自行驗證了.
====================================================
在 /etc/rc.local 文件里加上一行:
/root/bonding.sh
bonding.sh文件內容:
#!/bin/sh
modprobe -r bonding
modprobe bonding miimon=100 mode=6
ifconfig bond0 172.16.96.46 netmask 255.255.248.0 up
route add default gw 172.16.100.1 bond0
#ifenslave bond0 eth0 eth1 eth2 eth3 eth4 eth5
ifenslave bond0 eth0 eth1
service network restart
http://candon123.blog.51cto.com/704299/402677/