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

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

在 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

我现在有以下连接:

[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

这将正确启动所有接口:

[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  --

我从 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

(我知道在典型的组合用例中可能不会使用 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                              -

现在可以通过首先连接 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)

但是我的团队现在只由一个设备组成:

[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    --

我的问题是,我目前不知道如何在不重启的情况下启动 enp0s9,因为该设备处于“不可用”状态。我的理解是否正确,我应该能够像 enp0s10 一样在不重启的情况下启动 enp0s9 吗?在我看来,我的设备 enp0s9 似乎有些问题,但我不太清楚是什么问题。我已经尝试分配新的 MAC 地址,但没有帮助。此外,使用传统的 ifcfg 配置,我可以毫无问题地启动和关闭我的 team0 接口。

或者可能是我的虚拟交换机(我正在使用 VirtualBox hostonly 网络)不支持(?- 或者需要配置才能支持)组合?

编辑:我尝试建立一个只有一个从属设备的团队。这有效,并且我使用 enp0s9 和 enp0s10 得到了相同的行为 - 我必须先连接设备才能建立连接。这是否意味着我的虚拟交换机正在断开一个设备(碰巧是 enp0s9 - 但由于它是确定性的,因此它始终是 enp0s9)?

我并不真的需要“解决”这个问题——我很乐意将赏金提供给那些能帮助我了解发生了什么事情的人。

答案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]# 

以下是 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     --  

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

我真的希望这会有所帮助。

谢谢,大卫

相关内容