針對centos(Linux)多網卡bond綁定模式及其操做

1、簡介linux


 


2、模式vim

    注*建議學以前先看這個文章bash

    https://blog.51cto.com/sf1314/2071298服務器

 一、balance-rr網絡

 輪轉策略:按照順序輪流使用每一個接口來發送和接收數據包,提升了負載均衡的能力,可是須要交換機的支持,由於該模式全部端口的mac地址相同,交換機不能識別多個一個Mac地址對應多個端口,因此須要作鏈路聚合 ----Ethernet Channel併發

 mode=0負載均衡

 二、active-backupide

 主備策略:只使用其中一個網卡,當網卡損壞時激活另外的一個網卡oop

 mode=1性能

 三、balance-xor

 平衡策略: 基於所選擇的傳送hash策略

  mode=2   

 四、

 廣播策略:全部卡上都接收和發送報文,提升了容錯性

 mode=3

 五、802.3ad

鏈路聚合模式   

802.3ad策略: LACP 鏈路聚合模式,交換機得開啓鏈路聚合,將兩張網卡當作一張來使用,提升鏈路性能,須要交換機支持802.3ad 動態鏈路聚合和服務器硬件支持ethtool。

mode=4

 六、balance-tlb

自適應傳輸負載均衡

不須要配置交換機。在每一個網卡會根據上根據當前的負載狀況來分配流量。若是一個網卡出現故障,那麼另一個網卡會接管故障網卡

mode=5        

 七、balance-alb

自適應負載均衡:包括balance-tlb,不須要另外配置交換機,接受負載均衡經過ARP協商實現

當本機發送ARP請求時,bonding驅動把對端的IP信息從ARP包中複製並保存下來,當ARP應答從對端到達 時,bonding驅動把它的硬件地址提取出來,併發起一個ARP應答給bond中的某個slave。使用ARP協商進行負載均衡的一個問題是:每次廣播 ARP請求時都會使用bond的硬件地址,所以對端學習到這個硬件地址後,接收流量將會所有流向當前的slave。這個問題能夠經過給全部的對端發送更新 (ARP應答)來解決,應答中包含他們獨一無二的硬件地址,從而致使流量從新分佈。當新的slave加入到bond中時,或者某個未激活的slave從新 激活時,接收流量也要從新分佈。接收的負載被順序地分佈(round robin)在bond中最高速的slave上

當某個鏈路被從新接上,或者一個新的slave加入到bond中,接收流量在全部當前激活的slave中所有從新分配,經過使用指定的MAC地址給每一個 client發起ARP應答。下面介紹的updelay參數必須被設置爲某個大於等於switch(交換機)轉發延時的值,從而保證發往對端的ARP應答 不會被switch(交換機)阻截。

mode=6

3、安裝

            準備   多網卡主機一臺     

            網卡橋接

            選擇局域網內空閒ip地址一枚

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.151/24 brd 192.168.3.255 scope global dynamic eno16777736
       valid_lft 258897sec preferred_lft 258897sec
    inet6 fe80::20c:29ff:fefd:1dcf/64 scope link 
       valid_lft forever preferred_lft forever
3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fd:1d:d9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.154/24 brd 192.168.3.255 scope global dynamic eno33554984
       valid_lft 258897sec preferred_lft 258897sec
    inet6 fe80::20c:29ff:fefd:1dd9/64 scope link 
       valid_lft forever preferred_lft forever
4: eno50332208: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:fd:1d:e3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.155/24 brd 192.168.3.255 scope global dynamic eno50332208
       valid_lft 258897sec preferred_lft 258897sec
    inet6 fe80::20c:29ff:fefd:1de3/64 scope link 
       valid_lft forever preferred_lft forever

#查看硬件狀態

[root@localhost ~]#  nmcli device status
設備         類型      狀態    CONNECTION  
eno16777736  ethernet  鏈接的  eno16777736 
eno33554984  ethernet  鏈接的  有線鏈接 1  
eno50332208  ethernet  鏈接的  有線鏈接 2  
lo      loopback  未管理  --

#查看linux是否支持Bond

[root@localhost ~]# modinfo bondingfilename:       
/lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/net/bonding/bonding.ko
alias:          rtnl-link-bond
author:         Thomas Davis, tadavis@lbl.gov and many others
description:    Ethernet Channel Bonding Driver, v3.7.1
version:        3.7.1
license:        GPL
..........
..........

#以上信息反映機器支持bond

#本人選取其中兩種方式來製做bond綁定,

一種是active-backup,

另一種選擇balance-tlb,而且作相應測試

 

方式1:nmcli方式

使用nmcli命令來建立bond卡

nmcli connection add type bond ifname bond1 mode 1

