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.