Balanceamento de Carga e Alta Disponibilidade usando IPTABLES

Publicado por Daniel Maciel Monteiro 30/12/2008

[ Hits: 13.666 ]

Download balance_disp.sh




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.

  



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

Scripts recomendados

Apinfo.bsh

Backup Remoto com rsync, automatico, para varias maquinas, sem senha.

Script para limpeza de arquivos temporários em Sabayon Linux

Wallpapers slideshow

Snake [ALFA] em Shell Script


  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts