Linux 網卡Bonding配置

當在Linux系統上使用Bonding技術時,實際上是將多個物理網絡接口(也稱爲Slave接口)綁定在一起,形成一個虛擬的Bond接口。這個Bond接口可以提高網絡的可靠性和性能,有助於負載均衡和容錯。

配置Linux系統上Bonding的步驟:

步驟 1:加載Bonding模塊

在Linux內核中,Bonding功能是通過一個模塊實現的,因此首先需要確保該模塊已加載。可以使用以下命令加載Bonding模塊:

modprobe bonding

如果要使這個設置永久生效,可以將bonding添加到系統的模塊配置文件中,例如,在/etc/modules中添加一行:

bonding

步驟 2:配置Bond接口

編輯Bond接口的配置文件,通常是/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-bondX(X是Bond接口的編號)。在配置文件中,指定Bond接口的基本信息和所使用的Bonding模式。

DEVICE=bond0
TYPE=Bond
# mode=balance-rr:這是Bonding接口的工作模式,指定了使用的負載均衡模式。
# 在這裏,balance-rr 表示輪詢模式(Round Robin)。
# 在輪詢模式下,傳輸的數據包在可用的Slave接口之間輪流分配,實現負載均衡。這可以增加帶寬,並提高網絡性能。
# miimon=100:這是監測間隔的設置。miimon 指定了Bond接口監測Slave接口是否正常工作的時間間隔,單位是毫秒。在這裏,miimon=100 表示每100毫秒檢查一次Slave接口的狀態。如果在這個間隔內沒有從Slave接口收到任何數據包,Bond接口將認爲該接口出現故障,並將流量從故障的接口轉移到其他正常工作的接口。
# BONDING_OPTS="mode=balance-rr miimon=100" 


# mode=4:這指定了Bonding接口的工作模式。在這裏,mode=4 表示使用的是802.3ad(LACP)模式。
# 這是一種聚合模式,使用IEEE 802.3ad標準的鏈路聚合控制協議(LACP)。在這種模式下,多個物理接口被聚合成一個邏輯接口,以提高帶寬和容錯性。
# miimon=100:這是監測間隔的設置,與之前解釋的一樣。miimon=100 表示每100毫秒檢查一次Slave接口的狀態。
# xmit_hash_policy=layer3+4:這個選項指定了傳輸哈希的策略,用於決定如何在Slave接口之間分配傳輸的數據包。
# 在這裏,layer3+4 表示使用Layer 3(IP地址)和Layer 4(端口號)信息進行哈希計算。這樣可以在負載均衡時更精確地分配流量。
# lacp_rate=1:這是LACP協議的速率設置。lacp_rate=1 表示LACP的協商速率爲快速(fast),
# 也就是每秒發送一次LACP協商包。這有助於更快地檢測鏈路狀態的變化。
# 這個配置的目的是在Bond接口上啓用802.3ad(LACP)模式,使用特定的傳輸哈希策略,
# 並配置快速的LACP協商速率以提高鏈路的快速故障檢測和恢復。
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4 lacp_rate=1"
IPADDR=IP
NETMASK=IP
GATEWAY=IP
BOOTPROTO=none
ONBOOT=yes
DEVICE=bond0 #指定Bond接口的名稱。
TYPE=Bond #指定接口類型爲Bond。
BONDING_MASTER=yes #表示這是一個Bond接口。
BOOTPROTO=none #禁用自動配置IP地址。
ONBOOT=yes #表示接口在系統啓動時自動激活。

步驟 3:配置Slave接口

配置每個物理網絡接口(Slave接口),這些接口將綁定到Bond接口上。編輯每個Slave接口的配置文件,通常是/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-ethX。

DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
DEVICE=eth0 #指定物理接口的名稱。
TYPE=Ethernet #指定接口類型爲以太網。
BOOTPROTO=none #禁用自動配置IP地址。
ONBOOT=yes #表示接口在系統啓動時自動激活。
MASTER=bond0 #指定接口綁定到哪個Bond接口上。
SLAVE=yes #表示這是一個Slave接口。

重複以上步驟,爲每個物理網絡接口創建相應的Slave接口。

步驟 4:重啓網絡服務或系統
根據不同的Linux發行版,使用適當的命令來重啓網絡服務,以應用新的配置。例如:

service network restart    # 對於Red Hat / CentOS
systemctl restart network  # 對於Systemd-based系統

或者,也可以直接重啓系統。

請注意,以上步驟中的配置文件路徑和文件名可能會因Linux發行版的不同而有所變化。確保查閱並根據你的系統進行適當的配置。如果系統使用了NetworkManager,可能需要禁用它或相應地配置。

配置結果

· 用6張物理網卡分別做2個bond對應內網和外網

ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 內網IP  netmask 255.255.255.192  broadcast xxxxx
        inet6 fe80::22e:c7ff:fede:bbec  prefixlen 64  scopeid 0x20<link>
        ether 00:2e:c7:de:bb:ec  txqueuelen 1000  (Ethernet)
        RX packets 246355998028  bytes 208303790741491 (189.4 TiB)
        RX errors 0  dropped 3816775  overruns 0  frame 0
        TX packets 202598700106  bytes 93802287439078 (85.3 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 公網IP  netmask 255.255.255.192  broadcast xxxxx
        inet6 fe80::6e44:2aff:fe11:7e7a  prefixlen 64  scopeid 0x20<link>
        ether 6c:44:2a:11:7e:7a  txqueuelen 1000  (Ethernet)
        RX packets 24873307632  bytes 16810009736133 (15.2 TiB)
        RX errors 0  dropped 1580508  overruns 0  frame 0
        TX packets 28258917875  bytes 23112510171897 (21.0 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:2e:c7:de:bb:ec  txqueuelen 1000  (Ethernet)
        RX packets 124158342391  bytes 104466083013418 (95.0 TiB)
        RX errors 0  dropped 2640312  overruns 0  frame 0
        TX packets 98452382047  bytes 45841408859483 (41.6 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:2e:c7:de:bb:ec  txqueuelen 1000  (Ethernet)
        RX packets 122197655638  bytes 103837707728342 (94.4 TiB)
        RX errors 0  dropped 1176462  overruns 0  frame 0
        TX packets 104146318060  bytes 47960878579921 (43.6 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 6c:44:2a:11:7e:7a  txqueuelen 1000  (Ethernet)
        RX packets 11803693682  bytes 7781711756799 (7.0 TiB)
        RX errors 0  dropped 374624  overruns 0  frame 0
        TX packets 14381029459  bytes 11931791763557 (10.8 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 6c:44:2a:11:7e:7a  txqueuelen 1000  (Ethernet)
        RX packets 13069613950  bytes 9028297979334 (8.2 TiB)
        RX errors 0  dropped 1205884  overruns 0  frame 0
        TX packets 13877888419  bytes 11180718408762 (10.1 TiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp5s0f0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b4:96:91:25:eb:2c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp5s0f1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b4:96:91:25:eb:2e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章