jueves, 25 de noviembre de 2010

Balanceo con mod_proxy_balancer

Una opción de balanceo de carga que nos ofrece apache a partir de la versión 2.1 es mod_proxy_balancer. Hoy he realizado una pequeña configuración para balancear una aplicación que correo sobre dos tomcat. Básicamente la configuración consiste en lo siguiente (esto lo configuro dentro de un virtual):


<VirtualHost *:80>

ServerName prueba.dominio.es

ErrorLog logs/error.log

CustomLog logs/access.log common

RewriteEngine On



ProxyPreserveHost on

<Proxy balancer://cluster>

BalancerMember http://tomcat1:8080 loadfactor=1 route=clustnode1

BalancerMember http://tomcat2:8080 loadfactor=1 route=clustnode2

Order Deny,Allow

Allow from all

</Proxy>



<Location /aplicacion>

ProxyPass balancer://cluster/aplicacion stickysession=JSESSIONID

ProxyPassReverse balancer://cluster/aplicacion

Order Deny,Allow

Allow from all

</Location>



<Location /balancer-manager>

SetHandler balancer-manager

Order Deny,Allow

Allow from all

</Location>


</VirtualHost>

Por partes:


ProxyPreserveHost on

<Proxy balancer://cluster>

BalancerMember http://tomcat1:8080 loadfactor=1 route=clustnode1

BalancerMember http://tomcat2:8080 loadfactor=1 route=clustnode2

Order Deny,Allow

Allow from all

</Proxy>


Se define el balanceo (miembros, factor de carga, ruta, ...). Importante poner "ProxyPreserveHost on", porque si no se pone, al quitar una máquina del balanceo, si estabas en ella, cuando intentes acceder otra vez te redirige a la otra máquina, pero con la ip en vez de la url. También debes definir en route el valor que tengas puesto en cada uno de los jvmRoute (en server.xml) de los tomcat:


<Engine name="Catalina" defaultHost="localhost" jvmRoute="clustnode1">



<Location /aplicacion>

ProxyPass balancer://cluster/aplicacion stickysession=JSESSIONID

ProxyPassReverse balancer://cluster/aplicacion

Order Deny,Allow

Allow from all

</Location>


Aquí ya hacemos el proxy, simplemente le decimos que las peticiones para /aplicacion lo mande al cluster. Importante definir stickysession para que te mande siempre al mismo nodo.

El /balancer-manager no es mas que para administrar vía web el balanceo....

2 comentarios:

  1. Vaya !!!
    Este tema me suena bastante jejeje
    Muy muy bueno el aporte :)

    ResponderEliminar
  2. jejeje...gracias por la motivación, y gracias por plantearme dudas que me hagan buscar la respuesta... ;)

    ResponderEliminar

Obtener informacion de repositorios a través de los metadatos .git publicados por error

 A raiz de CTF realizado recientemente, me ha parecido interesante publicar este post sobre los errores de seguridad que se encuentran en mu...