interfaces escravas não obtendo o mesmo ID de agregador no LACP

1

Eu tenho um bug em alguns servidores onde o LACP ( 802.3ad ) não está funcionando. Eu tenho em todos os servidores um dispositivo de ligação bond0 com dois eth escravos e cada interface é conectada em um swich diferente, e ambos os switches configurados com LACP.

Tudo parece estar ok, mas um engenheiro de rede detectou que alguma MLAG (implementação do Arista LACP) não estava funcionando enquanto os dispositivos físicos estavam funcionando.

Quando olhei para /proc/net/bonding/bond0 dos servidores afetados, descobri que cada interface tem um Aggregator ID diferente. Nos servidores nominais, o Aggregator ID é o mesmo.

O problema pode ser reproduzido desligando e ligando a porta no switch, então podemos observar que apesar do link físico estar ativo, o MLAG está inativo. O bug está presente no RHEL 6 e 7 (mas nem todos os servidores são afetados).

Configuração

#/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
MACADDR=14:02:ec:44:e9:80
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4"
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no

# /etc/sysconfig/network-scripts/ifcfg-eno49 (same for other interface)
HWADDR=14:02:ec:44:e9:80
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no

Nós temos uma solução agora - coloque e baixe eth interface no servidor - mas isso não é o ideal.

Para verificar o protocolo LACP, eu fiz

tcpdump -i eno49 -tt -vv -nnn ether host 01:80:c2:00:00:02

Eu posso ver um pacote a cada 30 segundos em uma interface, mas na outra eu vejo a transmissão a cada 1 segundo como estava tentando estabelecer a sessão do LACP.

Você tem uma maneira de solucionar problemas e corrigir isso?

(desculpe se eu não usei o termo certo para rede eu não sou realmente habilidoso no LACP)

Obrigado

    
por Baptiste Mille-Mathias 08.08.2018 / 09:22

1 resposta

0

Depois de pesquisar alguma documentação e alguns testes, descobri que quando um servidor está usando uma ligação você precisa forçar o monitoramento dos links de rede usando o parâmetro miimon do módulo bonding .

Ao olhar para /proc/net/bonding/bond0 , eu deveria ter visto que um dos dispositivos tem o status MII down , onde ele estava no nível do link.

link afirma que:

It is critical that a link monitoring mode, either the miimon or arp_interval and arp_ip_target parameters be specified. Configuring a bond without a link monitoring mode is not a valid use of the bonding driver

Então, para informar que no arquivo ifcfg-bond0 você passa isso nas opções BONDING_OPTS

#/etc/sysconfig/network-scripts/ifcfg-bond0
...
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4 miimon=100"
...

então é obrigatório pesquisar os links a cada 100 ms

    
por 09.08.2018 / 19:20