Ver Feed RSS

tomelin

Redundância de links v0.1

Avalie este Post de Blog
Pessoal, como tive trabalho para achar alguma dica de redundância, resolvi criar um script para resolver o meu problema.

O script abaixo está todo comentado, então acho que fica fácil para todos. E como o fiz o mais dinâmico possível, é só mudar as variáveis que funcionará.

Antes de começar, criaremos o diretório /etc/link e o arquivo de log /var/log/redundante.log:

# mkdir /etc/link
# touch /var/log/redundante.log


No diretório /etc/link ficarão todos os arquivos utilizados pelo o script. Já no arquivo de log /var/log/redundante.log ficará todo o log gerado a cada execução do script.

Sempre que um link caiu e o outro substituiu o mesmo, demorou cerca de uns 20 segundos para a internet ficar no ar.

#!/bin/bash -x

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/etc

##############################################
## Criado por: Rafael Tomelin ###############
## Atualizado em: 2008/11/04 #################
## Verao: 0.02 ###############################
##############################################

#####A EMBRATEl usa o TERRA para fazer o teste
TERRA="200.176.2.10"

#####A GVT usa o UOL para fazer o teste
UOL="200.98.249.120"

#####GW da Embratel
ROTAEMBRATEL="201.21.xxx.1"

#####GW da GVT
ROTAGVT="10.1.1.1"

#####IP fixo da embratel
IPEMBRATEL="201.21.xxx.xx"

#####IP da gvt
IPGVT="10.1.1.254"

#####Interface da Embratel
ETHE="eth1"

#####Interface da GVT
ETHG="eth2"

#####IP do terra
TESTE="200.176.2.10"

#####Arquivo de firewall da embratel
FWE="/etc/firewall/fwEmbratel.sh"

#####Arquivo de firewall da gvt
FWG="/etc/firewall/fwGvt.sh"

#####Data atual
HORAATUAL=`date +%T`
DATAATUAL=`date +%Y-%m-%d`
DATA=$DATAATUAL" / "$HORAATUAL

#####Verifica a rota atual
ROTAATUAL=`(route -n | grep UG | awk -F' ' '{ print $2}')`

#####Deleta a rota
ROTADEL="route del default gw "

##### Comando para adicionar a rota
ROTAADD="route add default gw "

#####Adiciona a rota do terra (Se a embratel estiver fora)
route add -host $TERRA gw $ROTAEMBRATEL dev eth1
route add -host $UOL gw $ROTAGVT dev eth2

#####Se o terra pingar, o link esta OK
if ( ping -I $ETHE -c 4 $TERRA > /dev/null ); then
#Cria os logs
#echo $DATA >> /var/log/redundante.log
#echo "Link Embratel esta OK" >> /var/log/redundante.log

#####Se a rota default for igual a rota da embratel, nao faz nada
if [ "$ROTAATUAL" == "$ROTAEMBRATEL" ]; then
echo "Rota Embratel esta OK - $HORAATUAL" >> /var/log/redundante.log
#####Se a rota default for diferente da embratel, coloca a rota default como embratel
else
$ROTADEL $ROTAATUAL
$ROTAADD $ROTAEMBRATEL
$FWE
cat /etc/firewall/networkEmbratel.txt > /etc/sysconfig/network
echo "#!/bin/bash" >> /etc/firewall/linkVolto.sh
echo "$ROTADEL$ROTAGVT" >> /etc/firewall/linkVolto.sh
echo "$ROTAADD$ROTAEMBRATEL" >> /etc/firewall/linkVolto.sh
echo "$FWE" >> /etc/firewall/linkVolto.sh
chmod +x /etc/firewall/linkVolto.sh
/etc/firewall/linkVolto.sh
/bin/bash /etc/firewall/linkVolto.sh
rm -rf /etc/firewall/linkVolto.sh

echo "Link da Embratel esta no ar novamente OK - $HORAATUAL" >> /var/log/redundante.log
#Envia um email avisando que voltou o link da embratel
#mail -s "Cliente XYZ - O Link da EMBRATEL voltou a funcionar" [email protected] < /etc/firewall/embratel.txt
fi
#Finaliza os logs
#echo "Fim da verificacao EMBRATEL" >> /var/log/redundante.log
#echo " " >> /var/log/redundante.log
#echo " " >> /var/log/redundante.log

else
#####Se pingar eh pq o link esta ok
if ( ping -I $ETHG -c 4 $UOL >/dev/null ); then
#cria os logs
echo $DATA >> /var/log/redundante.log
echo "Link GVT esta OK" >> /var/log/redundante.log

##### Se a rota default for igual a da gvt, nao faz nada
if [ "$ROTAATUAL" == "$ROTAGVT" ]; then
echo "Rota Embratel ainda esta fora do ar" >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
##### Se a rota default for diferente da GVT, adiciona a rota defaul como sendo da GVT
else
$ROTADEL $ROTAEMBRATEL
$ROTAADD $ROTAGVT
$FWG
cat /etc/firewall/networkGvt.txt > /etc/sysconfig/network
echo "Ativando a rota da GVT" >> /var/log/redundante.log
#Envia o email avisando o que link da Embratel caiu
# mail -s "Cliente XYZ - O Link da EMBRATEL fora do AR" [email protected] < /etc/firewall/embratel_caiu.txt
# mail -s "Link da GVT esta no AR" [email protected] < /etc/firewall/gvt.txt
fi

#Cri os logs
echo "Fim da verificacao GVT" >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
echo " " >> /var/log/redundante.log
fi

fi


#####Deleta rotas do Terra
route del -host $TERRA gw $ROTAEMBRATEL dev eth1
route del -host $UOL gw $ROTAGVT dev eth2
Categorias
Artigos

Comentários

  1. Avatar de NandoJustino
    Opa! Amigo uso algo parecido com o seu mais utilizo uma ferramenta chamada [COLOR=Red]fping[/COLOR] para diser se o link está ok ou nao , com ping pode ocorrer de oscilar de um link para o outro sem necessidade .
    abraços
  2. Avatar de mandrak66
    Citação Postado originalmente por NandoJustino
    Opa! Amigo uso algo parecido com o seu mais utilizo uma ferramenta chamada fping para diser se o link está ok ou nao , com ping pode ocorrer de oscilar de um link para o outro sem necessidade .
    abraços

    ola, oque é fping?
    pode me explicar....
    antecipadamente, muito obrigado....
  3. Avatar de toniher
    Boa tarde, tomelin.

    Poderia so me esclarecer um detalhe.

    Vou ter que criar do arquivos de firewall? no caso se sim, onde posso colocar, pois eu deixo o meu no /etc/init.d/
    Estou com duvida em onde devo colocar e como será, qual deles será o startado junto do sistema.

    Grato pela atenção.

+ Enviar Comentário