HAProxy (Proxy Balanceador de Carga)
HAProxy es una solución libre rápida y confiable que provee alta disponibilidad, balanceo de carga y proxy para aplicaciones basadas en HTTP. Esta especialmente diseñado para sitios con alto tráfico y carga wue necesitan persistencia. Soporta miles de conexiones (con el hardware adecuado). Su modo de operación permite una rápida y fácil integración a la infraestructura actual y sin riesgos.
Es necesario para poder instalar HaProxy tener conocimientos básicos de configuración de Apache2 y redes.
Entorno de ejemplo:
Procedimiento:
El primer paso es instalar el paquete haproxy
sudo apt-get install haproxy
Se mueve el archivo original para tenerlo de referencia y no pisarlo con la configuración.
sudo mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.ori
Se crea un nuevo archivo de configuración
sudo vi /etc/haproxy/haproxy.cfg
Con el siguiente contenido
global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 16384 ulimit-n 65536 #chroot /usr/share/haproxy user haproxy group haproxy daemon #debug #quiet defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 8192 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen wwwfarm 0.0.0.0:80 mode http stats enable stats auth hap-admin:secreto balance roundrobin option httpclose option forwardfor header X-Client option httpchk GET /check.txt HTTP/1.0\r\nHost:\ xvivo.ejemplo.com.ar server www1 192.168.20.143:80 weight 10 check inter 2m server www2 192.168.20.144:80 weight 10 check inter 2m
Antes de iniciar el servicio se deben crear archivos testigos de servidor vivo. Para esto se debe definir un host virtual en los apaches con el nombre "xvivo.ejemplo.com.ar" (para mantener concordancia con el archivo de configuración). Y en el mismo crear un archivo check.txt.
En los servidores "WWW" ejecutar estos procedimientos:
Crear el directorio que contiene el host virtual ejemplo "xvivo.ejemplo.com.ar".
< sudo mkdir -p /var/www/xvivo.ejemplo.com.ar
Crear el archivo check.txt
< sudo touch /var/www/xvivo.ejemplo.com.ar/check.txt
Y un index.html para asegurarnos de que no liste el directoro si esta mal configurado nuestro apache.
< sudo touch /var/www/xvivo.ejemplo.com.ar/index.html
Crear el archivo de configuración del apache
< sudo vi /etc/apache2/sites-available/xvivo.ejemplo.com.ar
Con el siguiente contenido:
<VirtualHost *:80> ServerName xvivo.ejemplo.com.ar ServerAdmin webmaster@ejemplo.com.ar DocumentRoot /var/www/htdocs/xvivo.ejemplo.com.ar #CustomLog /var/log/apache2/xvivo.ejemplo.com.ar.log combined #ErrorLog /var/log/apache2/xvivo.ejemplo.com.ar.error.log #LogLevel warn </VirtualHost>
Los logsde acceso y error están deshabilitados. Ya que no queremos que se llene el disco con las verificaciones de estado de HAProxy, dejo las líneas comentadas por si tengo que hacer debug en algún momento. (Tengo deshabilitado el log de accesos cómun de los vhost que viene habilitado por defecto en 10.04).
Habilito el host virtual
< sudo a2ensite xvivo.ejemplo.com.ar
Recargo la configuración del apache para que tome los cambios
< sudo service apache2 reload
Fin de procedimientos a ejecutar en los servidores "WWW".
Para acceder al portal de estadísticas de HaProxy se debe ingresar con un navegador a "http://xxx.xxx.xxx.xxx/haproxy?stats" donde xxx.xxx.xxx.xxx es la dirección ip del HaProxy.

