關於提升服務器的帶寬策略bonding

一:bonding的概念html

所謂bonding就是將多塊網卡綁定同一IP地址對外提供服務,能夠實現網卡的帶寬擴容、高可用或者負載均衡。

二:bonding的優點bash

1 網絡負載均衡
2 提升帶寬網絡傳輸效率
3 網絡冗餘與高可用

三:bonding的策略(7種策略)服務器

1  balance-rr (mode=0)輪詢(Round-robin)策略:從頭至尾順序的在每個slave接口上面發送數據包。本模式提供負載均衡和容錯的能力。
2 active-backup(mode=1)主備模式 ,在綁定中,只有一個slave被激活。當且僅當活動的slave接口失敗時纔會激活其餘slave。爲了不交換
  機發生混亂此時綁定的MAC地址只有一個外部端口上可見。在bongding的2.6.2及其之後的版本中,主備模式下發生一次故障遷移時,bonding將在新
  激活的slave上會送一個或者多個gratuitous ARP.bonding的主salve接口上以及配置在接口上的全部VLAN接口都會發送gratuitous ARP,只要
  這些接口上配置了至少一個IP地址。VLAN接口上發送的的gratuitous ARP將會附上適當的VLAN id。本模式提供容錯能力,primary option,
  documented below會影響本模式的行爲。 3 balance-xor(mode=2)XOR策略:基於所選擇的傳送hash策略。本模式提供負載均衡和容錯的能力。 4 broadcast(mode=3)廣播策略:在全部的slave接口上傳送全部的報文。本模式提供容錯能力。 5 802.3ad(mode=4)IEEE 802.3ad 動態鏈路聚合。建立共享相同的速率和雙工模式的聚合組。能根據802.3ad規範利用全部的slave來創建聚合鏈路。
  Salve的出站選擇取決於傳輸的hash策略,默認策略是簡單的XOR策略,而hash策略則能夠通xmit_hash_policy選項加以改變。須要注意的是:不是全部
  的傳輸策略都與802.3ad兼容,尤爲是802.3ad標準的43.2.4章節中關於 packet mis-ordering要求的地方。不一樣個體的實現每每出現很大的不兼容。 先決條件: 1. 每一個slave的基本驅動支持Ehtool獲取速率和雙工狀態。 2.交換機支持IEEE 802.3ad動態鏈路聚合。大多數的交換機都須要使用某種配置方式來啓用802.3ad模式。 6 balance-tlb(mode=5)   自適應傳輸負載均衡:信道綁定不須要特殊的交換機支持。出口流量的分佈取決於當前每一個slave的負載(計算相對速度)。進口流量從當前的slave的接收。
  若是接收salve出錯,其餘的slave接管失敗的slave的MAC地址繼續接收。 先決條件: 每一個slave的基本驅動支持Ehtool獲取速率狀態。 7 balance-alb(mode=6) 自適應負載均衡:包括balance-tlb(模式5)以及用於IPV4流量的接收負載均衡,而且不須要特殊的交換機支持。接收負載均衡經過ARP協商實現。bonding的
驅動攔截本機發出的ARP Replies(ARP迴應報文),而且用bond的某一個slave的硬件地址改寫ARP報文的源地址,使得本服務器對不一樣的設備使用不一樣的硬件
地址。本服務器創建的鏈接的接收流量也是負載均衡的。當本機發送ARP Request時,bonding驅動經過ARP報文複製並保存節點的IP信息。當從其餘節點接收到
ARP Reply,bonding驅動獲取節點的硬件地址而且會迴應一個包含綁定好的slave的硬件地址的ARP Reply給發送的節點。用ARP協商的負載均衡的有一個問題
是每次用bond的硬件地址廣播ARP報文,那麼其餘節點發送的數據所有集中在一個slave上,處理ARP更新給其餘全部節點的時候,每一個節點會從新學習硬件地址,
致使流量從新分配。當新加入一個slave或者一個非激活的slave從新激活的時候也會致使接收流量從新分配。接收流量負載是串行(輪轉)的分配在bond的一組速
率最高的slave上。 當一個鏈路重連或者一個新的slave加入的時候,bond會從新初始化ARP Replies給全部的客戶端。updelay參數的值必須等於或者大於交換機的forwarding delay,
以避免ARP Replies被交換機阻塞。 先決條件: 1.每一個slave的基本驅動支持Ehtool獲取速率狀態。 2. 基本驅動支持當設備打開時從新設置硬件地址。也要求每個slave具備惟一的硬件地址。若是curr_active_slave失敗,它的硬件地址被新選上的
  curr_active_slave硬件地址來替換

