首頁 > 軟體

Linux 設定雙網絡卡系結實現負載均衡

2020-06-16 16:48:56

Linux 設定雙網絡卡系結,實現負載均衡

1、Bond的工作模式

Linux bonding驅動提供了一個把多個網路介面裝置捆綁為單個的網路介面設定來使用,用於網路負載均衡及網路冗餘。

bonding一共有7種工作模式(mode):

1)、bond=0,(balance-rr) Round-robin policy: (平衡輪詢策略):傳輸封包順序是依次傳輸,直到最後一個傳輸完畢,此模式提供負載平衡和容錯能力。

2)、bond=1,(active-backup) Active-backup policy:(活動備份策略):只有一個裝置處於活動狀態。一個宕掉另一個馬上由備份轉換為主裝置。mac地址是外部可見得。此模式提供了容錯能力。

3)、bond=2,(balance-xor) XOR policy:(平衡策略):傳輸根據[(源MAC地址xor目標MAC地址)mod裝置數量]的布林值選擇傳輸裝置。 此模式提供負載平衡和容錯能力。

4)、bond=3,(broadcast) Broadcast policy:(廣播策略):將所有封包傳輸給所有裝置。此模式提供了容錯能力。

5)、bond=4,(802.3ad) IEEE 802.3ad Dynamic link aggregation. IEEE 802.3ad 動態連結聚合:建立共用相同的速度和雙工設定的聚合組。此模式提供了容錯能力。每個裝置需要基於驅動的重新獲取速度和全雙工支援;如果使用交換機,交換機也需啟用 802.3ad 模式。

6)、bond=5,(balance-tlb) Adaptive transmit load balancing(介面卡傳輸負載均衡):通道系結不需要專用的交換機支援。發出的流量根據當前負載分給每一個裝置。由當前裝置處理接收,如果接受的設 備傳不通就用另一個裝置接管當前裝置正在處理的mac地址。

7)、bond=6,(balance-alb) Adaptive load balancing: (介面卡負載均衡):包括mode5,由 ARP 協商完成接收的負載。bonding驅動程式截獲 ARP在本地系統傳送出的請求,用其中之一的硬體地址覆蓋從屬裝置的原地址。就像是在伺服器上不同的人使用不同的硬體地址一樣。

2、設定步驟

以下步驟為Ubuntu系統,設定bond=6的雙網絡卡系結步驟,其他模式的方法一樣;

2.1、安裝ifenslave軟體

fenslave為一種粘合和分離式的軟體,可以將封包有效的分配到bonding驅動

sudo apt install ifenslave

2.2、/etc/modules檔案

在/etc/modules檔案中加入以下設定

bonding mode=6 miimon=100

mode=6 表示採用模式1;
miimon是用來進行鏈路監測的。比如miimon=100,表示系統每100ms監測一次鏈路連線狀態,如果有一條線路不通就切換另一條線路。

2.3、修改/etc/network/interfaces檔案設定

首先需要確定網絡卡介面的名稱,可以通過ifconfig命令檢視,當前是網絡卡介面分別是ens33和ens34;在/etc/network/interfaces檔案增加如下設定

# 雙網絡卡設定
auto ens33
iface ens33 inet manual
bond-master bond0

auto ens34
iface ens34 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 192.168.20.10
netmask 255.255.255.0
gateway 192.168.20.2
dns-nameservers 192.168.20.1 119.29.29.29
bond-slaves ens33 ens34
bond-lacp-rate 1
bond-mode 6
bond-miimon 100

2.4、載入binding模組

#  載入模組
$ sudo modprobe bonding
# 檢視模組,如果模組已經載入,顯示出來
$ sudo lsmod|grep bonding
bonding              163840  0

2.5、檢視狀態
•檢視網路設定

$ ifconfig
bond0    Link encap:乙太網  硬體地址 00:0c:29:34:7a:4a 
          inet 地址:192.168.20.10  廣播:192.168.20.255  掩碼:255.255.255.0
          inet6 地址: fe80::20c:29ff:fe34:7a4a/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  躍點數:1
          接收封包:964 錯誤:0 丟棄:0 過載:0 幀數:0
          傳送封包:4205 錯誤:0 丟棄:0 過載:0 載波:0
          碰撞:0 傳送佇列長度:1000
          接收位元組:75022 (75.0 KB)  傳送位元組:300032 (300.0 KB)

ens33    Link encap:乙太網  硬體地址 00:0c:29:34:7a:4a 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  躍點數:1
          接收封包:2740 錯誤:0 丟棄:0 過載:0 幀數:0
          傳送封包:3416 錯誤:0 丟棄:0 過載:0 載波:0
          碰撞:0 傳送佇列長度:1000
          接收位元組:3899473 (3.8 MB)  傳送位元組:278409 (278.4 KB)

ens34    Link encap:乙太網  硬體地址 00:0c:29:34:7a:54 
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  躍點數:1
          接收封包:1369 錯誤:0 丟棄:0 過載:0 幀數:0
          傳送封包:2125 錯誤:0 丟棄:0 過載:0 載波:0
          碰撞:0 傳送佇列長度:1000
          接收位元組:106846 (106.8 KB)  傳送位元組:139061 (139.0 KB)
•檢視binding狀態

$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

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

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:34:7a:4a
Slave queue ID: 0

Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:34:7a:54
Slave queue ID: 0

2.6、驗證測試
•物理上關閉一個網絡卡(拔網線)

# 關閉前,速率是2000Mb/s
$ ethtool bond0
Settings for bond0:
    Supported ports: [ ]
    Supported link modes:  Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 2000Mb/s
    Duplex: Full
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
Cannot get wake-on-lan settings: Operation not permitted
    Link detected: yes

# 關閉後,速率速率變成1000Mb/s
$ ethtool bond0
Settings for bond0:
    Supported ports: [ ]
    Supported link modes:  Not reported
    Supported pause frame use: No
    Supports auto-negotiation: No
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 1000Mb/s
    Duplex: Full
    Port: Other
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: off
Cannot get wake-on-lan settings: Operation not permitted
    Link detected: yes

注意:不可以使用ifdown 關閉網絡卡,會導致網路中斷

3、總結

Linux bonding一共有7種工作模式(mode),如果是想要加大網絡卡的吞吐量,通常會使用mode=6的模式,如果是注重網路的穩定,通常會使用mode=1的模式;

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-08/153566.htm


IT145.com E-mail:sddin#qq.com