Redundância de links v0.1
por
em 19-12-2008 às 08:57 (8960 Visualizações)
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
Comentários
+ Enviar Comentário