Eu tenho um bug em alguns servidores onde o LACP ( 802.3ad
) não está funcionando. Tenho em todos os servidores um dispositivo de ligação bond0
com dois eth
escravos e cada interface é plugada em um swich diferente, e ambos os switches configurados com LACP.
Tudo parece estar bem, mas um engenheiro de rede detectou que algum MLAG (implementação Arista LACP) não estava funcionando enquanto os dispositivos físicos estavam ativos.
Quando olhei para /proc/net/bonding/bond0
os servidores afetados, descobri que cada interface tem um arquivo Aggregator ID
. Em servidores nominais Aggregator ID
é o mesmo.
O problema pode ser reproduzido desligando e ligando a porta do 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
Temos uma solução alternativa agora - configurar e configurar a eth
interface no servidor - mas isso não é o ideal.
Para verificar o protocolo LACP, fiz
tcpdump -i eno49 -tt -vv -nnn ether host 01:80:c2:00:00:02
Posso ver um pacote a cada 30 segundos em uma interface, mas na outra vejo um pacote a cada 1 segundo, pois estava tentando estabelecer uma sessão LACP.
Você tem uma maneira de solucionar e corrigir isso?
(desculpe se não usei o termo certo para rede, não sou muito habilidoso em LACP)
Obrigado
Depois de pesquisar algumas documentações e alguns testes, descobri que quando um servidor está usando ligação, você precisa forçar o monitoramento dos links de rede usando o
miimon
parâmetro dobonding
módulo.Enquanto olhava,
/proc/net/bonding/bond0
eu deveria ter visto um dos dispositivos com o status MIIdown
onde, na verdade, estava no nível do link.https://access.redhat.com/articles/172483#Link_Monitoring_Modes afirma que:
Então para relatar isso no
ifcfg-bond0
arquivo você passa isso nasBONDING_OPTS
opçõespor isso força a sondagem dos links a cada 100ms.
Reinicie o serviço de rede para aplicar a alteração.