Linux下雙網卡綁定(bonding技術)


http://www.cnblogs.com/qmfsun/p/3810905.html

 

Linux網卡綁定探析

 

2013-08-20 15:39:31

現在很多服務器都自帶雙千兆網口,利用網卡綁定既能增加網絡帶寬,同時又能做相應的冗余,目前應用於很多的場景。linux操作系統下自帶的網卡綁定模式,Linux bonding驅動提供了一個把多個網絡接口設備捆綁為單個網絡接口設置來使用,用於網絡負載均衡及網絡冗余。當然現在網卡產商也會出一些針對windows操作系統網卡管理軟件來做網卡綁定(windows操作系統沒有網卡綁定功能 需要第三方支持)。

我們公司是做分布式文件系統的,很多項目都用到網卡綁定來提高性能。在網絡找了很多資料,也做了大量的測試,下面就網卡綁定談一下自己的看法。

一、 Bonding的應用

1、 網絡負載均衡

對於bonding的網絡負載均衡是我們在文件服務器中常用到的,比如把三塊網卡,當做一塊來用,解決一個IP地址,流量過大,服務器網絡壓力過大的問題。如果在內網中,文件服務器為了管理和應用上的方便,大多是用同一個IP地址。對於一個百M的本地網絡來說,文件服務器在多個用戶同時使用的情況下,網絡壓力是極大的,為了解決同一個IP地址,突破流量的限制,畢竟網線和網卡對數據的吞吐量是有限制的。如果在有限的資源的情況下,實現網絡負載均衡,最好的辦法就是bonding 。

2、 網絡冗余

對於服務器來說,網絡設備的穩定也是比較重要的,特別是網卡。大多通過硬件設備的冗余來提供服務器的可靠性和安全性,比如電源。bonding 也能為網卡提供冗余的支持。把網個網卡綁定到一個IP地址,當一塊網卡發生物理性損壞的情況下,另一塊網卡也能提供正常的服務。

二、 Bonding的原理

什么是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對於別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱為混雜promisc的模式,可以接 收網絡上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的 Mac地址改成相同,可以接收特定mac的數據幀。然后把相應的數據幀傳送給bond驅動程序處理。

三、 Bonding的模式

linux有七種網卡綁定模式:

模式代號

模式名稱

模式方式

說明

0

(balance-rr) Round-robin policy

輪詢策略

該策略是按照設備順序依次傳輸數據包,直到最后一個設備。這種模式提供負載均衡和容錯能力。

1

(active-backup) Active-backup policy

主備策略

該策略只有一個設備處於活動狀態。 一個宕掉另一個馬上由備份轉換為主設備。mac地址是外部可見的。 此模式提供了容錯能力。

2

(balance-xor) XOR policy

異或策略

該策略是根據MAC地址異或運算的結果來選擇傳輸設備,提供負載均衡和容錯能力。

3

Broadcast policy

廣播策略

該策略將所有數據包傳輸給所有接口通過全部設備來傳輸所有數據,提供容錯能力。

4

(802.3ad) IEEE 802.3ad Dynamic link aggregation

動態鏈接聚合

該策略通過創建聚合組來共享相同的傳輸速度,需要交換機也支持 802.3ad 模式,提供容錯能力。

5

(balance-tlb) Adaptive transmit load balancing

適配器傳輸負載均衡

該策略是根據當前的負載把發出的數據分給每一個設備,由當前使用的設備處理收到的數據。本策略的通道聯合不需要專用的交換機支持,提供負載均衡和容錯能力。

 

6

(balance-alb) Adaptive load balancing

適配器負載均衡

該策略在IPV4情況下包含適配器傳輸負載均衡策略,由ARP協商完成接收的負載,通道聯合驅動程序截獲ARP在本地系統發送出的請求,用其中一個設備的硬件地址覆蓋從屬設備的原地址。

 

 

 

1.編輯虛擬網卡band0的配置文件ifcfg-bond0,加入以下內容:

2、編輯各個網卡的配置文件,這里用eth1和eth2。

3、修改/etc/modprobe.conf 文件,加入以下內容:

注: 
(1)、miimon 是鏈路監測的時間間隔單位是毫秒,miimon=100的意思就是,每100毫秒檢測網卡和交換機之間是否連通,如不通則使用另外的鏈路。 
(2)、mode=0 表示負載均衡方式,兩塊網卡都工作,需要交換機作支持。 
          mode=1 表示冗余方式,網卡只有一個工作,一個出問題啟用另外的。 
          mode=6 表示負載均衡方式,兩塊網卡都工作,不需要交換機作支持。

4、重啟網絡:

5、查看bond0的工作狀態:

6、查看綁定后的結果:

總之,網卡綁定就是多張網卡邏輯上作為一張網卡用。可分為,負載均衡綁定和冗余綁定兩種。

 

 

Redhat Linux網卡配置與綁定

 

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網卡

最后,在/etc/rc.local中加入

modprobe bonding miimon=100 mode=1

重啟機器后可以看到虛擬網卡已經生效,可以通過插拔兩個物理網卡的網線來進行測試,不過linux中網卡接管的時間好象比較長

 
 

Linux系統下雙網卡bonding的配置方法

進入 /etc/sysconfig/network-scripts 目錄下創建一個文件 ifcfg-bond0或cp ifcfg-eth0 ifcfg-bond0

Vi  ifcfg-bond0 編輯內容如下

DEVICE=bond0

BOOTPROTO=static

IPADDR=192.168.10.1

NETMASK=255.255.255.0

GATEWAY=192.168.10.254

ONBOOT=yes

TYPE=Ethernet

 

VI   ifcfg-eth0  編輯內容如下

DEVICE=eth0

BOOTPROTO=static

ONBOOT=yes

MASTER=bond0

SLAVE=yes

 

VI  ifcfg-eth1  編輯內容如下

DEVICE=eth1

BOOTPROTO=static

ONBOOT=yes

MASTER=bond0

SLAVE=yes

 

編輯 vi /etc/ modprobe.conf

在最后面加入

alias bond0 bonding

options bond0 miimon=100 mode=0

說明: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會認為鏈路沒有問題而繼續使用,Bond配置完成

 

重啟網絡即可 service  network  restart

 

查看 /proc/net/bonding/目錄下bond0文件,能看到雙網卡的運行狀態

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

 

linux雙網卡綁定概念以及介紹:

 

linux設置bond網卡綁定

