与 nmcli 合作:断开连接并再次连接失败

Isa*_*aac 8 virtualbox networkmanager centos network-teaming

在 centos 7 虚拟机上,我创建了一个这样的团队:

nmcli connection add type team con-name team0  ifname veteam0
nmcli connection modify team0 team.config roundrobin.conf
[root@rhce1 ~]# cat roundrobin.conf
{
        "device":               "team0",
        "runner":               {"name": "roundrobin"},
        "ports":                {"enp0s9": {}, "enp0s10": {}}
}
# add slave interfaces
nmcli connection add type team-slave con-name team0-port0 ifname enp0s9 master team0
nmcli connection add type team-slave con-name team0-port1 ifname enp0s10 master team0
Run Code Online (Sandbox Code Playgroud)

我现在有以下连接:

[root@rhce1 ~]# nmcli con s
NAME                UUID                                  TYPE            DEVICE
team0               77869010-af1a-48a5-b10b-c05b3035837f  team            veteam0
team0-port1         99f54013-b20b-41d2-9661-d654b89870bd  802-3-ethernet  enp0s10
team0-port0         3f5e5924-f7f3-409a-b4cb-661904ddbf60  802-3-ethernet  enp0s9
Wired connection 1  acc2747d-9576-4ac5-a06a-d45d3a9a4ff4  802-3-ethernet  enp0s3
enp0s3              b4db7dd8-8735-4590-b12f-621d1003841a  802-3-ethernet  --
hostonly            8993c4c0-fa90-455d-ae83-d1a644c36886  802-3-ethernet  enp0s8
Run Code Online (Sandbox Code Playgroud)

这将正确启动所有接口:

[root@rhce1 ~]# nmcli dev status
DEVICE   TYPE      STATE      CONNECTION
enp0s10  ethernet  connected  team0-port1
enp0s3   ethernet  connected  Wired connection 1
enp0s8   ethernet  connected  hostonly
enp0s9   ethernet  connected  team0-port0
veteam0  team      connected  team0
lo       loopback  unmanaged  --
Run Code Online (Sandbox Code Playgroud)

我从 dhcp 获得了我的虚拟团队界面的 IP:

[root@rhce1 ~]# ip addr show veteam0
6: veteam0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 08:00:27:c7:15:f1 brd ff:ff:ff:ff:ff:ff
    inet 10.23.23.104/24 brd 10.23.23.255 scope global dynamic veteam0
       valid_lft 1073sec preferred_lft 1073sec
    inet6 fe80::a00:27ff:fec7:15f1/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

(我知道在典型的团队用例中,可能没有使用 dhcp,但静态 IP 也存在主要问题。)

现在我希望能够断开连接,然后再重新连接,而无需重新启动:

[root@rhce1 ~]# nmcli con down team0
[root@rhce1 ~]# nmcli dev status
DEVICE   TYPE      STATE         CONNECTION
enp0s3   ethernet  connected     Wired connection 1
enp0s8   ethernet  connected     hostonly
enp0s10  ethernet  disconnected  --
enp0s9   ethernet  disconnected  --
lo       loopback  unmanaged     --
[root@rhce1 ~]# nmcli con up team0
Error: Device 'veteam0' is waiting for slaves before proceeding with activation.
[root@rhce1 ~]# nmcli dev status
DEVICE   TYPE      STATE                                  CONNECTION
enp0s3   ethernet  connected                              Wired connection 1
enp0s8   ethernet  connected                              hostonly
veteam0  team      connecting (getting IP configuration)  team0
enp0s10  ethernet  disconnected                           --
enp0s9   ethernet  unavailable                            --
lo       loopback  unmanaged                              -
Run Code Online (Sandbox Code Playgroud)

现在可以通过先连接 enp0s10 使团队界面工作一半:

[root@rhce1 ~]# nmcli dev connect enp0s10
Device 'enp0s10' successfully activated with '99f54013-b20b-41d2-9661-d654b89870bd'.
[root@rhce1 ~]# nmcli con up team0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Run Code Online (Sandbox Code Playgroud)

但我的团队现在只有一台设备:

