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?