HAProxy (Proxy Balanceador de Carga)

sismo
02/25/2011 - 21:02

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.

 

Distribuir contenido