1. 程式人生 > 其它 >【硬體相關】網絡卡bond配置

【硬體相關】網絡卡bond配置

一、前言

參考文件:
Redhat:7.7. Using Channel Bonding

本文主要闡述如何配置網絡卡bond,以及不同bond模式區別差異

bonding是Linux提供的一種技術,它可以將兩個以上的網路介面繫結為一個邏輯介面,實現網路冗餘、負載均衡,總共支援以下7種模式

mode policy 模式特點 實現效果 交換機支援
0 balance-rr 輪詢模式,資料包從不同slave介面依次輪詢傳輸,
同一時刻只有一個slave網路介面工作
網路冗餘
負載均衡
需要
1 active-backup 主備模式,只有一個slave介面處於活躍狀態,只有
當主介面異常之後,備接口才會啟用工作
網路冗餘 不需要
2 balance-xor 基於指定的傳輸hash策略傳輸資料包 網路冗餘
負載均衡
需要
3 broadcast 在所有slave介面傳送所有資料包 網路冗餘 需要
4 802.3ad 需要交換機對所有slave介面建立埠組(lacp模式),
所有slave介面共享同樣的速率,根據傳輸頻寬自動匹配slave介面
網路冗餘
負載均衡
需要
5 balance-tlb 傳輸負載均衡模式,在每個slave介面上根據負載分配傳出
流量,若正在接收資料的slave故障,另一個slave接管失敗slave的MAC地址對外服務
網路冗餘
負載均衡
不需要
6 balance-alb 自適應性負載均衡模式,通過ARP協商實現接收和傳送負載均衡 網路冗餘
負載均衡
不需要

二、網絡卡配置

叢集存在兩張雙口萬兆網絡卡,分別使用兩張萬兆網絡卡其中一個口配置bond,實現網路聚合效果

1、CentOS


萬兆網絡卡01 萬兆網絡卡02
網絡卡名稱 enp2s0f0 enp130s0f0
bond配置 bond0 bond0

