Alta disponibilidade de links

Neste artigo venho compartilhar a minha experiência e desespero quando precisei criar um sistema de alta disponibilidade de links em ambiente Linux numa Sexta-feira às 5:30 da tarde. Acredito que muitos já passaram por isso. Obtive sucesso com a minha solução e espero que este artigo ajude muitas pessoas contribuindo ainda mais com a comunidade.

[ Hits: 31.865 ]

Por: Bruno em 16/11/2004


Implantação



Segue abaixo o script que torna esta solução possível, coloque-o em /etc/init.d e depois torne-o executável com "chmod 775":

#!/bin/bash
#
#####################################
# bruno@cdcorp.com.br 22/10/04 #
# levanta tunnel adsl #
#####################################


PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# gateway da LP
LPGW=200.232.63.201

# speedy
SPEEDY=200.207.207.65
IPTABLES=/sbin/iptables

# Testa acesso ao gateway da LP
if ping -c 2 -i 1 -q $LPGW > /dev/null 2>&1; then
        echo "PING OK"
if route -n | grep $SPEEDY > /dev/null;then
    echo "ROTA SPEEDY ENCONTRADA..DELETANDO..."
    route del default gw $SPEEDY > /dev/null
    echo "ROTA SPEEDY DELETADA"
    route add default gw $LPGW > /dev/null
    echo "ROTA LP adicionada"
    echo "Iniciando regras de firewall"
    $IPTABLES -t nat -D POSTROUTING 1 > /dev/null
    $IPTABLES -t nat -A POSTROUTING -i eth0 -j MASQUERADE > dev/null
    echo "REGRAS DE FIREWALL OK"
        fi

                # tudo ok
                echo "OK..SAINDO"
                exit 0
                
else
                echo "SENAO...."

              echo "Caso a LP esteja down"
          
   echo "verifica se existe rota da LP, se existir deleta"
   if route -n | grep $LPGW > /dev/null; then
   route del default gw $LPGW > /dev/null
   fi
    echo "adiciono a rota default da speedy"
    route add default gw $SPEEDY > /dev/null
    echo "rota adicionada"
    $IPTABLES -t nat -D POSTROUTING 1 > /dev/null
    $IPTABLES -t nat -A POSTROUTING -i eth2 -j MASQUERADE > /dev/null
    echo "regras de firewall adicionadas"

        fi
done
Página anterior    

Páginas do artigo
   1. Introdução
   2. Ambiente
   3. Implantação
Outros artigos deste autor

POP3 gateway com fetchmail

Detectando possíveis trojans e lkms em seu servidor

Leitura recomendada

Backup automatizado com HD externo

BackRE - Seu script de backup remoto

Script com muitas utilidades para arquivos e pastas

Monitoramento de pops para provedores

Assinatura de documentos PDF em lote via Bash

  
Comentários
[1] Comentário enviado por fabio em 16/11/2004 - 00:04h

Bruno, muito bom seu artigo, com certeza será útil para muito. Bela sacada! Já foi pra pastinha de favoritos da minha conta aqui no VOL :)

[]'s

[2] Comentário enviado por pop_lamen em 16/11/2004 - 01:25h

Amigo, bem legal,
mas eu acho q faltou um IF aih, se a LP estivesse down, mas o speedy ja configurado, então ele deveria sair:

echo "verifica se existe rota da LP, se existir deleta"
if route -n | grep $LPGW > /dev/null; then
route del default gw $LPGW > /dev/null

fi
#agora vamos checar se o gw ja nao eh speedy
if if route -n | grep $SPEEDY > /dev/null ;then
#se for sai, se não continua
echo "Speedy ja ativado"
exit 0
else
echo "adiciono a rota default da speedy"
route add default gw $SPEEDY > /dev/null
echo "rota adicionada"
$IPTABLES -t nat -D POSTROUTING 1 > /dev/null
$IPTABLES -t nat -A POSTROUTING -i eth2 -j MASQUERADE > /dev/null
echo "regras de firewall adicionadas"

fi
#acionamos um ultimo
fi
done

--------------
Além disso serial legal implementar funções, a asism chama-las com um loop infinito, pausando, podendo assim, checar tudo de tempo em tempo.



[3] Comentário enviado por silvioreis em 16/11/2004 - 03:41h

Bruno,

A proposta é boa, mas a sua implementação precisa melhorar, essas soluções de coisas no cron monitorando de tempos em tempos são horriveis.

Estou trabalhando no mesmo problema e não vejo como fugir do iproute2 + "alguma coisa".

O problema link dedicado com ip fixo e link adsl com ip dinamico parece não ser muito facil de resolver de maneira simples, ou seja, sem precisar aplicar patches de kernel.

Pq vc desistiu do iproute2 ?

[4] Comentário enviado por naoexistemais em 16/11/2004 - 05:28h

Bruno,

Esse artigo posso considerar o melhor que já vi aqui no VOL, parabens.......

Falou,

[5] Comentário enviado por y2h4ck em 16/11/2004 - 10:11h

Ae Bruno sup3r hax0r b1g b33r eheheh
Mandou bem no artigo.

Demorou mais saiu aheheheh

[]s brow.

Spawn

[6] Comentário enviado por chroot em 16/11/2004 - 10:18h

Obrigado pela forca galera, deixando claro que a solução esta aberta para criticas e opiniões, pois o objetivo é que juntos, consigamos tornar a solução a melhor possivel, então mãos a obra e ajudem a comunidade ;)

ps : humildade sempre

[7] Comentário enviado por wronieri em 16/11/2004 - 21:06h

Muito bom seu artigo Bruno estou tentando fazer este tipo de esquema mas com heartbeat vc nunca tentou usar este esquema?

Parabéns ;-)

[8] Comentário enviado por removido em 17/11/2004 - 15:48h

Excelente material...
Parabéns!!!!!!!!!!!!

[9] Comentário enviado por uxhsilva em 23/05/2006 - 16:08h

Parabens !!

[10] Comentário enviado por removido em 14/11/2006 - 09:38h

bonding \o/

[11] Comentário enviado por andrelopes.mrx em 26/12/2009 - 16:52h

Eu achei precário, que a inteligência fique num script agendado no cron, pense nisso: mantenha rota para os 2 gateways de saída para a internet, sendo a saída pelo link secundário com uma metrica pior.

Em ambientes BSD, você pode monitorar as interfaces de maneira eficiente com ifstated, mas creio que para o seu cenário nem isso seja necessário.

Espero ter contribuído com alguma idéia.

André Gustavo
blog: http://blog.mrx.com.br
gtalk: andre@mrx.com.br


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts