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)
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 ]
#!/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 ATIVOclearecho "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 fidoneroute add -net default gw $gw2 dev $iface2### LINK 2 ATIVOclearecho "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 iniciarfi}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