今天,我們來學(xué)習(xí)一下在 CentOS 7.x 中如何用 nmcli(Network Manager Command Line Interface:網(wǎng)絡(luò)管理命令行接口)進(jìn)行網(wǎng)卡綁定。
網(wǎng)卡(接口)綁定是將多塊 網(wǎng)卡 邏輯地連接到一起從而允許故障轉(zhuǎn)移或者提高吞吐率的方法。提高服務(wù)器網(wǎng)絡(luò)可用性的一個(gè)方式是使用多個(gè)網(wǎng)卡。Linux 綁定驅(qū)動(dòng)程序提供了一種將多個(gè)網(wǎng)卡聚合到一個(gè)邏輯的綁定接口的方法。這是個(gè)新的實(shí)現(xiàn)綁定的方法,并不影響 linux 內(nèi)核中舊綁定驅(qū)動(dòng)。
網(wǎng)卡綁定為我們提供了兩個(gè)主要的好處:
- 高帶寬
冗余/彈性
現(xiàn)在讓我們在 CentOS 7 上配置網(wǎng)卡綁定吧。我們需要決定選取哪些接口配置成一個(gè)組接口(Team interface)。
運(yùn)行 ip link 命令查看系統(tǒng)中可用的接口。
$ ip link
這里我們使用 eno16777736 和 eno33554960 網(wǎng)卡在 “主動(dòng)備份” 模式下創(chuàng)建一個(gè)組接口。(譯者注:關(guān)于不同模式可以參考:多網(wǎng)卡的7種bond模式原理)
按照下面的語法,用 nmcli 命令為網(wǎng)絡(luò)組接口創(chuàng)建一個(gè)連接。
# nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 指代連接的名稱,INAME 是接口名稱,JSON (JavaScript Object Notation) 指定所使用的處理器(runner)。JSON 語法格式如下:
'{"runner":{"name":"METHOD"}}'
METHOD 是以下的其中一個(gè):broadcast、activebackup、roundrobin、loadbalance 或者 lacp。
1. 創(chuàng)建組接口
現(xiàn)在讓我們來創(chuàng)建組接口。這是我們創(chuàng)建組接口所使用的命令。
# nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'
運(yùn)行 # nmcli con show 命令驗(yàn)證組接口配置。
# nmcli con show
2. 添加從設(shè)備
現(xiàn)在讓我們添加從設(shè)備到主設(shè)備 team0。這是添加從設(shè)備的語法:
# nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
在這里我們添加 eno16777736 和 eno33554960 作為 team0 接口的從設(shè)備。
# nmcli con add type team-slave con-name team0-port1 ifname eno16777736 master team0
# nmcli con add type team-slave con-name team0-port2 ifname eno33554960 master team0
再次用命令 #nmcli con show 驗(yàn)證連接配置?,F(xiàn)在我們可以看到從設(shè)備配置信息。
#nmcli con show
3. 分配 IP 地址
上面的命令會(huì)在 /etc/sysconfig/network-scripts/ 目錄下創(chuàng)建需要的配置文件。
現(xiàn)在讓我們?yōu)?team0 接口分配一個(gè) IP 地址并啟用這個(gè)連接。這是進(jìn)行 IP 分配的命令。
# nmcli con mod team0 ipv4.addresses "192.168.1.24/24 192.168.1.1"
# nmcli con mod team0 ipv4.method manual
# nmcli con up team0
4. 驗(yàn)證綁定
用 #ip add show team0 命令驗(yàn)證 IP 地址信息。
#ip add show team0
現(xiàn)在用 teamdctl 命令檢查 主動(dòng)備份 配置功能。
# teamdctl team0 state
現(xiàn)在讓我們把激活的端口斷開連接并再次檢查狀態(tài)來確認(rèn)主動(dòng)備份配置是否像希望的那樣工作。
# nmcli dev dis eno33554960
斷開激活端口后再次用命令 #teamdctl team0 state 檢查狀態(tài)。
# teamdctl team0 state
是的,它運(yùn)行良好?。∥覀儠?huì)使用下面的命令連接回到 team0 的斷開的連接。
#nmcli dev con eno33554960
我們還有一個(gè) teamnl 命令可以顯示 teamnl 命令的一些選項(xiàng)。
用下面的命令檢查在 team0 運(yùn)行的端口。
# teamnl team0 ports
顯示 team0 當(dāng)前活動(dòng)的端口。
# teamnl team0 getoption activeport