nmcli connection add type bond-slave ifname eno33554984 master bond1

nmcli connection add type bond-slave ifname eno50332208 master bond1

nmcli connection add type bond-slave ifname eno16777736 master bond1

#connection add   添加新的鏈接

#con-name     鏈接名稱 暫時沒使用

#type   設備類型

#ifname    接口設備名稱

#master  指定該硬件的master

 

#   執行完成以上命令後會生成如下文件

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ll
總用量 248
-rw-r--r--. 1 root root   328 3月  29 18:08 ifcfg-bond-bond1
-rw-r--r--. 1 root root   137 3月  29 18:08 ifcfg-bond-slave-eno16777736
-rw-r--r--. 1 root root   137 3月  29 18:08 ifcfg-bond-slave-eno33554984
-rw-r--r--. 1 root root   137 3月  29 18:08 ifcfg-bond-slave-eno50332208

#修改已經生成的配置文件

[root@localhost network-scripts]# vim ifcfg-bond-bond1 
DEVICE=bond1
BONDING_OPTS=mode=active-backup
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=bond-bond1
UUID=5ed04865-5802-4fd5-9d80-917d1fadae70ON
BOOT=yes
IPADDR=192.168.3.200
PREFIX=24
GATEWAY=192.168.3.254
DNS1=192.168.30.202

#重啓網卡

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


#查看網絡和路由狀態

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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
2: eno16777736: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP qlen 1000
    link/ether
 00:0c:29:fd:1d:cf 
brd ff:ff:ff:ff:ff:ff
3: eno33554984: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP qlen 1000
    link/ether  00:0c:29:fd:1d:cf  brd ff:ff:ff:ff:ff:ff
4: eno50332208: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond1 state UP qlen 1000
    link/ether  00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff
6: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.200/24 brd 192.168.3.255 scope global bond1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fefd:1dcf/64 scope link 
       valid_lft forever preferred_lft forever


[root@localhost ~]# ip route
default via 192.168.3.254 dev bond1  proto static  metric 300 
192.168.3.0/24 dev bond1  proto kernel  scope link  src 192.168.3.200  metric 300


[root@localhost ~]# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eno16777736            #這爲當前打開的網卡
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno16777736
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fd:1d:cf
Slave queue ID: 0

Slave Interface: eno33554984
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fd:1d:d9
Slave queue ID: 0

Slave Interface: eno50332208
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fd:1d:e3
Slave queue ID: 0

 

#測試

wKioL1jbIXaQ6PsVAADbG_TUKIA809.png-wh_500x0-wm_3-wmp_4-s_2234987614.png


#三張網卡隨意關閉任意兩張 

ifdown em1


#關閉掉兩張網卡後,會有一次斷點,切換網卡的過程

wKioL1jbIXaQ6PsVAADbG_TUKIA809.png-wh_500x0-wm_3-wmp_4-s_2234987614.png

#網卡已經切換爲eno50332208

[root@localhost ~]# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eno50332208
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno16777736
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 00:0c:29:fd:1d:cf
Slave queue ID: 0

Slave Interface: eno33554984
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 00:0c:29:fd:1d:d9
Slave queue ID: 0

Slave Interface: eno50332208
MII Status: up
Speed: 1000 Mbps
Duplex: fullLink Failure Count: 0
Permanent HW addr: 00:0c:29:fd:1d:e3
Slave queue ID: 0


#實驗完成

#刪除原有配置

#清除bond網卡配置 

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# rm -rf ifcfg-bond-*

#顯示全部活動的鏈接

[root@localhost network-scripts]# nmcli connection show
名稱              UUID                   類型     設備        
有線鏈接 2           4013b28a-31dd-43b0-9b32-6582a20353f9   802-3-ethernet  --          
有線鏈接 1           9cca4859-5085-4cb3-a660-4664fac689c5   802-3-ethernet  --          
eno16777736          5dcd1c25-9d8b-4c0f-967c-cd0b250ff929   802-3-ethernet  --          
bond-slave-eno16777736  24c73fe2-9c55-4202-92f3-d4ff259a6d84  802-3-ethernet  eno16777736 
bond-slave-eno50332208  ea727513-602e-450e-ad36-dd15cc5d2e82  802-3-ethernet  eno50332208 
bond-slave-eno33554984  ca74b313-4a4e-44e3-bb5b-84d5dfa1d3aa  802-3-ethernet  eno33554984 
bond-bond1       5ed04865-5802-4fd5-9d80-917d1fadae70    bond        bond1

#刪除網卡配置鏈接

[root@localhost network-scripts]# nmcli con del bond-slave-eno50332208
[root@localhost network-scripts]# nmcli con del bond-slave-eno33554984
 
[root@localhost network-scripts]# cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: NoneCurrently 
Active Slave: eno16777736
MII Status: up
MII Polling Interval (ms): 100Up 
Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eno16777736

MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:fd:1d:cf
Slave queue ID: 0
 
 
[root@localhost network-scripts]# nmcli con del bond-slave-eno16777736
 
[root@localhost network-scripts]# nmcli con del bond-bond1


網卡恢復

#方式2:cli方式

以文件方式配置Bond

#備份原有網卡配置文件

[root@localhost ~]# mkdir -p /data/backup/network
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost ~]# cp ifcfg-eno*  /data/backup/network/


#由於是新加入的卡,因此沒有配置文件,可是硬件信息中是能夠查到的

[root@localhost network-scripts]# nmcli device status 
設備                    類型      狀態    CONNECTION  
eno16777736  ethernet  鏈接的  eno16777736 
eno33554984  ethernet  鏈接的  有線鏈接 1  
eno50332208  ethernet  鏈接的  有線鏈接 2  
lo       loopback  未管理  --


[root@localhost network-scripts]# ll
總用量 236
-rw-r--r--. 1 root root   295 8月  25 2015 ifcfg-eno16777736
-rw-r--r--. 1 root root   295 3月  29 19:13 ifcfg-eno33554984
[root@localhost network-scripts]# cp ifcfg-eno16777736 ifcfg-eno33554984


[root@localhost network-scripts]# vim ifcfg-bond5
DEVICE=bond5
BONDING_OPTS="mode=balance-tlb"
TYPE=BondBONDING_MASTER=yes
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=bond5
ONBOOT=yes
IPADDR=192.168.3.200
PREFIX=24
GATEWAY=192.168.3.254
DNS1=192.168.30.202
 
[root@localhost network-scripts]# vim ifcfg-eno16777736
TYPE=Ethernet
#BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
NAME=eno16777736
DEVICE=eno16777736
ONBOOT=yes
MASTER=bond5
SLAVE=yes
 
 
[root@localhost network-scripts]# vim ifcfg-eno33554984
TYPE=Ethernet
#BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
NAME=eno33554984
DEVICE=eno33554984
ONBOOT=yes
MASTER=bond5
SLAVE=yes
 
[root@localhost network-scripts]# vim ifcfg-eno50332208
TYPE=Ethernet
#BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
NAME=eno50332208
DEVICE=eno50332208
ONBOOT=yes
MASTER=bond5
SLAVE=yes

#重啓網卡

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

[root@localhost ~]# nmcli connection show
名稱         UUID               類型        設備        
eno50332208  d2665055-8e83-58f1-e9e3-49a5fb133641  802-3-ethernet  eno50332208 
eno16777736  13756690-ac77-b776-4fc1-f5535cee6f16  802-3-ethernet  eno16777736 
有線鏈接 2   4013b28a-31dd-43b0-9b32-6582a20353f9  802-3-ethernet  --          
有線鏈接 1   9cca4859-5085-4cb3-a660-4664fac689c5  802-3-ethernet  --          
eno33554984  fb67dbad-ec81-39b4-42b1-ebf975c3ff13  802-3-ethernet  eno33554984 
bond5     d1a49a62-2f2d-2e41-a63d-be3a81b6a2fb  bond         bond5

     

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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
2: eno16777736: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond5 state UP qlen 1000
    link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff
3: eno33554984: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond5 state UP qlen 1000
    link/ether 00:0c:29:fd:1d:d9 brd ff:ff:ff:ff:ff:ff
4: eno50332208: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond5 state UP qlen 1000
    link/ether 00:0c:29:fd:1d:e3 brd ff:ff:ff:ff:ff:ff
7: bond5: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 00:0c:29:fd:1d:cf brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.200/24 brd 192.168.3.255 scope global bond5
       valid_lft forever preferred_lft forever
    inet6 fe80::a81d:6bff:feac:5cd6/64 scope link 
       valid_lft forever preferred_lft forever

 

 #我的建議各位跟balance-rr 模式作個對比

[root@localhost ~]# cat /proc/net/bonding/bond5
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: transmit load balancing
Primary Slave: None
Currently Active Slave: eno16777736
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eno16777736
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fd:1d:cf
Slave queue ID: 0

Slave Interface: eno33554984
MII Status: upSpeed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fd:1d:d9
Slave queue ID: 0

Slave Interface: eno50332208
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fd:1d:e3
Slave queue ID: 0


注*模式選擇有如下這些

balance-rr(0)

active-backup(1)

balance-xor (2)

broadcast (3)

802.3ad (4)

balance-tlb (5) 

balance-alb (6)

相關文章
相關標籤/搜索