unir-se à nmcli: baixar a conexão para baixo e para cima novamente

8

Em uma caixa virtual centos 7, eu crio um time assim:

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

Agora tenho as seguintes conexões:

[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

Isso traz todas as interfaces corretamente:

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

e recebo um IP do dhcp para minha interface de equipe virtual:

[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

(estou ciente de que, em um caso de uso de equipe típico, o dhcp provavelmente não está sendo usado, mas o problema principal também existe com IPs estáticos.)

Agora, gostaria de poder desligar a conexão e, mais tarde, novamente, sem reinicializar:

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

Agora, o interface da equipe pode funcionar a meio caminho, conectando enp0s10 primeiro:

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

Mas minha equipe agora consiste em apenas um dispositivo:

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

Meu problema é que atualmente não vejo como trazer o enp0s9 para cima sem uma reinicialização, já que o dispositivo está no estado "indisponível". O meu entendimento é correto, que eu deveria ser capaz de trazer o enp0s9 sem uma reinicialização, assim como enp0s10? Para mim, parece que há algo suspeito com o meu dispositivo enp0s9, mas não vejo bem o quê. Eu já tentei atribuir novos Endereços MAC, mas não ajuda. Além disso, usando a configuração tradicional do ifcfg, posso trazer minha interface team0 para cima e para baixo sem problemas.

Ou será que o meu comutador virtual (estou usando a rede de hostonly do VirtualBox) não suporta (? - ou precisa ser configurado para suportar) formação de equipes?

EDIT: Eu tentei construir uma equipe com apenas um escravo. Isso funcionou, e eu obtive o mesmo comportamento usando enp0s9 e enp0s10 - eu tive que conectar o dispositivo primeiro antes que eu pudesse fazer a conexão. Isso implica que o meu comutador virtual está desconectando um dispositivo (que por acaso é enp0s9 - mas porque seu determinístico é sempre enp0s9)?

Eu realmente não preciso "resolver" isso - eu ficaria feliz em dar a recompensa para alguém que me ajuda a entender o que está acontecendo.

    
por Isaac 12.01.2015 / 07:35

0 respostas