四 bonding的相關配置(生產環境mode=6的方式)網絡

1 首先進入網卡文件配置目錄  cd /etc/sysconfig/network-scripts/  負載均衡

2 備份網卡配置文件cp ifcfg-eth0  ifcfg副本-eth0工具

3 拷貝cp ifcfg-eth0  ifcfg-bond0   學習

4 配置 bonding測試

#cat <<EOF >>ifcfg-bond0
DEVICE=bond0
BONDING_OPTS='miimon=100 mode=6'
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.61
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
USERCTL=no
EOF

配置網卡eth0、eth1ui

#cat << EOF >>ifcfg-eth0 
DEVICE=eth0
HWADDR=D0:50:99:C1:0E:83
TYPE=Ethernet
UUID=5eefe89c-0cbf-426c-987e-1b6ee1c54024
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
EOF

#cat << EOF >>ifcfg-eth01
DEVICE=eth1
HWADDR=D0:50:99:C1:0E:81
TYPE=Ethernet
UUID=a71f51f5-c05b-4bcd-a618-bb09813be60e
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
EOF 

五: 加載bonding模塊配置文件聲明spa

#加載配置
# cat /etc/modprobe.d/bond.conf alias bond0 bonding
# 修改bond模式的兩種方式
1.cat /etc/modprobe.d/dist.conf  options bond0 miimon=100 mode=6
2 還有一種修改方式在ifcfg-bond0網卡配置文件追加
 BONDING_OPTS="mode=1 miimon=100"

1 #modprobe bonding      加載bonding配置

  service network restart 重啓網卡

2 查看bond0 是否生效

#cat /proc/net/bonding/bond0
Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0


Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: d0:50:99:c1:0e:83
Slave queue ID: 0


Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: d0:50:99:c1:0e:81
Slave queue ID: 0 

3 開機自啓腳本配置聲明

cat /etc/rc.local 
#!/bin/bash
touch /var/lock/subsys/local
ifenslave  bond1 eth1 eth2  

注意:在重啓network服務時需關閉NetworkManager

#systemctl stop NetworkManager.service     # 中止NetworkManager服務

#systemctl disable NetworkManager.service  # 禁止開機啓動NetworkManager服務

#systemctl isdisable NetworkManager.service  #查看NetworkManager服務是否關閉 

緣由:
在CentOS系統上,目前有NetworkManager和network兩種網絡管理工具。若是兩種都配置
會引發衝突,並且NetworkManager在網絡斷開的時候,會清理路由,若是一些自定義的路
由,沒有加入到NetworkManager的配置文件中,路由就被清理掉,網絡鏈接後須要自定義添
加上去。

五 測試:

1 在測試高可用時:

拔掉一根網線看是否還能ping通bond0

2 在測試流量帶寬時 

若是兩張網卡爲千兆帶寬時,咱們應同時準備兩臺同等帶寬的服務器同時測試

準備: 

軟件:iperf3 參考博客:http://www.javashuo.com/article/p-xcyeafiu-bc.html

命令 服務端:  iperf –s -u –p 12345 –i 1

   客戶端: iperf -c server-ip -p server-port -i 1 -t 10 -b(兩臺客戶端服務器同時執行)

結果:若是服務端的帶寬大於1000M且拔掉一根網線還能成功,證實bonding配置成功

 

 

 

 

Bonding Mode: adaptive load balancingPrimary Slave: NoneCurrently Active Slave: eth1MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth0MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 1Permanent HW addr: d0:50:99:c1:0e:83Slave queue ID: 0Slave Interface: eth1MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: d0:50:99:c1:0e:81Slave queue ID: 0--------------------- 做者:su4416160 來源:CSDN 原文:https://blog.csdn.net/su4416160/article/details/53103599 版權聲明:本文爲博主原創文章,轉載請附上博文連接!

相關文章
相關標籤/搜索