Há muitas maneiras de eliminar esse gato, mas keepalived
pode ser um opção .
keepalived é uma implementação VRRP , o que significa que você pode definir um ip "virtual" que pertence a um ou outro dos seus roteadores. Normalmente, você designa um como mestre e outro como secundário. Se o mestre ficar indisponível, o secundário assume a propriedade do endereço IP.
Em seu cenário, isso seria o IP do gateway de seus clientes. Dessa forma, eles estão sempre falando com o mesmo endereço IP, e isso vai para o primeiro ou segundo roteador, dependendo de qual é o mestre.
Se o roteador mestre estiver inativo, isso fará com que o secundário assuma o controle - os pacotes "hello" de troca principal e secundária e, assim que o secundário não ouvir mais o mestre, ele assume o IP.
No entanto, você precisaria de mais para monitorar o link e deixar o mestre colocar-se no modo não disponível - você pode fazer isso usando "scripts de trilha".
Por exemplo, aqui está a configuração do mestre:
vrrp_instance RouterVRRP {
state MASTER
interface eth0
virtual_router_id 50
priority 200
advert_int 1
virtual_ipaddress {
10.10.10.100/32 dev eth0
}
track_script {
check_google
}
}
Em seguida, a definição do script da faixa:
vrrp_script check_google {
script "/scripts/pinggoogle.sh"
interval 3 # check every 3 seconds
fall 3 # require 3 fails for down
rise 2 # require 2 successes back up
}
O script faria um ping no google e retornaria um 0 para todos, e 1 para uma falha.