1. 常見的網卡綁定驅動模式:
- mod=0 (balance-rr) Round-robin 衡掄循環策略
特色:
傳輸數據包順序是依次傳輸(即:第1個包走eth0,下一個包就走eth1.一直循環下去,直到最後一個傳輸完畢),此模式提供負載平衡和容錯能力;可是咱們知道若是一個鏈接或者會話的數據包從不一樣的接口發出的話,中途再通過不一樣的鏈路,在客戶端頗有可能會出現數據包無序到達的問題,而無序到達的數據包須要從新要求被髮送,這樣網絡的吞吐量就會降低
- mode=1 (active-backup) 主-備份策略
特色:
只有一個設備處於活動狀態,當一個宕掉另外一個立刻由備份轉換爲主設備。mac地址是外部可見得,從外面看來,bond的MAC地址是惟一的,以免switch(交換機)發生混亂。此模式只提供了容錯能力;因而可知此算法的優勢是能夠提供高網絡鏈接的可用性,可是它的資源利用率較低,只有一個接口處於工做狀態,在有 N 個網絡接口的狀況下,資源利用率爲1/N
- mode=2 (balance-xor) XOR policy 平衡策略
特色:
基於指定的傳輸HASH策略傳輸數據包。缺省的策略是:(源MAC地址 XOR 目標MAC地址) % slave數量。其餘的傳輸策略能夠經過xmit_hash_policy選項指定,此模式提供負載平衡和容錯能力
- mode=3 (broadcast) 廣播策略
特色:
在每一個slave接口上傳輸每一個數據包,此模式提供了容錯能力
- mode=4 (802.3ad) IEEE 802.3ad 動態連接聚合
特色:
建立一個聚合組,它們共享一樣的速率和雙工設定。根據802.3ad規範將多個slave工做在同一個激活的聚合體下。 外出流量的slave選舉是基於傳輸hash策略,該策略能夠經過xmit_hash_policy選項從缺省的XOR策略改變到其餘策略。須要注意的 是,並非全部的傳輸策略都是802.3ad適應的,尤爲考慮到在802.3ad標準43.2.4章節說起的包亂序問題。不一樣的實現可能會有不一樣的適應性。
必要條件:
條件1:ethtool支持獲取每一個slave的速率和雙工設定
條件2:switch(交換機)支持IEEE 802.3ad Dynamic link aggregation
條件3:大多數switch(交換機)須要通過特定配置才能支持802.3ad模式
- mode=5 (balance-tlb) Adaptive transmit load balancing 適配器傳輸負載均衡
特色:
不須要任何特別的switch(交換機)支持的通道bonding。在每一個slave上根據當前的負載(根據速度計算)分配外出流量。若是正在接受數據的slave出故障了,另外一個slave接管失敗的slave的MAC地址。
必要條件:
ethtool支持獲取每一個slave的速率
- mode=6 (balance-alb) Adaptive load balancing 適配器適應性負載均衡
特色:
該模式包含了balance-tlb模式,同時加上針對IPV4流量的接收負載均衡(receive load balance, rlb),並且不須要任何switch(交換機)的支持。接收負載均衡是經過ARP協商實現的。bonding驅動截獲本機發送的ARP應答,並把源硬件地址改寫爲bond中某個slave的惟一硬件地址,從而使得不一樣的對端使用不一樣的硬件地址進行通訊。
2. 使用 nmcli 工具配置網卡綁定
nmcli con add type bond con-name mybond0 ifname bond0 mode balance-alb
nmcli con add type bond-slave ifname ens37 master mybond0
nmcli con add type bond-slave ifname ens38 master mybond0
nmcli con up bond-slave-ens7
nmcli con modify mybond0 ipv4.method manual
nmcli con modify mybond0 ipv4.addresses 192.168.78.137/24
nmcli con modify mybond0 ipv4.gateway 192.168.78.2
nmcli con modify mybond0 ipv4.dns 192.168.78.2
3. 使用命令行界面配置網卡綁定
# 顯示 boding 模塊信息
modinfo bonding
3.1 建立頻道綁定接口
在 /etc/sysconfig/network-scripts/ 目錄中建立名爲 ifcfg-bondN 的文件,使用接口號碼替換 N,好比 0。算法
DEVICE=bond0
NAME=bond0
TYPE=Bond
BONDING_MASTER=yes
IPADDR=192.168.1.1
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="bonding parameters separated by spaces"
3.2 建立從屬接口
DEVICE=ethN
NAME=bond0-slave
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
3.3 激活頻道綁定
ifup ifcfg-eth0
ifup ifcfg-eth1
# 生效更改
# nmcli con load /etc/sysconfig/network-script/ifcfg-device
nmcli con reload
# 查看網卡綁定接口狀態
ip link show