3 - Métodos

[editar]
Monografía creado por Juan Carlos Inostroza. Extraido de: http://www.tux.cl/doku.php?id=articulos:clusters:configuracion_de_un_webcluster
28 de Febrero de 2006

Los métodos usados fueron dos


3.1 DNS Round Robin


DNS RR es una forma de hacer “rotar” en una “ronda” de números IP que corresponden a un mismo servidor. Para ello se configura el archivo de zona de la siguiente manera:

@            IN            SOA  ....

...

...

; zona del cluster

cluster0    IN            A             192.168.1.150

cluster1    IN            A             192.168.1.151

cluster2    IN            A             192.168.1.152

; el cluster

cluster      60            IN            A             192.168.1.150

60            IN            A             192.168.1.151

60            IN            A             192.168.1.152

; eof

Y configurar Apache a todos los servidores (cluster0-2) de la siguiente manera:

# /etc/httpd/conf/httpd.conf

...

....

...

NameVirtualHost <ip>

<VirtualHost <nombre_cluster> >

DocumentRoot <ruta1>

CustomLog <ruta_log> vcommon

</VirtualHost>

<VirtualHost cluster.dominio>

DocumentRoot <ruta2>

CustomLog <ruta_log> vcommon

</VirtualHost>

# eof

Reiniciar Apache y Named en todas las máquinas

Al hacer entonces

nslookup cluster.dominio

el servidor responderia

Name:      cluster.dominio

Address:  192.168.1.150

Name:      cluster.dominio

Address:  192.168.1.151

Name:      cluster.dominio

Address:  192.168.1.152

(puede darse un orden distinto, por ejemplo, 192.168.1.152 primero).

Al escribir entonces en el navegador de algún cliente Web de la intranet:

http://cluster.dominio

Respondería cualquiera de los tres, dependiendo cual este primero en el DNS, sin reescribir el URL en el cliente.

El sistema del DNS Round Robin no es una forma de compartir carga entre servidores, sino una forma de destinar iguales conexiónes entre varias máquinas. No hay un balance de carga ni tampoco comparten carga entre ellas. Es el sistema más básico y efectivo.

3.2 URL Rewriting (tambien llamado Proxy Round Robin)


Este método es totalmente distinto a DNS RR, pero muy similar en su implementación. Por tanto, hay que modificar la zona del dominio, borrar el Round Robin (pero conservar los registros de cluster0, cluster1 y cluster2) y en vez de eso:

@            IN            SOA        .....

...

...

cluster      IN            A             192.168.1.150

O sea, que cluster.dominio apunte solo hacía un número IP.

Reiniciar Named.

No tocar a cluster1 y cluster2 en Apache.

Ahora, configurar a cluster0 (jefe de clusters) en Apache con lo siguiente:

# /etc/httpd/conf/httpd.conf

...

...

...

NameVirtualHost 192.168.1.150

<VirtualHost cluster0.dominio>

DocumentRoot /var/www/cluster0

CustomLog /var/log/httpd/cluster0

</VirtualHost>

# lo siguiente hace el truco del URL-REWRITE

<VirtualHost cluster.dominio>

RewriteEngine on

RewriteMap    lb      prg:/var/www/balance.pl

RewriteRule   ^/(.+)$ $           [P,L]

</VirtualHost>

# EOF

Las opciones [P,L] significan: [P] : (Proxy) Inicializa el modulo de proxy y fuerza una peticion [L] : (Last) Detiene el proceso de reescritura de reglas.

Ahora crear un archivo en PERL o cualquier otro lenguaje scripting en la ruta indicada en la linea “RewriteMap lb”. En este caso, /var/www

El archivo de ejemplo que coloco es balance.pl que es el siguiente:

#!/usr/bin/perl

# balance.pl - programa de balance de carga

# hijacked de la documentacion de Apache

$| = 1;

$name   = "cluster";

$first  = ;

$last   = 2;

$domain = "dominio"; # nombre dominio

$cnt = ;

while (<STDIN>) {

$cnt = (($cnt+1) % ($last+1-$first));

$server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);

print "http://$server/$_";

}

EOF

Darle permisos de ejecucion (chmod +x balance.pl).

Que es lo que hace este script? Al hacer Enter (al ejecutarlo de la linea de comando) devuelve:

# /var/www/balance.pl

http://cluster0.dominio <enter>

http://cluster1.dominio <enter>

http://cluster2.dominio <enter>

http://cluster0.dominio <enter>

...

Que es precisamente lo que se necesita: que Apache reescriba las reglas que van dirigidas a http://cluster.dominio hacia http://cluster.dominio.

Todo esto gracias a la RewriteRule

ANTES DE REINICIAR APACHE LEER LO SIGUIENTE!

Libproxy no esta configurado por defecto en Apache, asi que hay que agregar un “par” de líneas a httpd.conf en cluster0

...

LoadModule proxy_module       modules/libproxy.so

Addmodule mod_proxy.c

<IfModule mod_proxy.c>

ProxyRequests On

ProxyVia On

CacheRoot "/var/cache/httpd"

CacheSize 5

CacheGcInterval 4

CacheMaxExpire 24

CacheLastModifiedFactor .1

CacheDefaultExpire 1

</IfModule>

...

(NOTA: es posible solamente dejar la linea ProxyVia On. El resto de las opciones indica la cantidad de páginas que puede hacer cache, tamaño del cache (en Mb), y la fecha de expiración del cache).

Ahora SI reiniciar Apache.

Y probar.
[editar]

Sé el primero en opinar


Monografías relacionados con 'Manual de configuración de un WebCluster'

A diferencia de otros tipos de clusters, como MOSIX, un Webcluster es una colección de... Más »

Autor y licencia de 'Manual de configuración de un WebCluster'


Monografía de Juan Carlos Inostroza. Extraido de: http://www.tux.cl/doku.php?id=articulos:clusters:configuracion_de_un_webcluster CopyLeft
Copyleft 2000-2006 Tux.cl
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.