Alta disponibilidade de link - rápido e simples

Nesse artigo vou explicar detalhadamente como ter um gateway com alta disponibilidade de link em um único servidor,
de uma forma rápida e simples.

[ Hits: 20.976 ]

Por: danilorpneves em 21/12/2011


Finalizando



Mas então você me pergunta: e se o servidor reiniciar? O que vai acontecer?

Isto é um problema, porque esse Daemon não vai ser carregado automaticamente e sendo assim, você precisa carregar ele manualmente.

Calma que para isto tem uma solução!

Para isso consegui um script, e com algumas alterações minhas e do meu colega de trabalho Renan Fagundes, fizemos um script simples para resolver esse problema.

Dentro do diretório de inicialização, edite o seguinte script:

# ee /usr/local/etc/rc.d/link.sh

 #!/bin/sh
 #echo -n ' link '

 case "$1" in

 start)
     start=`ls -la /var/run/link.pid 2>&1`
     if [ $? -eq 1 ]
     then
       /usr/local/sbin/ifstated -f /usr/local/etc/ifstated.conf
       ps -auxw | grep /usr/local/sbin/ifstated | grep -v grep |awk '{print $2}' -> /var/run/link.pid
       echo "Iniciando Alta Disponibilidade"
 else
       echo "Disponivel"
     fi
     ;;
 stop)
     stop=`ls -la /var/run/link.pid 2>&1`
     if [ $? -eq 0 ]
     then
       kill -9 `cat /var/run/link.pid`
       rm /var/run/link.pid
       echo "Desativando Alta Disponibilidade"
     else
       echo "Indisponivel"
     fi
       ;;
 *)
       echo "Usage: `basename $0` {start|stop}" >&2
       exit 64
       ;;
 esac
 exit


Agora só salvar alterar permissões do arquivo e permissão de execução:

# chmod 755 /usr/local/etc/rc.d/link.sh
# chmod +x /usr/local/etc/rc.d/link.sh


Agora vou explicar o que o script faz de uma forma rápida e simples.

Todo Daemon tem um PID, então eu usei este PID para poder matar o processo. E com esse script posso dar um 'start' ou 'stop' na hora que eu quiser, além dele carregar automaticamente na hora da inicialização do servidor.

Ao iniciar o script, ele gera um arquivo chamado de '/var/run/link.pid', dentro deste arquivo está o PID do Daemon  Ifstated.

Quando você quer parar o serviço, ele vai ler este arquivo verificar qual o PID que está dentro dele e matar esse PID, e depois excluirá o arquivo '/var/run/link.pid'.

É isso que o script faz, sem segredo nenhum.

Start no serviço:

# /usr/local/etc/rc.d/link.sh start

Stop no serviço:

# /usr/local/etc/rc.d/link/sh stop

Pronto, agora é só fazer os testes.

Espero que gostem. Aceito críticas, sugestões e elogios. :)
Página anterior    

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

Webconferência com OpenMeetings no Debian 5.0

Instalando Cacti no Debian 5.0

Leitura recomendada

Ubuntu 10.04 OpenLDAP NFS QUOTA

Servidor Debian 6 DHCP + Squid + IPtables

Linux como roteador Cisco

Instalação de servidor Slackware 10.2

Debian NetInstall: instalação personalizada

  
Comentários
[1] Comentário enviado por danniel-lara em 21/12/2011 - 11:42h

Parabens muito bom esse artigo

[2] Comentário enviado por removido em 21/12/2011 - 14:42h

Excelente artigo !

[3] Comentário enviado por rafaelc.lopes em 21/12/2011 - 16:32h

Parabéns, excelente a explicação!

[4] Comentário enviado por sansimon em 24/12/2011 - 01:24h

E se o link for dinâmico? Qual seria a mudança?


saudações.

[5] Comentário enviado por danilorpneves em 24/12/2011 - 14:55h

sansimon

Preciso saber como é seu ambiente.
Como por exemplo se seu modem tem opção de fazer aquelas configurações de registrar no NOIP. Assim fica simples e você faz o ping no domínio.
E configure seu roteador pra entregar IP privado amarrado com MAC no seu servidor. Assim vai pingar no domínio e caso não conseguir, vai alterar a rota para o outro modem também entregando IP privado. Acho que é isso :D.

[6] Comentário enviado por radeschi em 26/12/2011 - 00:14h

Fiz um script shell para redundância de links em FreeBSD, mas pode funcionar também em Linux com poucas alterações.. Com ele não existe necessidade de nenhum tipo de software adicional..

O que ele faz é criar uma rota pelo link principal para algum IP externo que dificilmente cai, assim como uma rota com outro IP externo pelo link2, e outros 3 IPs externos para fazer o teste de conexão..

Então ele fica em loop pingando um ip externo (8.8.8.8 por exemplo), se esse IP não responder, ele tenta o próximo cadastrado, se esse também falhar, ele testar o terceiro, sendo que se esse falhar, ele assume que o link atual está fora do ar, então ele testa pra ver qual link está sendo usado(com as rotas estáticas criadas anteriormente), e o link que responder, é o que assume o tráfego, após isso, ele envia um email avisando sobre o ocorrido, e altera a página de acesso negado do squid, informando os usuários que o servidor está operando com a redundância de link(que no meu caso o limite de banda é menor, prejudicando a navegação), inclusive o próprio script adiciona alguns sites na lista de acesso negado do squid(youtube,vimeo, etc)..
A partir daí, além de testar a conexão, o script começa a monitorar o link principal, assim que ele voltar a responder, a rota é alterada novamente, e todas as modificações são desfeitas...

Depois vou ajeitar mais ele, comentar e se possível postar aqui!

[7] Comentário enviado por danilorpneves em 26/12/2011 - 15:03h

bacana em radeschi
depois você compartilha esse script com a galera :D.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts