NIC Teaming on CentOS 7 with nmtui
在Linux,可以將多個網絡鏈路聚合成一個邏輯鏈路,可以增加網絡吞吐量或冗餘。例如,我們可以將IP地址分配給由兩個網絡接口組成的組,使我們的吞吐量加倍,或者爲備份預留一個接口,如果第一個失敗,第二個網卡繼續工作。鏈路聚合在過去做了bond,但在RHEL7中,team將是首選方法。因爲team可以聚合更高效,比bonding更具優勢。下圖爲team與bond差異列表。
這裏我們將介紹如何創建和配置具有兩個不同網絡接口的team。
1、Teaming Daemon安裝
爲了使用teaming功能,首先必須安裝teamd包,系統通常不會安裝。使用如下命令進行安裝。
#yum install teamd -y
2、nmtui配置teaming
首先查看系統當前connection及device配置
[root@MiWiFi-R3-srv Desktop]# nmcli device status
DEVICE TYPE STATE CONNECTION
eno16777736 ethernet disconnected --
eno33554992 ethernet disconnected --
lo loopback unmanaged --
[root@MiWiFi-R3-srv Desktop]# nmcli connection show
NAME UUID TYPE DEVICE
[root@MiWiFi-R3-srv Desktop]#
兩塊網卡上均沒有connection.執行nmtui配置teaming。
選擇"edit a connection"移動光標至ok,回車進入下一步。
選擇add,回車。
選擇設備類型team,crate.
profile name根據需求設置,此處設置爲myteam0,device也可以根據需求設定,此處設定爲team0。設置完成後移動光標add處,添加slave設備。
選擇Ethernet類型創建
profile name根據需求設置,此處設置爲myteam0-port1,device設置爲服務器網卡設備名稱。
同上添加第二塊網卡並設置profile name與device.設置完成後如下圖結果。
json配置,移動光標至Edit處,回車將臨時打開一個vim窗口,在vim窗口中輸入{ "runner": {"name": "loadbalance"}},
保存退出後,顯示如下。
配置ipv4,設置爲manual,設置ip,網關,dns如下
完成後保存退出,teaming配置完成自動創建相關配置文件,如下:
[root@MiWiFi-R3-srv network-scripts]# cat ifcfg-myteam0
DEVICE=team0
TEAM_CONFIG="{\"runner\": {\"name\": \"loadbalance\"}}"
DEVICETYPE=Team
BOOTPROTO=none
DNS1=192.168.31.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=myteam0
UUID=1f4ed5e2-46a1-4dbf-a870-5b088957a434
ONBOOT=yes
IPADDR=192.168.31.108
PREFIX=24
GATEWAY=192.168.31.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
[root@MiWiFi-R3-srv network-scripts]# cat ifcfg-myteam0-port1
NAME=myteam0-port1
UUID=2b975876-780f-4181-971e-a79cf6a07a40
DEVICE=eno16777736
ONBOOT=yes
TEAM_MASTER=1f4ed5e2-46a1-4dbf-a870-5b088957a434
DEVICETYPE=TeamPort
[root@MiWiFi-R3-srv network-scripts]# cat ifcfg-myteam0-port2
NAME=myteam0-port2
UUID=24e3ef82-fb93-4d11-9a6e-4c27227f7f66
DEVICE=eno33554992
ONBOOT=yes
TEAM_MASTER=1f4ed5e2-46a1-4dbf-a870-5b088957a434
DEVICETYPE=TeamPort
[root@MiWiFi-R3-srv network-scripts]#
再次查看當前connection狀態。
[root@MiWiFi-R3-srv Desktop]# nmcli connection show
NAME UUID TYPE DEVICE
myteam0 1f4ed5e2-46a1-4dbf-a870-5b088957a434 team team0
myteam0-port2 24e3ef82-fb93-4d11-9a6e-4c27227f7f66 802-3-ethernet eno33554992
myteam0-port1 2b975876-780f-4181-971e-a79cf6a07a40 802-3-ethernet eno16777736
查看服務器當前設備的狀態。
[root@MiWiFi-R3-srv Desktop]# nmcli device status
DEVICE TYPE STATE CONNECTION
eno16777736 ethernet connected myteam0-port1
eno33554992 ethernet connected myteam0-port2
team0 team connected myteam0
lo loopback unmanaged --
查看ip地址信息。
[root@MiWiFi-R3-srv Desktop]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP qlen 1000
link/ether 00:0c:29:51:e8:75 brd ff:ff:ff:ff:ff:ff
3: eno33554992: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team0 state UP qlen 1000
link/ether 00:0c:29:51:e8:75 brd ff:ff:ff:ff:ff:ff
5: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:0c:29:51:e8:75 brd ff:ff:ff:ff:ff:ff
inet 192.168.31.108/24 brd 192.168.31.255 scope global team0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe51:e875/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
查看myteam0的詳細信息及狀態如下
[root@MiWiFi-R3-srv Desktop]# teamdctl team0 state
setup:
runner: loadbalance
ports:
eno16777736
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
eno33554992
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
通過teamnl查看slave網卡狀態
[root@MiWiFi-R3-srv ~]# teamnl team0 ports
3: eno33554992: up 1000Mbit FD
2: eno16777736: up 1000Mbit FD
[root@MiWiFi-R3-srv ~]#
3、測試
在客戶及ping 192.168.31.108,然後在服務器端斷開某塊網卡鏈接,ping命令不終端。
[root@MiWiFi-R3-srv Desktop]# nmcli device disconnect eno16777736
Device 'eno16777736' successfully disconnected.
[root@MiWiFi-R3-srv Desktop]#
[root@MiWiFi-R3-srv Desktop]# nmcli connection show
NAME UUID TYPE DEVICE
myteam0-port2 1a0f2bfd-cea1-4c7b-b2de-d34199b8561e 802-3-ethernet eno33554992
myteam0-port1 8e0c325c-d069-4014-bb75-1fa1f4674618 802-3-ethernet --
myteam0 e2976c8e-da7d-4901-88c6-db8a9913947c team team0
[root@MiWiFi-R3-srv Desktop]# nmcli device status
DEVICE TYPE STATE CONNECTION
eno33554992 ethernet connected myteam0-port2
team0 team connected myteam0
eno16777736 ethernet disconnected --
lo loopback unmanaged --
[root@MiWiFi-R3-srv Desktop]#
[root@MiWiFi-R3-srv Desktop]# teamdctl team0 state
setup:
runner: loadbalance
ports:
eno33554992
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
[root@MiWiFi-R3-srv Desktop]#
斷開鏈接後,查看客戶端ping未終端。
4、修改team配置
對於team的配置可以通過nmtui或者nmcli進行修改,nmtui打開圖形,在json配置界面,選擇edit修改vim窗口的內容保存退出即可。
[root@MiWiFi-R3-srv Desktop]# nmcli connection down myteam0
Connection 'myteam0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
[root@MiWiFi-R3-srv Desktop]# nmcli connection show
NAME UUID TYPE DEVICE
myteam0-port1 2b975876-780f-4181-971e-a79cf6a07a40 802-3-ethernet --
myteam0-port2 24e3ef82-fb93-4d11-9a6e-4c27227f7f66 802-3-ethernet --
myteam0 1f4ed5e2-46a1-4dbf-a870-5b088957a434 team --
[root@MiWiFi-R3-srv Desktop]# nmcli device status
DEVICE TYPE STATE CONNECTION
eno16777736 ethernet disconnected --
eno33554992 ethernet disconnected --
lo loopback unmanaged --
[root@MiWiFi-R3-srv Desktop]# nmcli connection up myteam0-port1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/12)
[root@MiWiFi-R3-srv Desktop]# nmcli connection up myteam0-port2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
[root@MiWiFi-R3-srv Desktop]# nmcli connection up myteam0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)
[root@MiWiFi-R3-srv Desktop]# nmcli device status
DEVICE TYPE STATE CONNECTION
eno16777736 ethernet connected myteam0-port1
eno33554992 ethernet connected myteam0-port2
team0 team connected myteam0
bond0 bond unmanaged --
lo loopback unmanaged --
[root@MiWiFi-R3-srv Desktop]# nmcli connection show
NAME UUID TYPE DEVICE
myteam0-port1 2b975876-780f-4181-971e-a79cf6a07a40 802-3-ethernet eno16777736
myteam0-port2 24e3ef82-fb93-4d11-9a6e-4c27227f7f66 802-3-ethernet eno33554992
myteam0 1f4ed5e2-46a1-4dbf-a870-5b088957a434 team team0
[root@MiWiFi-R3-srv Desktop]# teamdctl team0 state
setup:
runner: roundrobin
ports:
eno16777736
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
eno33554992
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
[root@MiWiFi-R3-srv Desktop]#
備註:
(1)、team配置文件的可以看考/usr/share/doc/teamd-1.25/目錄中文檔的寫法,也可以參考
man teamd.conf幫助內容
[root@MiWiFi-R3-srv ~]# cd /usr/share/doc/teamd-1.25/
[root@MiWiFi-R3-srv teamd-1.25]# ls
COPYING example_configs example_ifcfgs
[root@MiWiFi-R3-srv teamd-1.25]# cd example_configs/
[root@MiWiFi-R3-srv example_configs]# ls
activebackup_arp_ping_1.conf activebackup_ethtool_3.conf broadcast.conf loadbalance_3.conf
activebackup_arp_ping_2.conf activebackup_multi_lw_1.conf lacp_1.conf random.conf
activebackup_ethtool_1.conf activebackup_nsna_ping_1.conf loadbalance_1.conf roundrobin_2.conf
activebackup_ethtool_2.conf activebackup_tipc.conf loadbalance_2.conf roundrobin.conf
[root@MiWiFi-R3-srv example_configs]#
(2)、runners available are listed below(配置時'-'去除輸入)
broadcast (data is transmitted over all ports)
round-robin (data is transmitted over all ports in turn)
active-backup (one port or link is used while others are kept as a backup)
loadbalance (with active Tx load balancing and BPF-based Tx port selectors)
lacp (implements the 802.3ad Link Aggregation Control Protocol)