以下示例,將網絡卡enp2s0f0和網絡卡enp130s0f0聚合為bond0網絡卡,bond配置模式為bond6(mode=6

注:如需更改bond模式,則更改mode為對應數值即可

1、備份現有網絡卡配置資訊

[root@node118 network-scripts]# cp ifcfg-enp2s0f0 backup-ifcfg-enp2s0f0 
[root@node118 network-scripts]# cp ifcfg-enp130s0f0 backup-ifcfg-enp130s0f0 

2、新增以下網絡卡配置資訊,重啟網路服務即可

[root@node118 network-scripts]# cat ifcfg-enp2s0f0 
DEVICE=enp2s0f0
BOOTPROTO=none
ONBOOT=yes
NAME=enp2s0f0
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no


[root@node118 network-scripts]# cat ifcfg-enp130s0f0 
DEVICE=enp130s0f0
BOOTPROTO=none
ONBOOT=yes
NAME=enp130s0f0
TYPE=Ethernet
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no


[root@node118 network-scripts]# cat ifcfg-bond0 
DEVICE=bond0
NAME=bond0
TYPE=Ethernet
NM_CONTROLLED=no
USERCTL=no
ONBOOT=yes
BOOTPROTO=static
BONDING_OPTS='mode=6 miimon=100'
IPADDR=172.16.21.118
NETMASK=255.255.255.0
GATEWAY=172.16.21.205
DNS1=114.114.114.114
DNS2=8.8.8.8


[root@node118 network-scripts]# systemctl restart network

2、Ubuntu


萬兆網絡卡01 萬兆網絡卡02
網絡卡名稱 ens160 ens192
bond配置 bond0 bond0

以下示例,將網絡卡ens160和網絡卡ens192聚合為bond0網絡卡,bond配置模式為bond6(mode=6
注:如需更改bond模式,則更改mode為對應數值即可

1、安裝ifenslave軟體包

root@node180:~# apt-cache search ifenslave
ifenslave - configure network interfaces for parallel routing (bonding)

root@node180:~# apt-get install ifenslave

2、備份現有網絡卡配置

root@node180:/etc/network# cp interfaces interfaces.bak

3、新增以下網絡卡配置檔案,重啟網路服務即可

root@node180:~# cat /etc/network/interfaces
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto ens160
iface ens160 inet manual
bond-master bond0

auto ens192
iface ens192 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 172.16.21.180
netmask 255.255.255.0
network 172.16.21.0
broadcast 172.16.21.255
gateway 172.16.21.205
dns-nameservers 114.114.114.114 8.8.8.8

bond-slaves none
bond-miimon 100
bond-mode 6

root@node180:~# /etc/init.d/networking restart

三、交換機配置

以bond4模式舉例,除了網絡卡配置資訊修改之外,同時需要修改交換機配置,示例為華為交換機(S6720-54C-EI-48S-AC)

1、配置說明

  • 筆記本通過Console線連線至交換機COM口,通過xshell連線至除錯會話
    注:
    1、可通過裝置管理器檢視COM埠號
    2、傳輸協議為SERIAL,波特率為9600,其他引數值為預設即可
    3、華為交換機預設使用者密碼為admin/[email protected]
  • 執行system-view命令進入乙太網埠檢視
<HUAWEI>system-view 
Enter system view, return user view with Ctrl+Z.
[HUAWEI]
  • 執行interface Eth-Trunk {埠組ID}命令進入鏈路聚合埠,執行mode lacp命令將埠組設定模式為LACP
[HUAWEI]interface Eth-Trunk 10
[HUAWEI-Eth-Trunk10]mode lacp 
[HUAWEI-Eth-Trunk10]display this
#
interface Eth-Trunk10
 mode lacp
#
return
[HUAWEI-Eth-Trunk10]quit
  • 執行interface XGigabitEthernet 0/0/{交換機埠號}進入交換機埠,執行eth-trunk {埠組ID}將當前交換機埠加入埠組
    注:如需取消設定,則執行undo eth-trunk即可
[HUAWEI]interface XGigabitEthernet 0/0/42
[HUAWEI-XGigabitEthernet0/0/42]eth-trunk 10
[HUAWEI-XGigabitEthernet0/0/42]display this
#
interface XGigabitEthernet0/0/42
 eth-trunk 10
#
return
  • 執行display eth-trunk檢視當前埠組配置
    注:需要把對應節點網絡卡配置修改為bond4,此時檢視對應埠組埠狀態為Selected
[HUAWEI]display eth-trunk
Eth-Trunk80's state information is:
Local:
LAG ID: 80                  WorkingMode: LACP                                 
Preempt Delay: Disabled     Hash arithmetic: According to SIP-XOR-DIP         
System Priority: 32768      System ID: 1856-4421-3090                         
Least Active-linknumber: 1  Max Active-linknumber: 8                         
.
Operate status: up          Number Of Up Port In Trunk: 4                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
XGigabitEthernet0/0/7  Selected 10GE     32768   1      20545   10111100  1     
XGigabitEthernet0/0/9  Selected 10GE     32768   2      20545   10111100  1     
XGigabitEthernet0/0/3  Selected 10GE     32768   3      20545   10111100  1     
XGigabitEthernet0/0/8  Selected 10GE     32768   4      20545   10111100  1     

Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
XGigabitEthernet0/0/7  65535    6891-d066-f634  255     1      15      10111100
XGigabitEthernet0/0/9  65535    6891-d066-f634  255     2      15      10111100
XGigabitEthernet0/0/3  65535    6891-d066-f634  255     3      15      10111100
XGigabitEthernet0/0/8  65535    6891-d066-f634  255     4      15      10111100

Eth-Trunk81's state information is:
Local:
LAG ID: 81                  WorkingMode: LACP                                 
Preempt Delay: Disabled     Hash arithmetic: According to SIP-XOR-DIP         
System Priority: 32768      System ID: 1856-4421-3090                         
Least Active-linknumber: 1  Max Active-linknumber: 8                          
Operate status: up          Number Of Up Port In Trunk: 2                     
--------------------------------------------------------------------------------
ActorPortName          Status   PortType PortPri PortNo PortKey PortState Weight
XGigabitEthernet0/0/5  Selected 10GE     32768   5      20801   10111100  1     
XGigabitEthernet0/0/1  Selected 10GE     32768   6      20801   10111100  1     

Partner:
--------------------------------------------------------------------------------
ActorPortName          SysPri   SystemID        PortPri PortNo PortKey PortState
XGigabitEthernet0/0/5  65535    6891-d067-426c  255     1      15      10111100
XGigabitEthernet0/0/1  65535    6891-d067-426c  255     2      15      10111100

四、相關說明

1、測試總結

1.1、分析說明

  • 1) bond0

a. 使用兩個網口輪詢傳送,提高發送能力,使用兩個服務端時,能夠達到理論上的頻寬的極限2G.但由於是輪詢傳送,會出現包亂序,導致重發。當傳送請求給兩個服務端時,從dstat來看流量,出口的頻寬已經達到極限

而iperf的結果看,每個服務端接收的流量只有8.7Gbit

抓包檢視有亂序和重發的現象,所以,應用不能使用到所有網口的頻寬。

b. 只有兩個節點時,傳送時輪詢傳送,效能的瓶頸在接收端。交換機在某一個時間段只往一個埠傳送包,這個時候傳送端兩個口總共只能傳送1G的流量。

  • 2) bond4

