在 Linux 中用 nmcli 命令繫結多塊網路卡

Arun Pyasi發表於2015-05-05

今天,我們來學習一下在 CentOS 7.x 中如何用 nmcli(Network Manager Command Line Interface:網路管理命令列介面)進行網路卡繫結。

網路卡(介面)繫結是將多塊 網路卡 邏輯地連線到一起從而允許故障轉移或者提高吞吐率的方法。提高伺服器網路可用性的一個方式是使用多個網路卡。Linux 繫結驅動程式提供了一種將多個網路卡聚合到一個邏輯的繫結介面的方法。這是個新的實現繫結的方法,並不影響 linux 核心中舊繫結驅動。

在 Linux 中用 nmcli 命令繫結多塊網路卡

網路卡繫結為我們提供了兩個主要的好處:

  1. 高頻寬
  2. 冗餘/彈性

現在讓我們在 CentOS 7 上配置網路卡繫結吧。我們需要決定選取哪些介面配置成一個組介面(Team interface)。

執行 ip link 命令檢視系統中可用的介面。

 $ ip link

在 Linux 中用 nmcli 命令繫結多塊網路卡

這裡我們使用 eno16777736eno33554960 網路卡在 “主動備份” 模式下建立一個組介面。(譯者注:關於不同模式可以參考:多網路卡的7種bond模式原理)

按照下面的語法,用 nmcli 命令為網路組介面建立一個連線。

# nmcli con add type team con-name CNAME ifname INAME [config JSON]

CNAME 指代連線的名稱,INAME 是介面名稱,JSON (JavaScript Object Notation) 指定所使用的處理器(runner)。JSON 語法格式如下:

'{"runner":{"name":"METHOD"}}'

METHOD 是以下的其中一個:broadcast、activebackup、roundrobin、loadbalance 或者 lacp

1. 建立組介面

現在讓我們來建立組介面。這是我們建立組介面所使用的命令。

 # nmcli con add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'

在 Linux 中用 nmcli 命令繫結多塊網路卡

執行 # nmcli con show 命令驗證組介面配置。

# nmcli con show

在 Linux 中用 nmcli 命令繫結多塊網路卡

2. 新增從裝置

現在讓我們新增從裝置到主裝置 team0。這是新增從裝置的語法:

# nmcli con add type team-slave con-name CNAME ifname INAME master TEAM

在這裡我們新增 eno16777736eno33554960 作為 team0 介面的從裝置。

# 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

在 Linux 中用 nmcli 命令繫結多塊網路卡

再次用命令 #nmcli con show 驗證連線配置。現在我們可以看到從裝置配置資訊。

#nmcli con show

在 Linux 中用 nmcli 命令繫結多塊網路卡

3. 分配 IP 地址

上面的命令會在 /etc/sysconfig/network-scripts/ 目錄下建立需要的配置檔案。

現在讓我們為 team0 介面分配一個 IP 地址並啟用這個連線。這是進行 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

在 Linux 中用 nmcli 命令繫結多塊網路卡

4. 驗證繫結

#ip add show team0 命令驗證 IP 地址資訊。

#ip add show team0

在 Linux 中用 nmcli 命令繫結多塊網路卡

現在用 teamdctl 命令檢查 主動備份 配置功能。

# teamdctl team0 state

在 Linux 中用 nmcli 命令繫結多塊網路卡

現在讓我們把啟用的埠斷開連線並再次檢查狀態來確認主動備份配置是否像希望的那樣工作。

# nmcli dev dis eno33554960

在 Linux 中用 nmcli 命令繫結多塊網路卡

斷開啟用埠後再次用命令 #teamdctl team0 state 檢查狀態。

# teamdctl team0 state

在 Linux 中用 nmcli 命令繫結多塊網路卡

是的,它執行良好!!我們會使用下面的命令連線回到 team0 的斷開的連線。

#nmcli dev con eno33554960

在 Linux 中用 nmcli 命令繫結多塊網路卡

我們還有一個 teamnl 命令可以顯示 teamnl 命令的一些選項。

用下面的命令檢查在 team0 執行的埠。

# teamnl team0 ports

在 Linux 中用 nmcli 命令繫結多塊網路卡

顯示 team0 當前活動的埠。

# teamnl team0 getoption activeport

在 Linux 中用 nmcli 命令繫結多塊網路卡

好了,我們已經成功地配置了網路卡繫結 :-) ,如果有任何反饋,請告訴我們。

相關文章