[root@rhce1 ~]# nmcli dev st
DEVICE   TYPE      STATE        CONNECTION
enp0s10  ethernet  connected    team0-port1
enp0s3   ethernet  connected    Wired connection 1
enp0s8   ethernet  connected    hostonly
veteam0  team      connected    team0
enp0s9   ethernet  unavailable  --
lo       loopback  unmanaged    --
Run Code Online (Sandbox Code Playgroud)

我的问题是,我目前看不到如何在不重启的情况下启动 enp0s9,因为设备处于“不可用”状态。我的理解是否正确,我应该能够在不重新启动的情况下启动 enp0s9,就像 enp0s10 一样?对我来说,我的设备 enp0s9 看起来有些可疑,但我不太明白是什么。我已经尝试分配新的 MAC 地址,但没有帮助。此外,使用传统的 ifcfg 配置,我可以毫无问题地打开和关闭我的 team0 界面。

或者可能是我的虚拟交换机(我使用的是 VirtualBox 主机网络)不支持(? - 或需要配置为支持)组队?

编辑:我尝试建立一个只有一个奴隶的团队。那行得通,我使用 enp0s9 和 enp0s10 得到了相同的行为 - 我必须先连接设备,然后才能建立连接。这是否意味着我的虚拟交换机正在断开一个设备的连接(偶然是 enp0s9 - 但因为它的确定性,它总是 enp0s9)?

我真的不需要“解决”这个问题 - 我很乐意将赏金提供给帮助我了解正在发生的事情的人。

Tek*_*Ops 1

我们经常使用绑定/组合,主要是在 Oracle Unbreakable Linux (RH CLONE) 上。我们通常使用 NMTUI 因为我们很懒......但我在你所做的事情中注意到的是:

  1. 取下团队界面
  2. 然后调出组队界面,奇怪的是它正在等待奴隶......
  3. 然后您手动启动其中一个从站,而另一个则变得不可用。

我们不必这样做。如果我们关闭团队界面,当我们打开它时,它会检查从站上的连接并激活它们,而无需任何进一步的命令。你从来没有真正“击倒”任何奴隶,所以你也不应该“提升”他们。

你等奴隶上来的时间够长吗?我们的几乎立即就出现了,我在许多服务器上都有这个,包括裸机上的 vsphere 以及 Oracle Unbreakable Linux。

“绑定”(团队)接口应该管理所有绑定成员(从属)。是的,您也可以将其与 DHCP 一起使用。

一些输出示例:

[root@goliath etc]# nmcli connection show
NAME                   UUID                                  TYPE            DEVICE 
Ethernet connection 1  d676e7bb-4612-4946-b5c9-6afd694ec754  802-3-ethernet  em1    
Ethernet connection 3  8c6b99d1-e8c0-494d-9795-4fec4f5ba871  802-3-ethernet  em3    
Bond connection 1      1e7952cf-2b62-4494-8b3c-2b7bdde786c8  bond            bond0  
Ethernet connection 4  7c79016c-95a8-4e19-9a9b-30ea20d5455c  802-3-ethernet  em4    
Ethernet connection 2  b8c82461-9fae-4912-adc8-fc40fb13125b  802-3-ethernet  em2    
[root@goliath etc]# 
[root@goliath etc]# nmcli dev status
DEVICE  TYPE      STATE      CONNECTION            
bond0   bond      connected  Bond connection 1     
em1     ethernet  connected  Ethernet connection 1 
em2     ethernet  connected  Ethernet connection 2 
em3     ethernet  connected  Ethernet connection 3 
em4     ethernet  connected  Ethernet connection 4 
lo      loopback  unmanaged  --                    
[root@goliath etc]# 
Run Code Online (Sandbox Code Playgroud)

nmtui 的样子如下:

NMTUI 文本-GUI 初始屏幕

NMTUI 中的接口定义如下: 绑定从配置