a. 兩個節點分別使用4個萬兆網口做bond4,由於所有slave介面MAC地址一樣,兩個節點對跑iperf時,只有1個萬兆網口工作,無法發揮4個萬兆網口的效能
注:如需發揮4個萬兆網口bond4效能,則需用4臺萬兆客戶端iperf壓測

[root@node85 ~]# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
4: enp24s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
5: enp24s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
6: enp25s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
7: enp25s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
8: enp59s0f0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP group default qlen 1000
    link/ether 68:91:d0:67:42:6c brd ff:ff:ff:ff:ff:ff
9: enp59s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP group default qlen 1000
    link/ether 68:91:d0:67:42:6c brd ff:ff:ff:ff:ff:ff
10: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 68:91:d0:66:f6:34 brd ff:ff:ff:ff:ff:ff
    inet 172.16.21.85/24 brd 172.16.21.255 scope global bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::6a91:d0ff:fe66:f634/64 scope link 
       valid_lft forever preferred_lft forever
11: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 68:91:d0:67:42:6c brd ff:ff:ff:ff:ff:ff
    inet 172.16.33.85/24 brd 172.16.33.255 scope global bond1
       valid_lft forever preferred_lft forever
    inet6 fe80::6a91:d0ff:fe67:426c/64 scope link 
       valid_lft forever preferred_lft forever
  • 3) bond5

a. bond5通過MAC地址來均衡出口的頻寬。但在傳送arp報文時,只發送一個埠的地址。所以入口的流量只走一個口。當兩個節點時,接收端的頻寬上限只有1G,客戶端理論上限也只有1G,兩個節點作為客戶端相似.

b. 兩個節點作為服務端時,bond5可以利用到兩個埠的頻寬,bond5通過演算法來均衡出口的頻寬,所以出口頻寬能達到2G.

  • 4) bond6

a. bond6是在bond0的基礎上,增加接收的負載均衡。bond6可以截獲arp的報文,通過修改MAC地址,使不同客戶端的可以跟不同埠進行通訊。當只有兩個節點時,客戶端收到arp地址只有一個,服務端接收的流量最大也只有1G.

b.使用2個客戶端或者2個服務端測試,客戶端和服務端都能利用到兩個接收發送的埠,所以頻寬都能達到2G.

1.2、分析總結

從上面的測試來看,bond0由於本身的機制,容易出現重發影響效能的缺點,並且,bond0本身沒有定義入口流量的均衡,效能的瓶頸在入口流量;bond5同理,入口的頻寬限制了網路的效能;
bond6在bond5的基礎上增加接收能力,在三節點以上規模的節點,出入口的流量都能達到2G的頻寬上限,但實際使用中發現網路流量並不穩定;
綜上所述,在條件允許情況下,要想實現網路冗餘和網路聚合效果,推薦使用bond4配置

注:bond0、bond4需要交換機支援(交換機埠繫結),bond5、bond6無需交換機支援(軟體配置即可)