Pular para o conteúdo

Balanceamento de Carga e Alta Disponibilidade usando IPTABLES

Este script foi implantado em um ambiente de teste ultilizando um servidor DNS, dois servidores WEB(Web Apache) e um servidor de arquivos.

Os servidores WEB são idênticos, onde fazem NFS com o servidor de arquivos, na qual estão localizados as páginas web. Ou seja, as webpages são comuns para os dois servidores WEB. O Script tem que estar localizado no servidor DNS.

A função do script é verificar a disponibilidade dos servidores utilizando o protocolo ICMP e fazer o balanceamento entre o mesmos.
Daniel Maciel Monteiro krun
Hits: 13.901 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

Este script foi implantado em um ambiente de teste ultilizando um servidor DNS, dois servidores WEB(Web Apache) e um servidor de arquivos.

Os servidores WEB são idênticos, onde fazem NFS com o servidor de arquivos, na qual estão localizados as páginas web. Ou seja, as webpages são comuns para os dois servidores WEB. O Script tem que estar localizado no servidor DNS.

A função do script é verificar a disponibilidade dos servidores utilizando o protocolo ICMP e fazer o balanceamento entre o mesmos.
Download balance_disp.sh Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

#!/bin/bash

www1=192.168.0.3
www2=192.168.0.4
if_int0=eth0

while true; do

   s1="0"
   s2="0"

#TESTANDO SERVIDOR 1
   
   if ping -c 1 -w 1 $www1 1>/dev/null 2>/dev/null; then
      s1="1"
   fi

#TESTANDO SERVIDOR 2
   
   if ping -c 1 -w 1 $www2 1>/dev/null 2>/dev/null; then
      s2="1"
   fi

/sbin/iptables -D PREROUTING -t nat -t $if_int0 -j DNAT --to 192.168.0.3 2>/dev/null   
/sbin/iptables -D PREROUTING -t nat -t $if_int0 -j DNAT --to 192.168.0.4 2>/dev/null
/sbin/iptables -D PREROUTING -t nat -t $if_int0 -j DNAT --to 192.168.0.3-192.168.0.4 2>/dev/null

   if [ $s1 = "1" -a $s2 = "1" ]; then
      echo "Server 1e2"
      /sbin/iptables -A PREROUTING -t nat -i $if_int0 -j DNAT --to 192.168.0.3-192.168.0.4
   elif [ $s1 = "1" ]; then
      echo "Server 1"
      /sbin/iptables -A PREROUTING -t nat -i $if_int0 -j DNAT --to 192.168.0.3
   if [ $s2 = "1" ]; then
      echo "Server 2"
      /sbin/iptables -A PREROUTING -t nat -i $if_int0 -j DNAT --to 192.168.0.4
   else
      echo "Servidores 1 e 2 não respondem!"
   fi
   
sleep 10
done
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Medir tempo de acesso a internet no log do Squid

Testando RAID na incialização e exibindo log no issue

Cadastra filmes

Remover e-mails com MX inexistente e status deferred em servidores Postfix

Script para listar tentativas de acessos

#1 Comentário enviado por hatin em 05/01/2009 - 18:38h
É pra está no servidor DNS ou no firewall?

Pq não faz sentido ter um chain PREROUTING no servidor DNS, a não ser
que ele também seja o roteador.

De qualquer forma, gostei da sua idéia. Ela ainda vai me ser útil. =D
#2 Comentário enviado por krun em 05/01/2009 - 19:36h
Sim amigo, o servidor principal tem papel de DNS e Firewall. Mais digamos que o firewall seja somente para aplicar essa função, e se quiser implementar um firewall mais completo isso fica a seu critério, sendo que ficaria ótimo também.

Abraços...

Contribuir com comentário

Entre na sua conta para comentar.