【硬體相關】網絡卡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無需交換機支援(軟體配置即可)