FailOver – Testando e Trocando Link OFFLINE automaticamente

Prezados colegas,
Primeiramente, saudações pinguianas a todos.
Já tem um certo tempo que não posto nada, pois ocorreram diversas situações em vinha vida profissional e pessoal, que me tomaram muito tempo.
Ha um tempo atrás, escrevi esse artigo que ensina como fazer um WanBalance com dois link. Nesse artigo eu informei que posteriormente escreveria sobre o FailOver. Então, para cumprir com a minha promessa, criei o script abaixo para efetuar essa função.

Vamos colocar a mão na massa.
1º – Crie o arquivo com o comando abaixo:
vim /usr/local/bin/failover
2º – Cole o conteúdo abaixo:
#!/bin/bash
DATA=`date`
IF_PADRAO="eth0"
IP_PADRAO="10.0.0.1"
RD_PADRAO="10.0.0.0/255.255.248.0"
IF_LINK1="eth1"
IP_LINK1="201.143.112.163"
GW_LINK1="201.143.112.162"
RD_LINK1="201.143.112.161/255.255.255.248"
IF_LINK2="eth2"
IP_LINK2="177.149.109.105"
GW_LINK2="177.149.109.104"
RD_LINK2="177.149.109.103/255.255.255.248"
GW_DEFAULT="`ip ro | grep -i default | cut -f3 -d" "`"
rm -rf /tmp/IP_online
link1(){
ping -c 4 -I $IP_LINK1 8.8.8.8 2>&- 1>&-
if [ $? != "0" ];then
echo "$DATA - Link1 fora" >> /var/log/failover.log
echo "$GW_LINK1" >> /tmp/IP_offline
else
echo "$GW_LINK1" >> /tmp/IP_online
fi
}
link2(){
ping -c 4 -I $IP_LINK2 8.8.8.8 2>&- 1>&-
if [ $? != "0" ];then
echo "$DATA - Link2 Fora" >> /var/log/failover.log
echo "$GW_LINK2" >> /tmp/IP_offline
else
echo "$GW_LINK2" >> /tmp/IP_online
fi
}
failover(){
while [ "`route -n | grep "UG"`" ];do
route del default
done
if [ "$GW_DEFAULT" != "$GW_LINK1" ];then
route add default gw $GW_LINK1
echo "$DATA - Mudando para Link1" >> /var/log/failover.log
else
route add default gw $GW_LINK2
echo "$DATA - Mudando para Link2" >> /var/log/failover.log
fi
}
link1
link2
if [ "`cat /tmp/IP_online | grep -i "$GW_DEFAULT"`" != "" ];then
if [ "`cat /tmp/IP_online | grep -i "$GW_LINK1"`" != "" ] && [ "$GW_DEFAULT" != "$GW_LINK1" ];then
echo "$DATA - Mudando para Link1 - Link novamente no ar" >> /var/log/failover.log
route del default
route add default gw $GW_LINK1
fi
else
failover
fi
3º – Salve o arquivo e saia do vim.
Agora precisamos colocar o script no crontab, para que rode automaticamente.
4º – Edite o arquivo de configuração do crontab com o comando abaixo:
vim /etc/crontab
5º – Deixe-o conforme a imagem abaixo, salve e saia do crontab.

6º – Reinicie o crontab com o comando abaixo:
/etc/init.d/cron restart
Obs: Você pode adapta-lo conforme a sua infra.
Espero que possa ser útil pra vocês!
Espero ter colaborado!
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!

Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l

Favorecido: Luiz Henrique Marques Fagundes






“RD_LINK1” e “RD_LINK2” é o ip de que?