我还从其他服务器之一获取了数据,所以也许这会有所帮助:

    ]# nmcli dev show
    GENERAL.DEVICE:                         bond0
    GENERAL.TYPE:                           bond
    GENERAL.HWADDR:                         80:18:44:E5:39:E8
    GENERAL.MTU:                            1500
    GENERAL.STATE:                          100 (connected)
    GENERAL.CONNECTION:                     etherchannel 13 on CISCO
    GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/4
    IP4.ADDRESS[1]:                         192.168.10.10/0
    IP4.GATEWAY:                            192.168.10.129
    IP4.ROUTE[1]:                           dst = 192.168.10.129/32, nh = 0.0.0.0, mt = 300
    IP4.ROUTE[2]:                           dst = 192.168.10.10/32, nh = 0.0.0.0, mt = 0
    IP4.ROUTE[3]:                           dst = 192.168.10.129/32, nh = 0.0.0.0, mt = 0
    IP4.ROUTE[4]:                           dst = 0.0.0.0/0, nh = 192.168.10.129, mt = 0
    IP4.ROUTE[5]:                           dst = 0.0.0.0/0, nh = 192.168.10.129, mt = 300
    IP4.DNS[1]:                             192.168.10.203
    IP4.DNS[2]:                             10.1.8.9
    IP6.ADDRESS[1]:                         fe80::8218:44ff:fee5:39e8/64
    IP6.GATEWAY:                            --
    IP6.ROUTE[1]:                           dst = ff00::/8, nh = ::, mt = 256, table=255
    IP6.ROUTE[2]:                           dst = fe80::/64, nh = ::, mt = 256
    
    GENERAL.DEVICE:                         em2
    GENERAL.TYPE:                           ethernet
    GENERAL.HWADDR:                         80:18:44:E5:39:E8
    GENERAL.MTU:                            1500
    GENERAL.STATE:                          100 (connected)
    GENERAL.CONNECTION:                     Ethernet connection 2
    GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/3
    WIRED-PROPERTIES.CARRIER:               on
    IP4.GATEWAY:                            --
    IP6.GATEWAY:                            --
    
    GENERAL.DEVICE:                         em3
    GENERAL.TYPE:                           ethernet
    GENERAL.HWADDR:                         80:18:44:E5:39:E8
    GENERAL.MTU:                            1500
    GENERAL.STATE:                          100 (connected)
    GENERAL.CONNECTION:                     Ethernet connection 3
    GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
    WIRED-PROPERTIES.CARRIER:               on
    IP4.GATEWAY:                            --
    IP6.GATEWAY:                            --

    GENERAL.DEVICE:                         em4
    GENERAL.TYPE:                           ethernet
    GENERAL.HWADDR:                         80:18:44:E5:39:E8
    GENERAL.MTU:                            1500
    GENERAL.STATE:                          100 (connected)
    GENERAL.CONNECTION:                     Ethernet connection 4
    GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
    WIRED-PROPERTIES.CARRIER:               on
    IP4.GATEWAY:                            --
    IP6.GATEWAY:                            --
    
    GENERAL.DEVICE:                         em1
    GENERAL.TYPE:                           ethernet
    GENERAL.HWADDR:                         80:18:44:E5:39:EA
    GENERAL.MTU:                            1500
    GENERAL.STATE:                          30 (disconnected)
    GENERAL.CONNECTION:                     --
    GENERAL.CON-PATH:                       --
    WIRED-PROPERTIES.CARRIER:               on

    GENERAL.DEVICE:                         lo
    GENERAL.TYPE:                           loopback
    GENERAL.HWADDR:                         00:00:00:00:00:00
    GENERAL.MTU:                            65536
    GENERAL.STATE:                          10 (unmanaged)
    GENERAL.CONNECTION:                     --
    GENERAL.CON-PATH:                       --
    IP4.ADDRESS[1]:                         127.0.0.1/8
    IP4.GATEWAY:                            --
    IP6.ADDRESS[1]:                         ::1/128

    [root@loki xyz]# nmcli dev status
    DEVICE  TYPE      STATE         CONNECTION              
    bond0   bond      connected     etherchannel 13 on CISCO 
    em2     ethernet  connected     Ethernet connection 2   
    em3     ethernet  connected     Ethernet connection 3   
    em4     ethernet  connected     Ethernet connection 4   
    em1     ethernet  disconnected  --                      
    lo      loopback  unmanaged     --  
Run Code Online (Sandbox Code Playgroud)

我最初遇到的最困难的部分是确保服务器和网络交换机之间的绑定配置正确,以便双方都能理解绑定。然后我们通过拔掉电缆进行测试。

我真的希望这有帮助。

谢谢,大卫