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....
El /balancer-manager no es mas que para administrar vía web el balanceo....
Vaya !!!
ResponderEliminarEste tema me suena bastante jejeje
Muy muy bueno el aporte :)
jejeje...gracias por la motivación, y gracias por plantearme dudas que me hagan buscar la respuesta... ;)
ResponderEliminar