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


現在很多服務器都自帶雙千兆網口,利用網卡綁定既能增加網絡帶寬,同時又能做相應的冗余,目前應用於很多的場景。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在本地系統發送出的請求,用其中一個設備的硬件地址覆蓋從屬設備的原地址。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

常用的是模式0和模式1,通常使用模式0。

  mode=1:在主備模式下,只有主網卡eth0工作,eth1作為備份網卡是不工作的,只有當一個網絡接口失效時(例如交換機掉電等),為了不會出現網絡中斷,系統會按照配置指定的網卡順序啟動工作,保證機器仍能對外服務,起到了失效保護功能。
  mode=0:在負載均衡模式下,兩塊網卡都工作,提供兩倍帶寬。
四、  Bonding 的配置
1、選擇2個自己需要的網口,查看有哪些網口
[root@studying ~]# ifconfig  -a
 
2、編輯網口的配置文件
[root@studying ~]# cd  /etc/sysconfig/network-scripts
 
[root@studying network-scripts]# cat  ifcfg-eth0
DEVICE=eth0               #網口名eth0
TYPE=Ethernet            #以太網接口
ONBOOT=yes              #LINUX在啟動時激活該網口
BOOTPROTO=none    #使用什么協議激活網口
                                               none表示不使用任何協議
                                               static表示設置靜態IP
                                               dhcp表示動態獲取IP
MASTER=bond0         #指定虛擬網口的名字(主人)
SLAVE=yes                  #備用(從設備)
 
[root@studying network-scripts]# cat  ifcfg-eth1
DEVICE=eth1               #網口名eth1
TYPE=Ethernet            #以太網接口
ONBOOT=yes              #LINUX在啟動時激活該網口
BOOTPROTO=none    #使用什么協議激活網口
                                              none表示不使用任何協議
                                              static表示設置靜態IP
                                              dhcp表示動態獲取IP
MASTER=bond0         #指定虛擬網口的名字
SLAVE=yes                  #備用
備注:eth0、eth1的MASTER(主人)是bond0,本身是屬於從設備作為bond0的SLAVE(備用)
 
[root@studying network-scripts]# cat  ifcfg-bond0
DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.11.99
NETMASK=255.255.0.0
GATEWAY=172.16.1.1
4、關閉NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
5、加載bond模塊
modprobe bonding miimon=100 mode=0
6、配置bonding
[root@studying network-scripts]# vim  /etc/modprobe.d/bond.conf
末尾增加以下兩行
alias bond0 bonding
options bond0 miimon=100 mode=0
說明:miimon是用來進行鏈路監測的。 比如:miimon=100,那么系統每100ms監測一次鏈路連接狀態,如果有一條線路不通就轉入另一條線路;mode的值表示工作模式,常用的為0,1兩種。mode=0表示load balancing (round-robin)為負載均衡方式,兩塊網卡都工作。mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主備的工作方式,也就是說默認情況下只有一塊網卡工作,另一塊做備份. bonding只能提供鏈路監測,即從主機到交換機的鏈路是否接通。如果只是交換機對外的鏈路down掉了,而交換機本身並沒有故障,那么bonding會認為鏈路沒有問題而繼續使用,Bond配置完成。
 
7、在/etc/rc.d/rc.local文件中加入如下語句,是系統啟動自動運行
ifenslave  bond0  eth0  eth1
#route  add  -net 172.16.0.0  netmask  255.255.0.0  bond0---如果有需要添加該路由
 
5、reboot重啟
 
6、如果查看當前哪個網口是主用網口
[root@studying ~]# cat  /proc/net/bonding/bond0

 

 

 


免責聲明!

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



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