Balanceo de carga con Apache 2 + mod_proxy

Existen otras opciones a la hora de instalar un balanceador de carga, como Linux Virtual Server, finalmente me he decantado por utilizar mod_proxy debido a su sencillez y porque no es necesario actualizar el Kernel.

En las 3 máquinas es necesario tener instalado Apache 2 y en la máquina apache-balancer hay que tener activos los módulos proxy_balancer y proxy_http, para ello ejecutamos:

a2enmod proxy_balancer
a2enmod proxy_http

Antes de nada debemos preparar el fichero /etc/hosts de la máquina apache-balancer. Añadimos lo siguiente:

192.168.1.11 nodo1.mydomain.com
192.168.1.12 nodo2.mydomain.com

Ahora pasaremos a configurar el balanceo, para ello crea un sitio nuevo o utiliza el sitio por defecto (/etc/apache2/sites-available/default) y añade esta configuración antes de </VirtualHost> :

# cluster member 1
BalancerMember http://nodo1.mydomain.com:80 route=lb1

# cluster member 2
BalancerMember http://nodo2.mydomain.com:80 route=lb2

ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ lbmethod=byrequests stickysession=BALANCEID
ProxyPassReverse / http://nodo1.mydomain.com/
ProxyPassReverse / http://nodo2.mydomain.com/

Guardamos el fichero y reiniciamos el Apache.

Con la opción stickysession=BALANCEID lo que conseguimos es pasar la variable de sesión al servidor dónde nos lleve el balanceador y asi permanecer en el mismo durante toda la sesión aunque actualicemos.

Para ello tenemos que configurar los nodos para que reciban la variable de sesión, editamos la configuración del VirtualHost y añadimos:

RewriteEngine On
RewriteRule .* – [CO=BALANCEID:balancer.lb1:.mydomain.com]

En el segundo nodo habría que poner lb2.

Reiniciamos los Apaches y ya deberíamos tener el balanceador funcionando ;)

Para probar puedes crearte un fichero distinto en cada máquina y borrar las sesiones autenticadas antes de recargar. En FireFox (Ctrl+Mayús.+Supr).

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>