在 RHEL 上配置網(wǎng)絡(luò)綁定(成組)
網(wǎng)絡(luò) 綁定Bonding(成組Teaming) 是 Linux 的一項內(nèi)核特性,它讓我們可以將多個網(wǎng)絡(luò)接口(例如 ens192
、ens224
)聚合為一個專有的虛擬網(wǎng)絡(luò)接口,被稱為通道綁定(bond0
)。這樣做能夠提升吞吐量并增加冗余備份。
網(wǎng)絡(luò)綁定一共支持 7 種模式,你可以根據(jù)實際需求進行設(shè)置。鏈接聚合控制協(xié)議Link Aggregation Control Protocol(LACP), 即模式 4(802.3ad)因其支持鏈接聚合與冗余而被廣泛應(yīng)用。
在本篇文章中,我們將引導你學習如何在 RHEL 系統(tǒng)中配置網(wǎng)卡(網(wǎng)絡(luò))綁定。
LACP 綁定的前置條件
- 網(wǎng)絡(luò)團隊需要在網(wǎng)絡(luò)交換機的端口上開啟 LACP(802.3ad)來實現(xiàn)鏈接的聚合。
- 一個 Linux 系統(tǒng)應(yīng)該配備至少兩個網(wǎng)絡(luò)接口。
- 對于物理服務(wù)器,我們推薦在板載接口與 PCI 接口間進行綁定配置,以避免在主機端的網(wǎng)絡(luò)卡出現(xiàn)單點故障。
Bonding 模塊
你可以使用 lsmod
命令來確認你的 Linux 系統(tǒng)是否已經(jīng)加載了 bonding
模塊。
lsmod | grep -i bonding
bonding 12451 0
系統(tǒng)應(yīng)該默認已加載。如果未看到,可以運用 modprobe
命令進行加載。
modprobe bonding
創(chuàng)建綁定接口
在 /etc/sysconfig/network-scripts/
路徑下,創(chuàng)建一個名為 ifcfg-bond0
的綁定接口文件。依據(jù)你的網(wǎng)絡(luò)情況,你可能需要修改諸如 IP
、MASK
以及 GATEWAY
等值。
vi /etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=Bond
DEVICE=bond0
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"
< 如顯示不全,請左右滑動 >
參數(shù) | 描述 |
| 表示設(shè)備是一個綁定主設(shè)備。 |
| 綁定模式是 IEEE 802.3ad 動態(tài)鏈接聚合(LACP)。 |
| 定義以毫秒單位的 MII 鏈路監(jiān)測頻率,這決定了多久檢查每個從屬鏈路的狀態(tài)一次以尋找失敗的鏈路。 |
| 一個設(shè)置項,規(guī)定我們將以何種頻率要求我們的鏈路伙伴每秒鐘發(fā)送 LACPDU。默認為慢,即 |
配置第一個子接口
修改你希望添加到綁定中的第一個子接口。請根據(jù)你的實際環(huán)境使用合適的接口名。
vi /etc/sysconfig/network-scripts/ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens192
ONBOOT=yes
MASTER=bond0
SLAVE=yes
配置第二個子接口
修改你希望添加到綁定中的第二個子接口。請根據(jù)你的實際環(huán)境使用合適的接口名。
vi /etc/sysconfig/network-scripts/ifcfg-ens224
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens224
ONBOOT=yes
MASTER=bond0
SLAVE=yes
重啟網(wǎng)絡(luò)服務(wù)
重啟網(wǎng)絡(luò)服務(wù)以激活綁定接口。
systemctl restart network
驗證綁定配置
你可以借助 ip 命令 來查看綁定接口以及其子接口的情況??梢钥吹剑?code style="background-color: rgb(231, 243, 237); padding: 1px 3px; border-radius: 4px; overflow-wrap: break-word; text-indent: 0px; display: inline-block;">bond0 現(xiàn)在已啟動并在運行。
查閱綁定接口狀態(tài)
檢查以下文件,你可以看到綁定接口及其子接口的詳細信息。輸出結(jié)果應(yīng)該看起來很不錯,我們能看到諸如綁定模式,MII 狀態(tài),MII 輪詢間隔,LACP 速率,端口數(shù)量等信息。
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: c8:5b:76:4d:d4:5c
Active Aggregator Info:
Aggregator ID: 1
Number of ports: 2
Actor Key: 15
Partner Key: 32773
Partner Mac Address: e4:a7:a0:32:fc:e9
Slave Interface: ens192
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: c8:5b:76:4d:d4:5c
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned State: 0
Partner Churned State: 0
details actor lacp pdu:
system priority: 65535
system mac address: c8:5b:76:4d:d4:5c
port key: 15
port priority: 255
port number: 1
port state: 63
details Partner lacp pdu:
system priority: 32667
system mac address: e4:a7:a0:32:fc:e9
oper key: 32773
port priority: 32768
port number: 290
port state: 61
Slave Interface: ens224
MII Status: up
Speed: 10000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: e4:a7:a0:32:fc:e9
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: none
Actor Churned State: 0
Partner Churned State: 0
details actor lacp pdu:
system priority: 65535
system mac address: e4:a7:a0:32:fc:e9
port key: 15
port priority: 255
port number: 2
port state: 63
details Partner lacp pdu:
system priority: 32667
system mac address: c8:5b:76:4d:d4:5c
oper key: 32773
port priority: 32768
port number: 16674
port state: 61
容錯/冗余測試
為了驗證容錯性和連接速度,你可以逐個斷開接口,然后檢查服務(wù)器是否仍舊可達。
- 測試用例-1:當兩個子接口都啟動并運行時,使用 ethtool 命令 檢查鏈路速度。
- 測試用例-2:斷開第一個子接口,然后嘗試訪問系統(tǒng)。
- 測試用例-3:斷開第二個子接口,然后嘗試訪問系統(tǒng)。
測試用例-1:
如果你想檢測下連接速度:沒錯,我在 bond0
上看到了 20 Gbps
的速度,因為每個子接口支持 10 Gbps。
ethtool bond0
Settings for bond0:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 20000Mb/s
Duplex: Full
Port: Other
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Link detected: yes
測試用例-2:
現(xiàn)在我們將關(guān)閉第一個子接口。
ifdown ens192
Device 'ens192' successfully disconnected.
通過 ssh
嘗試訪問系統(tǒng)。沒問題,系統(tǒng)現(xiàn)在是可以訪問的。
ssh [email protected]
由于已經(jīng)有一個子接口關(guān)閉,你現(xiàn)在在 bond0
上只能看到 10 Gbps 的速度。
ethtool bond0 | grep -i speed
Speed: 10000Mb/s
現(xiàn)在,我們再次查看綁定接口的狀態(tài)??梢钥闯?,只有一個子接口處于活躍狀態(tài)。
cat /proc/net/bonding/bond0
測試用例-3:
我們來關(guān)閉第二個子接口,并進行類似測試用例-2 的測試:
ifdown ens224
Device 'ens224' successfully disconnected.
結(jié)語
我希望你已經(jīng)掌握了在 RHEL 上配置 LACP 綁定的方法。
在本教程中,我們?yōu)槟阏故玖嗽?RHEL 系統(tǒng)配置網(wǎng)絡(luò)綁定或網(wǎng)卡聚合的最簡單方式。