Loadbalance FAILOVER

Loadbalance FAILOVER:
Em um servidor com dois links de Internet, este script atuará no gerenciamento dos links. Caso o link que estiver ativo no momento, apresente erro (ou perda de conexão com a Internet por algum motivo), o script mudará o tráfego automaticamente para outro link existente. E se os dois links apresentarem problemas, então o script tenta uma reparação, restartando a rede e setando novamente as configurações: variáveis, limpeza de tabelas (iptables), roteamento, NAT e gateways.Obs.: É extremamente importante que cada gateway esteja configurado de acordo com sua interface nas VARIÁVEIS (“iface1” de acordo com “gw1” e “iface2” de acordo com “gw2″) do script, para que o route trate corretamente as saídas.Exemplo:
iface1=eth0 (interface)
gw1=”10.26.20.1″ (gateway)

iface2=eth1 (interface)
gw2=”10.15.20.1” (gateway)

[ Download: loadbalanceFAILOVER.sh ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

#!/bin/bash
 
  ### CONFIGURE AS VARIÁVEIS AQUI:
  testeip="8.8.8.8"
  iface1=eth0
  iface2=eth1
  gw1="10.26.20.1"
  gw2="10.15.20.1"
  nomeGw1="CTBC"
  nomeGw2="EMBRATEL"
  ### FIM DA CONFIG.
  rota1=0
  rota2=0
  nomeScript="loadbalanceFAILOVER.sh"
iniciar(){
  ### LIMPEZA:
  iptables -t mangle -F
  iptables -t mangle -X
  iptables --flush
  iptables -F
  iptables -t nat -F
  iptables -X
  iptables -t nat -X
  ip route flush cache
  ### HABILITA ROTEAMENTO:
  echo "1" > /proc/sys/net/ipv4/ip_forward
  ### MASCARA OS PACOTES COM DESTINO A INTERNET (NAT):
  iptables -t nat -A POSTROUTING -o $iface1 -j MASQUERADE
  iptables -t nat -A POSTROUTING -o $iface2 -j MASQUERADE
  ### ADICIONA OS GATEWAYS NAS DEVIDAS INTERFACES:
  route add -net default gw $gw1 dev $iface1
  route add -net default gw $gw2 dev $iface2
### LINK 1 ATIVO
clear
echo "Link em atividade: $nomeGw1"
echo "Interface:$iface1"
echo "Gateway:$gw1"
echo "Status: Ok"
while [ $(ping -qc 3 $testeip -I $iface1 > /dev/null 2>&1 ; echo $? ) = 0 ]
  do
  if [ $rota1 = 0 ]
  then
  rota1=1
  route del -net default gw $gw2 dev $iface2
  fi
done
route add -net default gw $gw2 dev $iface2
### LINK 2 ATIVO
clear
echo "Link em atividade: $nomeGw2"
echo "Interface:$iface2"
echo "Gateway:$gw2"
echo "Status: Ok"
while [ $(ping -qc 3 $testeip -I $iface2 > /dev/null 2>&1 ; echo $? ) = 0 ]
  do
  if [ $rota2 = 0 ]
  then
  rota2=1
  route del -net default gw $gw1 dev $iface1
  fi
  done
### Se os links estiverem 'down', tenta uma reparação restartando a rede e chamando novamente o script:
if [ $(ping -qc 3 $testeip -I $iface1 > /dev/null 2>&1 ; echo $? ) != 0 ] || [ $(ping -qc 3 $testeip -I $iface2 > /dev/null 2>&1 ; echo $? ) != 0 ]
  then
  clear
  echo "Sem conexao!"
  echo "Tentando reparar..."
  /etc/init.d/networking stop
  /etc/init.d/networking start
  iniciar
fi
}
parar(){
kill -9 `ps aux | grep $nomeScript | awk '{print $2}'`
echo "Morto"
exit
}
helpp(){
echo "Para executar o script, usa-se a seguinte sintaxe:"
echo " "
echo "Iniciar:"
echo "sh $nomeScript start"
echo "Parar:"
echo "sh $nomeScript stop"
echo "Rodar em modo background:"
echo "sh $nomeScript start &"
echo "Após rodar em background, verifique se está rodando:"
echo "ps aux | grep $nomeScript"
echo "Obs.: Não esquecer de configurar as VARIÁVEIS  do script de acordo com sua rede."
echo " "
echo "Desenvolvido por: Marcelo Viana"
echo " "
exit
}
case $1 in
'start') iniciar ; exit ;;
'stop') parar ; exit ;;
'--help') helpp ; exit ;;
*) echo "Parâmetro desconhecido: '$1'" ; echo "Utilize --help para informações. Exemplo: sh $nomeScript --help"; exit ;;
esac
# É o Senhor que mostra os caminhos. Agradeço por me ajudar através de tantos exemplos.
# E que bom existe o vivaolinux!
# www.technocristo.com

http://www.vivaolinux.com.br/script/LoadbalanceFAILOVER

Deixe um comentário