Balanceamento de Carga e Alta Disponibilidade usando IPTABLES

Publicado por Daniel Maciel Monteiro 30/12/2008

[ Hits: 13.437 ]

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

Script para o Qemu usando Dialog

pskiller

Aprenda a falar os números de 0 a 99 em Inglês

Scrip de ordenação

Sistema de Gestão de Protocolos em YAD


  

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