天天看點

centos系統實體網卡bond——資料鍊路層負載均衡配置

網卡資料鍊路層負載均衡是使用mode4,且可以實作實體鍊路間互備,提供給使用者的是一個邏輯上的鍊路,該邏輯鍊路的有效網絡帶寬為全部實體鍊路帶寬之和。 Bonding mode4的一些特性:

  • 最多支援綁定8個主機的網卡端口;
  • LACP控制協定資料包每秒發送一次,檢測主機網卡是否存活的檢測包每30秒(fast)或每秒(slow)發送一次;
  • LACP mode:active或passive,預設為passive模式,即隻有當探測到有支援LACP功能的裝置時自己才啟用LACP功能;

對Bonding mode4的了解可以參考下面的連結。 https://en.wikipedia.org/wiki/Link_aggregation#Link_Aggregation_Control_Protocol

1、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)屬于主備型工作模式。

2、加載并檢視bonding子產品 可以使用modinfo bonding 指令檢視bonding子產品的資訊,預設情況下bonding子產品沒有被加載 可以以root使用者登入,輸入如下的指令進行開啟加載bonding子產品

modprobe  bonding    
modinfo bonding
lsmod | grep 'bonding'           

3、修改網卡配置檔案 編輯/etc/sysconfig/network-scripts/目錄下的網卡配置檔案,一般情況下網卡是以em+數字命名(dell主機),但也有其它命名方式。需要以實體主機系統實際的網卡配置檔案名稱為準。 注:确認已經将系統服務NetworkManager關閉,且關閉服務自啟動。 注:以下是将2塊網卡設定成鍊路聚合式負載均衡bond,如果有更高的資料通信需求,可以考慮把4塊實體網卡全部加入bond中可提供4Gb的通信能力。

建立/etc/sysconfig/network-scripts/ifcfg-bond0檔案,加入如下内容:

DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.120.30
PREFIX=24
GATEWAY=192.168.120.1 
ONBOOT=yes
BOOTPROTO=static
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"           

注:mode=4,設定為鍊路負載均衡模式;miimon=100,監控網線鍊路故障的時間間隔(毫秒);lacp_rate=1,檢測主機網卡是否存活的檢測包每30秒(fast)或每秒(slow)發送一次。

修改/etc/sysconfig/network-scripts/ifcfg-em1檔案:

DEVICE=em1
TYPE=Ethernet
BOOTPROTO=static
NAME=em1
ONBOOT=yes
MASTER=bond0
SLAVE=yes           

修改/etc/sysconfig/network-scripts/ifcfg-em2檔案:

DEVICE=em2
TYPE=Ethernet
BOOTPROTO=static
NAME=em2
ONBOOT=yes
MASTER=bond0
SLAVE=yes           

在主機上确認配置結果方法: #ethtool  bond0 注意檢視Speed是否是2000Mb/s

#cat /proc/net/bonding/bond0

注:當主機網卡使用bond mode4模式時,需要交換機端口設定為IEEE 802.3ad Dynamic link aggregation模式。

可以參照如下對交換機端口Gi1/0/24, Gi1/0/25的配置。 注:當交換機未做設定時,主機上的bonding mode=4将不會生效,主機會使用一塊實體網卡進行通信。

interface Port-channel3
  switchport access vlan 120
  switchport mode access
  spanning-tree portfast
  spanning-tree bpduguard enable
interface GigabitEthernet1/0/24
  switchport access vlan 120
  switchport mode access
  spanning-tree portfast
  spanning-tree bpduguard enable
  channel-protocol lacp
  channel-group 3 mode active
!
interface GigabitEthernet1/0/25
  switchport access vlan 120
  switchport mode access
  spanning-tree portfast
  spanning-tree bpduguard enable
  channel-protocol lacp
  channel-group 3 mode active
!           

在交換機上确認: #show etherchannel summary Group     Port-channel     Protocol     Ports 1               Po1(SD)          - 2               Po3(SU)          LACP          Gi1/0/24(P) Gi1/0/25(P) 要求Po3後面必須是SU狀态。S - Layer2, U - in user 注:Cisco交換機另有特殊的配置,不同于上面。

4、流量測試與可用性測試 1)測試分别插掉網卡連線,觀察網絡連通丢包情況。

2)從多個伺服器上使用iPerf工具對做了bond的位址進行壓測 驗證吞吐量是否達到單網卡的約2倍。 Fedora 64 bits / Red Hat 64 bits / CentOS 64 bits (AMD64) https://iperf.fr/download/fedora/iperf3-3.0.11-2.fc23.x86_64.rpm

啟動iperf服務端:iperf3 -s 啟動用戶端連接配接服務端:iperf3 -c 192.168.6.96 -t 100 -w 512k -f M   -c 表示服務端位址   -t 表示測試持續時間,這裡是10秒   -w 表示封包大小   -f 表示測試結果的度量機關,這裡是兆

使用ifstat, iftop , nload等工具觀察配置的bond的網卡的流量,其中bond0的流量應是em1, em2之和。