Linux雙網卡綁定實現就是使用兩塊網卡虛擬成為一塊網卡;linux設置bond網卡綁定---有些用。
Linux雙網卡綁定實現就是使用兩塊網卡虛擬成為一塊網卡,這個聚合起來的設備看起來是一個單獨的以太網接口設備,通俗點講就是兩塊網卡具有相同的IP地址而並行鏈接聚合成一個邏輯鏈路工作。其實這項 技術在Sun和Cisco中早已存在,被稱為Trunking和Etherchannel技術,在Linux的2.4.x的內核中也采用這這種技術,被稱為bonding。bonding技術的最早應用是在集群——beowulf上,為了提高集群節點間的數據傳輸而設計的。下面我們討論一下bonding 的原理,什么是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對於別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱為混雜promisc的模式,可以接收網絡上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的Mac地址改成相同,可以接收特定mac的數據幀。然后把相應的數據幀傳送給bond驅動程序處理。
說了半天理論,其實配置很簡單,一共四個步驟:
實驗的操作系統是Redhat Linux Enterprise 3.0
綁定的前提條件:芯片組型號相同,而且網卡應該具備自己獨立的BIOS芯片。
1.編輯虛擬網絡接口配置文件,指定網卡IP
vi /etc/sysconfig/ network-scripts/ ifcfg-bond0
[root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0
2 #vi ifcfg-bond0
將第一行改成 DEVICE=bond0
# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.31.0.13
NETMASK=255.255.252.0
BROADCAST=172.31.3.254
ONBOOT=yes
TYPE=Ethernet
這里要主意,不要指定單個網卡的IP 地址、子網掩碼或網卡 ID。將上述信息指定到虛擬適配器(bonding)中即可。
[root@rhas-13 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@rhas-13 network-scripts]# cat ifcfg-eth1
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
3 # vi /etc/modules.conf
編輯 /etc/modules.conf 文件,加入如下一行內容,以使系統在啟動時加載bonding模塊,對外虛擬網絡接口設備為 bond0
 
加入下列兩行
alias bond0 bonding
options bond0 miimon=100 mode=1
說明: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會認為鏈路沒有問題而繼續使用
4 # 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分別為0,1時的情況
mode=1工作在主備模式下,這時eth1作為備份網卡是no arp的
[root@rhas-13 network-scripts]# ifconfig 驗證網卡的配置信息
bond0 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:18495 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1587253 (1.5 Mb) TX bytes:89642 (87.5 Kb)
eth0 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:9572 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:833514 (813.9 Kb) TX bytes:89642 (87.5 Kb)
Interrupt:11
eth1 Link encap:Ethernet HWaddr 00:0E:7F:25 9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1
RX packets:8923 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:753739 (736.0 Kb) TX bytes:0 (0.0 b)
Interrupt:15
那也就是說在主備模式下,當一個網絡接口失效時(例如主交換機掉電等),不回出現網絡中斷,系統會按照cat /etc/rc.d/rc.local里指定網卡的順序工作,機器仍能對外服務,起到了失效保護的功能.
在mode=0 負載均衡工作模式,他能提供兩倍的帶寬,下我們來看一下網卡的配置信息
[root@rhas-13 root]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:2817 errors:0 dropped:0 overruns:0 frame:0
TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:226957 (221.6 Kb) TX bytes:15266 (14.9 Kb)
eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1406 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:113967 (111.2 Kb) TX bytes:7268 (7.0 Kb)
Interrupt:11
eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1411 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:112990 (110.3 Kb) TX bytes:7998 (7.8 Kb)
Interrupt:15
在這種情況下出現一塊網卡失效,僅僅會是服務器出口帶寬下降,也不會影響網絡使用.

通過查看bond0的工作狀態查詢能詳細的掌握bonding的工作狀態
[root@rhas-13 bonding]# cat /proc/net/bonding/bond0
bonding.c:v2.4.1 (September 15, 2003)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Multicast Mode: all slaves
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0e:7f:25:d9:8a
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0e:7f:25:d9:8b
QuickLinux AS4 下網卡綁定實現負載均衡和失效保護
Linux下的的負載平衡(說白了就是n塊網卡邦定在一起當一個用速度變成原來的n倍)在linux下叫做bonding,理論就不說了,網上一大堆.網 上也有好多這樣的文章但是大多都和實際配置過程有些不同,下面說說在2.6內核的quicklinux AS4 上具體的實現方法。
第一步、編輯虛擬網絡接口配置文件。
建立 /etc/sysconfig/network-scripts/ifcfg-bond0 文件
內容如下:
DEVICE=bond0
IPADDR=192.168.0.1
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
NETWORK=192.168.0.1
ONBOOT=yes
ip地址根據自己的需要配置(一個簡單的方法就是拷貝一個ifcfg-eht0修改DEVICE=bond0)
第二步、編輯真實網卡的配置文件(建議修改之前做好備份)
/etc/sysconfig/network-scripts/ifcfg-eth*
內容如下
BOOTPROTO=none
TYPE=Ethernet
DEVICE=eth* (*與那個配置文件名中的相同)
ONBOOT=yes
MASTER=bond0
slave=yes
注意:真實網卡不能再設置ip地址了,按需要把所要綁定的真實網卡都按這個設置,主要是MASTER=bond0 和 slave=yes 一定不要弄錯(簡單的方法就是修改一個然后拷貝再修改)
第三步、修改/etc/modprobe.conf 文件加入如下兩行(建議做好備份)
alias bond0 bonding
options bond0 miimon=100 mode=0
注:1、miimon 是鏈路監測的時間間隔單位是毫秒,miimon=100的意思就是,每100毫秒檢測網卡和交換機之間是否連通,如不通則使用另外的鏈路。
2、mode=0 表示負載均衡方式,兩塊網卡都工作。
mode=1 表示冗余方式,網卡只有一個工作,一個出問題啟用另外的。
第四步、在/etc/rc.d/rc.local 加入如下一行(啟動時執行此行命令)
ifenslave bond0 eth0 eth1 …… eht*
重新啟動后負載平衡已經能正常工作。
但是還有需要注意的,就是shorewall防火牆的設置,這個設置最好在配置負載平衡前進行,因為 shorewall在webmin下配置最簡單,
負載平衡啟動后原來的設置的“網卡界面”里面的網卡就應該由eht* 改成了bond0 了 。不改設置全部通訊都會斷掉。
用service shorewall stop 也不能停掉防火牆,因為shorewall關掉后它就會啟動“關閉規則(routerstopped)”。“關閉規則”默認的是不允許任何通訊。
所以建議在配置負載平衡前建立防火牆規則。否則只能通過手工來改shorewall的配置文件了。
以上的實現方法已經在QuickLinux as4 2.6.11-8內核下實現,網卡為雙intel pro1000 速度相
當令人滿意,服務器雙網卡和兩台客戶計算機所都連接到同一個普通交換機上,兩台客戶機網同時從
SMB上用totle copy拷貝大文件速度都能達到10000KB/S以上。
Linux下雙網卡綁定實現負載均衡
我們在這介紹的Linux雙網卡綁定實現就是使用兩塊網卡虛擬成為一塊網卡,這個聚合起來的設備看起來是一個單獨的以太網接口設備,通俗點講就是兩塊網卡具有相同的IP地址而並行鏈接聚合成一個邏輯鏈路工作。其實這項技術在Sun和Cisco中早已存在,被稱為Trunking和Etherchannel技術,在Linux的2.4.x的內核中也采用這這種技術,被稱為bonding。
  bonding技術的最早應用是在集群——beowulf上,為了提高集群節點間的數據傳輸而設計的。下面我們討論一下bonding 的原理,什么是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對於別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱為混雜promisc的模式,可以接收網絡上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的Mac地址改成相同,可以接收特定mac的數據幀。然后把相應的數據幀傳送給bond驅動程序處理。說了半天理論,其實配置很簡單,一共四個步驟: 實驗的操作系統是Redhat Linux Enterprise 3.0。綁定的前提條件:芯片組型號相同,而且網卡應該具備自己獨立的BIOS芯片。

  雙網卡邦定的拓朴圖
1.編輯虛擬網絡接口配置文件,指定網卡IP:

vi /etc/sysconfig/ network-scripts/ ifcfg-bond0
[root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0

2、#vi ifcfg-bond0
將第一行改成 DEVICE=bond0:

# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.31.0.13
NETMASK=255.255.252.0
BROADCAST=172.31.3.254
ONBOOT=yes
TYPE=Ethernet

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

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

3、# vi /etc/modules.conf
編輯 /etc/modules.conf 文件,加入如下一行內容,以使系統在啟動時加載bonding模塊,對外虛擬網絡接口設備為 bond0.加入下列兩行:

alias bond0 bonding
options bond0 miimon=100 mode=1

 

 

  1. Linux下的雙網卡綁定  
  2. 將eth0,eth1綁定為bond0 ,節點內部通信用,使用192.168.1.0網段。  
  3. 將eth2,eth3綁定為bond1 ,對外服務,使用10.12*.*.0網段。注意將*替換成實際IP地址。  
  4.   
  5. 操作系統版本為:Red Hat Enterprise Linux AS release 4 (Nahant Update 7)  
  6.   
  7. <1>  
  8. 將eth0,eth1綁定為bond0  
  9.   
  10. vi /etc/sysconfig/network-scripts/ifcfg-bond0  
  11.   
  12. DEVICE=bond0  
  13. BOOTPROTO=none  
  14. ONBOOT=yes  
  15. TYPE=Ethernet  
  16. USERCTL=no  
  17. IPADDR=192.168.1.2  
  18. NETMASK=255.255.255.0  
  19. NETWORK=192.168.1.0  
  20. BROADCAST=192.168.1.255  
  21.   
  22.   
  23. vi /etc/sysconfig/network-scripts/ifcfg-eth0  
  24. DEVICE=eth0  
  25. BOOTPROTO=none  
  26. ONBOOT=yes  
  27. USERCTL=no  
  28. MASTER=bond0  
  29. SLAVE=yes  
  30. 注:不要有實際網卡的MAC地址。  
  31.   
  32. vi /etc/sysconfig/network-scripts/ifcfg-eth1  
  33. DEVICE=eth1  
  34. BOOTPROTO=none  
  35. ONBOOT=yes  
  36. USERCTL=no  
  37. MASTER=bond0  
  38. SLAVE=yes  
  39.   
  40.   
  41. <2>  
  42. 將eth2,eth3綁定為bond1  
  43.   
  44. vi /etc/sysconfig/network-scripts/ifcfg-bond1  
  45.   
  46. DEVICE=bond1  
  47. BOOTPROTO=none  
  48. ONBOOT=yes  
  49. TYPE=Ethernet  
  50. USERCTL=no  
  51. IPADDR=10.12*.*.61  
  52. NETMASK=255.255.255.0  
  53. NETWORK=10.12*.*.0  
  54. BROADCAST=10.12*.*.255  
  55. GATEWAY=10.12*.*.254  
  56.   
  57. vi /etc/sysconfig/network-scripts/ifcfg-eth2  
  58. DEVICE=eth2  
  59. BOOTPROTO=none  
  60. ONBOOT=yes  
  61. USERCTL=no  
  62. MASTER=bond1  
  63. SLAVE=yes  
  64.   
  65.   
  66. vi /etc/sysconfig/network-scripts/ifcfg-eth3  
  67. DEVICE=eth3  
  68. BOOTPROTO=none  
  69. ONBOOT=yes  
  70. USERCTL=no  
  71. MASTER=bond1  
  72. SLAVE=yes  
  73.   
  74.   
  75. <3>  
  76.   
  77. 添加內核模塊:  
  78.   
  79. vi /etc/modprobe.conf  
  80. 添加  
  81. # BONDING  
  82. install bond0 /sbin/modprobe bonding -o bond0 mode=1 miimon=100  
  83. install bond1 /sbin/modprobe --ignore-install bonding -o bond1 mode=1 miimon=100  
  84.   
  85. note:  
  86. mode=0 : load balancing (round-robin)  
  87. mode=1 : fault-tolerance (active-backup)  
  88.   
  89.   
  90. 加入啟動項  
  91. vi /etc/rc.d/rc.local  
  92. ifenslave bond0 eth0 eth1  
  93. ifenslave bond1 eth2 eth3  
  94.   
  95. 啟動網卡  
  96. ifconfig bond0 192.168.1.2 up  
  97. ifenslave bond0 eth0 eth1  
  98.   
  99. ifconfig bond1 10.12*.*.61 up  
  100. ifenslave bond1 eth2 eth3  
  101.   
  102.   
  103. 重啟網絡服務或系統:  
  104. service network restart  
  105.   
  106.   
  107. 查看綁定網卡工作狀況:  
  108. cat /proc/net/bonding/bond0  
  109. cat /proc/net/bonding/bond1  
  110.   
  111.   
  112. ************************************************************  
  113.   
  114. linux4.7上,使用如下方式配置,當設置兩個或以上bond時,bond網卡的工作模式會有問題,並且第二個bond配置不工作:  
  115.   
  116. vi /etc/modprobe.conf  
  117. 添加  
  118. # BONDING  
  119. alias bond1 bonding  
  120. options bond1 mode=1 miimon=100  

 

 

CentOS6.2網卡綁定配置

 

下面主要介紹在CentOS6.2下使用系統自帶的bonding進行網卡綁定的詳細步驟,在此之前你可以看一下Linux網卡綁定探析,你也可以使用網卡綁定的腳本進行網卡綁定操作。

注意:請在配置前關閉NetworkManager服務

[root@h63 ~]# service NetworkManager status && service NetworkManager start

網卡綁定一次可以綁定多個網卡,你可以使用ifconfig -a查看你的網卡信息,例如:

[root@h63 ~]# ifconfig -a
em1       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:03
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:48236002 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16156472 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4838973371 (4.5 GiB)  TX bytes:1301118550 (1.2 GiB)
          Interrupt:36 Memory:d6000000-d6012800

em2       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:05
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:42385720 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7283526 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4307780986 (4.0 GiB)  TX bytes:466840625 (445.2 MiB)
          Interrupt:48 Memory:d8000000-d8012800

em3       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:07
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:32 Memory:da000000-da012800

em4       Link encap:Ethernet  HWaddr 78:2B:CB:30:08:09  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:42 Memory:dc000000-dc012800 

這里有4個網卡,分別是em1、em2、em3和em4,我們把em1和em2做一個綁定,綁定模式為6(關於網卡綁定模式的介紹請看Linux網卡綁定探析),首先我給給網卡綁定后的設備起個名字bond0(名稱可以自定義),並創建:

[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0        #設備名稱
BOOTPROTO=static      #靜態IP
ONBOOT=yes          #自動啟動
IPADDR=172.16.16.63    #設備綁定的IP
GATEWAY=172.16.23.254       #設備綁定的網關
NETMASK=255.255.248.0    #設備綁定的掩碼
TYPE=Ethernet         #設備綁定的類型

編輯需要綁定的網卡:

[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em1

DEVICE=em1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0  #綁定后的設備名稱
SLAVE=yes
TYPE=Ethernet

[root@h63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-em2

DEVICE=em2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0  #綁定后的設備名稱
SLAVE=yes
TYPE=Ethernet

說明:配置網卡時不要填寫IP地址和MAC地址

配置加載模式設置:

[root@h63 ~]# vim /etc/modprobe.conf

alias bond0 bonding
options bond0 miimon=100 mode=6

說明:mode是網卡綁定的模式,此處是模式6

也可以在/etc/modprobe.d/下創建一個文件:

[root@h63 ~]# vim /etc/modprobe.d/bond

alias bond0 bonding
options bond0 miimon=100 mode=6

綁定配置完成,重啟網絡服務

[root@h63 ~]#service network restart

查看網卡綁定的情況:

[root@h63 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: em1
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: 78:2b:cb:30:08:03
Slave queue ID: 0


Slave Interface: em2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 78:2b:cb:30:08:05
Slave queue ID: 0

至此,網卡綁定就完成了。 

 
 
 
CetOS(RHEL) 5.3下網卡綁定設置指南 

修改三類文件:

/etc/sysconfig/network-scripts/下的ifcfg-*文件

/etc/modprobe.conf文件

/etc/init.d/rc.local文件


設置方法:

1. 環境:windows xp+vmware, centos 5.3, 4塊網卡,做兩組綁定。

當前網卡:eth0-3

綁定后虛擬網卡:bond0-1

eth0、eth2綁定為bond0,eth1、eth3綁定為bond1,不同網段。


2. 修改ifcfg-*文件

增加ifcfg-bond0、ifcfg-bond1兩個文件:

文件內容:
[root@localhost network-scripts]# cat ifcfg-bond0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=bond0
BOOTPROTO=none

IPADDR=192.168.100.101
NETMASK=255.255.255.0

NETWORK=192.168.100.0
ONBOOT=yes
USERCTL=no
TYPE=Ethernet
GATEWAY=192.168.100.101


[root@localhost network-scripts]# cat ifcfg-bond1
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=bond1
BOOTPROTO=none

IPADDR=172.16.0.1
NETMASK=255.255.255.0

NETWORK=172.16.0.0
ONBOOT=yes
USERCTL=no
#TYPE=Ethernet
TYPE=Ethernet


修改ifcfg-eth0、ifcfg-eth1、ifcfg-eth2、ifcfg-eth3四個網卡配置文件:

內容:

[root@localhost network-scripts]# cat ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none

ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth1
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth1
BOOTPROTO=none

ONBOOT=yes
USERCTL=no
MASTER=bond1
SLAVE=yes

TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth2
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth2
BOOTPROTO=none

ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

TYPE=Ethernet

[root@localhost network-scripts]# cat ifcfg-eth3
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth3
BOOTPROTO=none

ONBOOT=yes
USERCTL=no
MASTER=bond1
SLAVE=yes

TYPE=Ethernet

3. 修改/etc/modprobe.conf文件

[root@localhost network-scripts]# cat /etc/modprobe.conf
alias eth0 pcnet32
alias eth1 pcnet32
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias eth2 pcnet32
alias eth3 pcnet32
alias bond0 bonding
options bond0 miimon=100 mode=0
alias bond1 bonding
options bond1 miimon=100 mode=0
 


4. 修改/etc/rc.d/rc.local文件
[root@localhost network-scripts]# cat /etc/rc.d/rc.local 
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
modprobe bonding miimon=100 mode=0 


5. 測試

方法1:檢查網絡配置是否正常,是否可啟動
/etc/init.d/network restart

方法2:檢查系統啟動時虛擬網卡是否正常啟動
reboot

方法3:檢查綁定網卡是負載均衡模式,還是主備冗余模式
cat /proc/net/bonding/bond0
cat /proc/net/bonding/bond1


6. 說明

如果是主備冗余模式,需將
options bond0 miimon=100 mode=0中

mode 改為1

其它改為
options bond0 miimon=100 mode=1 primary=eth0 

primary=eth0表示當前主網卡為eth0

其它在/etc/rc.d/rc.local中也修改
modprobe bonding miimon=100 mode=1
 
 
 
 
 
 

Linux雙網卡綁定——理論與實踐(實踐篇)

 

Linux雙網卡綁定的主要實現步驟為: 
1. 配置一個虛擬的網卡bond0 
2. 配置eth0,eth1為slave模式 
3. 加載bonding模塊 
4. 重啟系統

下面將詳細介紹每個步驟 
一. 配置虛擬網卡bond0

新建/etc/sysconfig/network-scripts/ifcfg-bond0文件,內容如下:

復制代碼
復制代碼
#bond0配置文件 
DEVICE=bond0 
BOOTPROTO=static 
IPADDR=192.168.0.100 
NETMASK=255.255.255.0 
BROADCAST=192.168.0.255 
GATEWAY=192.168.0.1 
ONBOOT=yes 
TYPE=Ethernet
復制代碼
復制代碼

 

二. 配置eth0,eth1為slave模式

更改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0

#eth0配置文件 
DEVICE=eth0 
BOOTPROTO=none  
SLAVE=yes  
MASTER=bond0 
USERCTL=yes


更改配置文件/etc/sysconfig/network-scripts/ifcfg-eth1

 

#eth1配置文件 
DEVICE=eth1 
BOOTPROTO=none  
SLAVE=yes  
MASTER=bond0 
USERCTL=yes


三. 加載bonding模塊

修改模塊配置文件/etc/modprobe.conf,在最后加入以下內容:

alias bond0 bonding 
options bond0 miimon=100 mode=0 

 

四. 重啟系統

重啟之后,測試bonding是否正常運行,運行ifconfig命令,結果如下

復制代碼
復制代碼
[root@linux ~]# ifconfig 
bond0     Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
          inet6 addr: fe80::20c:29ff:fe45:b4d1/64 Scope:Link 
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1 
          RX packets:100 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:130 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:0 
          RX bytes:17527 (17.1 KiB)  TX bytes:20937 (20.4 KiB) eth0      Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
          RX packets:65 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:10340 (10.0 KiB)  TX bytes:15317 (14.9 KiB) 
          Interrupt:18 Base address:0x1080 eth1      Link encap:Ethernet  HWaddr 00:0C:29:45:B4:D1  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1 
          RX packets:40 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:40 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:7487 (7.3 KiB)  TX bytes:7022 (6.8 KiB) 
          Interrupt:19 Base address:0x1400
復制代碼
復制代碼


運行cat /proc/net/bonding/bond0,結果如下:

復制代碼
復制代碼
[root@linux ~]# cat /proc/net/bonding/bond0 

Ethernet Channel Bonding Driver: v3.3.0 (June 10, 2008)

Bonding Mode: load balancing (round-robin) 
MII Status: up 
MII Polling Interval (ms): 100 
Up Delay (ms): 0 
Down Delay (ms): 0

Slave Interface: eth0 
MII Status: up 
Link Failure Count: 0 
Permanent HW addr: 00:0c:29:45:b4:d1

Slave Interface: eth1 
MII Status: up 
Link Failure Count: 0 
Permanent HW addr: 00:0c:29:45:b4:db
復制代碼
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM