Tenho dois roteadores Linux (RHEL 7) participando de uma configuração VRRP redundante fornecida pelo pacote keepalived versão 2.0.20. Esses dois roteadores costumavam executar o RHEL 6 e a versão 2.0.16 do keepalived, mas recentemente os atualizamos para as versões mencionadas.
Antes de atualizarmos, eu tinha um script que poderia executar no roteador de backup que faria com que o roteador assumisse o controle do roteador mestre. O script coletaria o valor de prioridade do roteador mestre atual e, em seguida, incrementaria sua própria prioridade para ser 1 maior e, em seguida, reiniciaria o serviço keepalived. Isso faria com que o roteador de backup assumisse o controle do mestre.
O script coletaria o valor do roteador mestre atual emitindo os seguintes comandos:
kill -s $(keepalived --signum=DATA) $(cat /var/run/keepalived.pid)
vrrpPriority='more /tmp/keepalived.data | grep -m1 "Master priority" | awk '{print $4}''
Agora que atualizamos, parece que o primeiro comando não faz mais nada. O comando parece ser executado sem erros, mas nunca recebo um arquivo gerado em /tmp/keepalived.data. Portanto, o segundo comando falha, pois esse arquivo não existe.
Existe uma maneira melhor ou diferente de obter o valor de prioridade do roteador mestre atual?
Outra diferença é que quando estávamos rodando no RHEL 6, o keepalived estava rodando como um script upstart enquanto hoje o keepalived está rodando como um serviço systemd. Todos os outros aspectos do keepalived parecem estar funcionando corretamente.
Eu consegui fazer isso funcionar. No processo de solução de problemas, descobri que o selinux estava impedindo o Keepalived de despejar seu estado no diretório /tmp. Depois de resolver os problemas do selinux e criar a política selinux necessária, ele começou a funcionar conforme o esperado.