Объединение с 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  --

и я получаю IP-адрес от dhcp для интерфейса моей виртуальной команды:

[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 без перезагрузки, так как устройство находится в состоянии "недоступно". Верно ли мое понимание того, что я смогу запустить enp0s9 без перезагрузки, как enp0s10? Мне кажется, что с моим устройством enp0s9 что-то подозрительно, но я не совсем понимаю, что. Я уже пытался назначить новые MAC-адреса, но без помощи. Кроме того, используя традиционную конфигурацию ifcfg, я могу без проблем перенести мой интерфейс team0 вверх и вниз.

Или может быть так, что мой виртуальный коммутатор (я использую только хост-сеть VirtualBox) не поддерживает (? - или должен быть настроен для поддержки) группирование?

РЕДАКТИРОВАТЬ: Я пытался создать команду только с одним рабом. Это сработало, и я получил то же поведение, используя 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:

Я также получил данные с одного из других серверов, и, возможно, это поможет:

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

Изначально самой сложной задачей для меня было убедиться, что конфигурация соединения между серверами и сетевыми коммутаторами правильна, чтобы обе стороны понимали связь. Затем мы протестировали, отсоединив кабели.

Я очень надеюсь, что это помогло.

Спасибо, Дэвид

Другие вопросы по тегам