先看看普通網卡IP位址的配置,修改/etc/sysconfig/network-scripts/ifcfg-eth0檔案内容為:
RHEL6下bond的雙網卡綁定服務
操作步驟和注意事項如下:
1、注意事項:
a、首先确認要綁定的是哪2個網口,避免綁定時綁錯網口。最好綁定為不同實體網卡,比如eth0--eth3在一個實體網卡上,eth4--eth7在另一個實體網卡上,<在系統中判定網卡是否為同一張網卡根據MAC位址确認,MAC位址中隻有最後一位不同的就屬于同一個網卡>。綁定可以考慮eth0和eth4為一組,這樣即使網卡出現問題也有備援。
以上例子可以看出eth0和eth1的MAC位址是排序差一位,是以eth0和eth1是在一塊實體網卡上,而eth5和eth7在另一塊實體網卡上。
其實到該步還不算完美,相應也同樣對應的是兩台交換件才達到完美備援;也就是說用eth0和eth5為一組綁定bond0,分别在同一台實體機上的不同實體網卡上,連接配接到不同的交換機上。這樣就完美了。(看下圖)好好想想是否是這樣呢~~~~
b、網卡配置檔案需要注意的地方為,在各個ethX網卡檔案中千萬不要把MAC位址給注釋掉,一定要保留。但是在bondX檔案中千萬不要有MAC位址有效行。
c、如果是做RAC服務,最好把正常通路的網絡和心跳網絡分開。心跳網絡要在交換機上在不同的vlan下(與正常網絡不在同一個網段),或者兩台主機的心跳網口直連即可。
心跳的bond網卡配置不要有網關。不然會和正常業務網絡發生沖突。
d、關閉和禁用開機啟動服務:NetworkManager服務。别問為什麼,關閉後會省去很多不必要的麻煩~~~~
2、說明:
這裡以綁定eth0和eth1的2個網口為例。
配置檔案都在/etc/sysconfig/network-scripts/目錄下。
操作步驟
綁定前需要徹底關閉NetwortManager服務,否則會和bond網卡沖突
1、編輯新的ifcfg-bond0檔案,一定不要有MAC存在。
cd/etc/sysconfig/network-scripts/
cp–rfifcfg-eth0ifcfg-bond0##複制ifcfg-eth0到ifcfg-bond0
ls##檢視檔案,即可看到有ifcfg-bond0檔案
增加或修改如下内容:
注釋:
#BONDING_OPTS=”mode=0 miimon=100” #負載模式(round-robin)。(交換機端口需要配置聚合模式)
#BONDING_OPTS=”mode=1 miimon=100 primary=eth0” ##主備模式(active-backup),設定eth0為主通信網口.(交換機端口需取消聚合模式,變為access模式)
儲存退出
2、分别編輯ifcfg-eth0和ifcfg-eth1檔案
注意:其他未要求設定網口,需将網卡配置檔案中的IPADDR、NETMASK、NETWORK、BROADCAST、GATEWAY全部屏蔽或去掉,MAC位址必須保留。以免硬碟網卡綁定,造成網卡順序漂移。
不過不用擔心,在linux系統中有個記錄eth裝置網卡名和MAC位址的對應關系表
在/etc/sysconfig/udev/rules.d/70-presistent-net.rules 内容見上圖截圖。
3、修改/etc/modprobe.d/dist.conf檔案,添加以下内容:
說明:
miimon是用來進行鍊路監測的。比如:miimon=100,那麼系統每100ms監測一次鍊路連接配接狀态,如果有一條線路不通就轉入另一條線路;
mode的值表示工作模式,他共有7種模式,常用的為0,1兩種,需根據交換機可提供的工作模式選擇。也可以選擇6是自适應模式。
mode=0表示loadbalancing(round-robin)為負載均衡方式,兩塊網卡都工作。
mode=1表示fault-tolerance(active-backup)提供備援功能,工作方式是主備的工作方式,也就是說預設情況下隻有一塊網卡工作,另一塊做備份。以下是0和1模式下的配置和交換機需要的配置:
#BONDING_OPTS=”mode=0 miimon=100” #負載模式(round-robin)。(交換機端口需要配置聚合模式)
※注意:
a、bonding隻能提供鍊路監測,即從主機到交換機的鍊路是否接通。如果隻是交換機對外的鍊路down掉了,而交換機本身并沒有故障,那麼bonding會認為鍊路沒有問題而繼續使用。
b、設定的模式要與交換機設定的模式一緻。
4、重新開機系統
系統啟動時,會自動加載bond子產品和激活備援網卡設定。可使用以下指令進行判斷:
#ifconfig
即可看到bond0的資訊,bond0會自動擷取eth0的MAC位址。
若确認bond0網卡已經激活,可通過插拔網線或ifdown ethX操作進行切換測試。在切換過程中,網絡連接配接正常即可。
以下截圖僅供參考:
例子一:單台主機
該例子中的網絡拓撲圖正如開頭所示。。。。。。
看mac位址和裝置名稱對應關系(不同顔色線條---MAC最後一位)
配置檔案:
mode=0(balance-rr)
表示負載分擔round-robin,并且是輪詢的方式比如第一個包走eth0,第二個包走eth1,直到資料包發送完畢。
優點:流量提高一倍
缺點:需要接入交換機做端口聚合,否則可能無法使用
核心文檔中有說明:bond0擷取mac位址有兩種方式,一種是從第一個活躍網卡中擷取mac位址,然後其餘的SLAVE網卡的mac位址都使用該mac位址;
另一種是使用fail_over_mac參數,是bond0使用目前活躍網卡的mac位址,mac位址或者活躍網卡的轉換而變。
配置完後的效果,(看綁定順序和MAC位址)
比較細心的人就會發現,bond0、eth0、eth1這組的三個網卡的MAC位址是一樣的。
綁定網卡後,在作業系統中檢視到的MAC位址是一樣的,那麼在交換機中查到的綁定網卡對應交換機端口學到的mac也是一樣的。
驗證:
可以down掉其中一塊網卡(或從主機端,或從交換機端),觀察ping的狀态~~~~
ping的測試: down掉其中一塊網卡後 依然生效
常見的幾種問題:
1、别的主機ping這台主機的ping包,丢1個、通一個。表示網卡負載模式失效。需要檢查交換機的port口是否是聚合模式和主機段的網卡是否出現問題。
文章末尾提供下:網卡綁定的所有模式參考(資料來自于RedHat官網):
Bonding的模式一共有7種:
#defineBOND_MODE_ROUNDROBIN 0 (balance-rr模式)網卡的負載均衡模式
#defineBOND_MODE_ACTIVEBACKUP 1 (active-backup模式)網卡的容錯模式
#defineBOND_MODE_XOR 2 (balance-xor模式)需要交換機支援
#defineBOND_MODE_BROADCAST 3 (broadcast模式)
#defineBOND_MODE_8023AD 4 (IEEE 802.3ad動态鍊路聚合模式)需要交換機支援
#defineBOND_MODE_TLB 5 自适應傳輸負載均衡模式
#defineBOND_MODE_ALB 6 網卡虛拟化方式
bonding子產品的所有工作模式可以分為兩類:多主型工作模式和主備型工作模式,balance-rr 和broadcast屬于多主型工作模式而active-backup屬于主備型工作模式。(balance-xor、自适應傳輸負載均衡模式(balance-tlb)和自适應負載均衡模式(balance-alb)也屬于多主型工作模式,IEEE 802.3ad動态鍊路聚合模式(802.3ad)屬于主備型工作模式。
詳細介紹這7種模式:
1、balance-rr (mode=0)
輪轉(Round-robin)政策:從頭到尾順序的在每一個slave接口上面發送資料包。本模式提供負載均衡和容錯的能力。
2、active-backup(mode=1)
活動-備份(主備)政策:在綁定中,隻有一個slave被激活。當且僅當活動的slave接口失敗時才會激活其他slave。為了避免交換機發生混亂此時綁定的MAC位址隻有一個外部端口上可見。在bongding的2.6.2及其以後的版本中,主備模式下發生一次故障遷移時,bonding将在新激活的slave上會送一個或者多個gratuitous ARP。bonding的主salve接口上以及配置在接口上的所有VLAN接口都會發送gratuitous ARP,隻要這些接口上配置了至少一個IP位址。VLAN接口上發送的的gratuitous ARP将會附上适當的VLAN id。本模式提供容錯能力,primary option,documented below會影響本模式的行為。
3、balance-xor(mode=2)
XOR政策:基于所選擇的傳送hash政策。
本模式提供負載均衡和容錯的能力。
4、broadcast(mode=3)
廣播政策:在所有的slave接口上傳送所有的封包。本模式提供容錯能力。
5、802.3ad(mode=4)
IEEE 802.3ad 動态鍊路聚合。建立共享相同的速率和雙工模式的聚合組。能根據802.3ad規範利用所有的slave來建立聚合鍊路。Salve的出站選擇取決于傳輸的hash政策,預設政策是簡單的XOR政策,而hash政策則可以通xmit_hash_policy選項加以改變。需要注意的是:不是所有的傳輸政策都與802.3ad相容,尤其是802.3ad标準的43.2.4章節中關于 packet mis-ordering要求的地方。不同個體的實作往往出現很大的不相容。
先決條件:
1. 每個slave的基本驅動支援Ehtool擷取速率和雙工狀态。
2.交換機支援IEEE 802.3ad動态鍊路聚合。大多數的交換機都需要使用某種配置方式來啟用802.3ad模式。IEEE 802.3ad 是執行鍊路聚合的标準方法
均衡算法一共為三種
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2" 2層模式=IP
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2+3" 2+3層模式 =MAC+IP
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4" 3+4層模式=IP+端口
6、balance-tlb(mode=5)
自适應傳輸負載均衡:信道綁定不需要特殊的交換機支援。出口流量的分布取決于目前每個slave的負載(計算相對速度)。進口流量從目前的slave的接收。如果接收salve出錯,其他的slave接管失敗的slave的MAC位址繼續接收。
先決條件:
每個slave的基本驅動支援Ehtool擷取速率狀态。
7、balance-alb(mode=6)
自适應負載均衡:包括balance-tlb(模式5)以及用于IPV4流量的接收負載均衡,并且不需要特殊的交換機支援。接收負載均衡通過ARP協商實作。bonding的驅動攔截本機發出的ARP Replies(ARP回應封包),并且用bond的某一個slave的硬體位址改寫ARP封包的源位址,使得本伺服器對不同的裝置使用不同的硬體位址。本伺服器建立的連接配接的接收流量也是負載均衡的。當本機發送ARP Request時,bonding驅動通過ARP封包複制并儲存節點的IP資訊。當從其他節點接收到ARP Reply,bonding驅動擷取節點的硬體位址并且會回應一個包含綁定好的slave的硬體位址的ARP Reply給發送的節點。用ARP協商的負載均衡的有一個問題是每次用bond的硬體位址廣播ARP封包,那麼其他節點發送的資料全部集中在一個slave上,處理ARP更新給其他所有節點的時候,每個節點會重新學習硬體位址,導緻流量重新配置設定。當新加入一個slave或者一個非激活的slave重新激活的時候也會導緻接收流量重新配置設定。接收流量負載是串行(輪轉)的配置設定在bond的一組速率最高的slave上。
當一個鍊路重連或者一個新的slave加入的時候,bond會重新初始化ARP Replies給所有的用戶端。updelay參數的值必須等于或者大于交換機的forwarding delay,以免ARP Replies被交換機阻塞。
1.每個slave的基本驅動支援Ehtool擷取速率狀态。
2. 基本驅動支援當裝置打開時重新設定硬體位址。也要求每一個slave具有唯一的硬體位址。如果curr_active_slave失敗,它的硬體位址被新選上的curr_active_slave硬體位址來替換。
寫在最後比較煩人的分工問題:
如何确定交換機端口與作業系統中網卡的對應關系:
方法1:mac位址比對法
在作業系統 未做任何網卡綁定操作前,把交換機上該端口學到mac位址, (一定是未做綁定前統計。如綁定後交換機端口學到的mac是一樣的)
與作業系統中查到的mac進行一一對比,進而确定交換機端口與作業系統中網卡的對應關系:
方法2:互相配合down/up法
1、記錄作業系統目前網卡的鍊路狀态;
a、在作業系統中使用“ifup 網卡名稱”指令,把所有網卡up下,
b、通過“ethtool 網卡名稱”确認鍊路狀态是否為yes,并記錄;
2、确定交換機端口對應的實體主機網卡
a、在交換機端down掉對應的端口(可以根據學到mac位址進行查找端口);
b、檢視作業系統中網卡的鍊路狀态;
以上反複操作可以确定:要綁定的交換機端口與作業系統中網卡的對應關系。
方法3:作業系統 獨立确定法
很多時候交換機操作劃分vlan端口,是不會與你溝通太多,比如提供mac位址等
在這種情況下(确定已經把那個端口綁定到指定的vlan、且綁定的ip位址已經存在)
就需要有自己确定資訊的方法、不斷嘗試了。
a、确定單網卡的網絡是否通;
所有鍊路up的網卡,配置下指定的ip位址,可以ping通網關代表網絡是通的,證明該網卡是劃分到vlan裡的。
例:作業系統中有4塊鍊路狀态UP的網卡(“ethtool 網卡名稱”),且已經在交換機劃分到vlan中。該vlan的ip位址已經知道
ifup eth0 ;激活eth0的網卡
ethtool eth0 ;檢視鍊路狀态(最後一行)是否為yes
如鍊路狀态up,配置eth0卡的ip位址(vlan對應位址-已經确定的)。如ping通網關,該網卡可用于雙網卡綁定;
b、如此上述操作後确定兩塊或多塊網卡後,就可以斷定是否用作綁定的網卡。