HAProxy ofrece alta disponibilidad, balanceo de carga y proxy con una solución muy rápida, open source y ligera. Es una solución mas rápida que Apache o Nginx, por ejemplo.
En este ejemplo, además usaremos Docker para que su puesta en marcha sea todavía mas rápido y fácil de configurar.
Lo primero va a ser crearnos el fichero de configuración ‘haproxy.cfg’, en el siguiente ejemplo configuramos un balanceo de carga entre dos máquinas(172.17.0.2:8080 y 172.17.0.3:8080). Este balanceo de carga balanceará el tráfico entre las dos máquinas usando la política ’roundrobin’ basándose en la cookie JSESSIONID(Esta cookie es típica de aplicaciones Java, identifica la sesión del usuario). Es decir, que una vez el usuario haya iniciado la sesión con una máquina siempre se va a comunicar con la misma máquina.
También configuramos que en el puerto ‘8181’ habilitaremos el poder consultar las estadísticas del servicio. En este caso, lo hemos protegido con usuario(liferay) y contraseña(liferay).
global pidfile /var/run/haproxy.pid log 127.0.0.1 local0 info defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 frontend http_front bind 0.0.0.0:80 default_backend http_back backend http_back balance roundrobin cookie JSESSIONID prefix indirect nocache server s1 172.17.0.2:8080 check cookie L1 server s2 172.17.0.3:8080 check cookie L2 listen stats bind 0.0.0.0:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth liferay:liferay
El servicio lo pondremos en marcha usando Docker, en este caso aprovecharemos la imagen que ya existe ‘haproxy:1.7’, que básicamente es una instalación de HAProxy. Mapearemos nuestro fichero de configuración con el de la imagen y mapearemos también el puerto 80 del host con el puerto 80 del contenedor:
docker run \ -v /path/a/mi//haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \ -p 80:80 \ haproxy:1.7
Como veis configurar un balanceador es muy fácil.