systemadmin.es > Clustering > Instalar HAProxy (balanceador HTTP SMTP TCP)

Instalar HAProxy (balanceador HTTP SMTP TCP)

El HAProxy es un balanceador TCP que se suele usar para peticiones HTTP pero se puede usar para cualquier protocolo TCP. Vamos a ver como instalarlo y como configurarlo:

Primero de todo lo descargamos y lo compilamos:

cd /usr/local/src/
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz
tar xzf haproxy-1.4.8.tar.gz 
cd haproxy-1.4.8
make TARGET=linux26
make install

A continuación preparamos el entorno para usarlo con chroot y daemontools:

mkdir /usr/local/supervise/haproxy -p
mkdir -p /usr/local/chroot/haproxy/
useradd haproxy
cat <<EOF > /usr/local/supervise/haproxy/run
#!/bin/bash
exec /usr/local/sbin/haproxy -f /usr/local/etc/haproxy.cfg
EOF
chmod +x /usr/local/supervise/haproxy/run
ln -s /usr/local/supervise/haproxy/ /service/

Para indicar a que id debe cambiar el proceso hacemos un id al usuario haproxy que acabamos de crear y nos quedamos con el valor numérico:

# id haproxy
uid=508(haproxy) gid=508(haproxy) groups=508(haproxy)

Vamos a ver a continuación como configurarlo (mediante el fichero /usr/local/etc/haproxy.cfg) para repartir conexiones entre tres servidores de correo con una distribución de: 40%, 25% y 35%:

global
	uid 		508
	gid 		508
	chroot 		/usr/local/chroot/haproxy
	log 		127.0.0.1	local0
	log 		127.0.0.1	local1 notice
	maxconn 	32000

defaults
	log		global
	mode		tcp
	option		dontlognull
	retries		3
	option		redispatch
	option		smtpchk
	maxconn		2000
	contimeout	5000
	clitimeout	50000
	srvtimeout	50000

listen push 0.0.0.0:25
	mode tcp
	balance roundrobin
	server spamer1 10.10.1.1:25 check weight 40
	server spamer2 10.10.1.2:25 check weight 25
	server spamer3 10.10.1.3:25 check weight 35

Las directivas siguientes son las mas relevantes:

  • chroot /usr/local/chroot/haproxy: Indica a HAProxy que haga un chroot en el path que se le indica
  • option smtpchk: Realiza un inicio de sesión SMTP para comprobar el estado del servidor. También se pueden hacer una petición HTTP mediante httpchk
  • balance roundrobin: Define el modo en que reparte las peticiones, en este caso puramente roundrobin, pero también puede ser por el servidor con menos conexiones (leastconn) o incluso inspeccionando el protocolo HTTP
  • server spamer1 10.10.1.1:25 check weight 40: Define los backends a los que repartir las conexiones, en este caso indica que se le deben repartir un 40% de las peticiones

En la documentación de HAProxy se pueden encontrar todas las directivas detalladas.

2 comments to “Instalar HAProxy (balanceador HTTP SMTP TCP)”

  1. Tengo problemas con esta línea….

    ln -s /usr/local/supervise/haproxy/ /service/

    No entiendo donde se esta creando este enlace….

  2. Es para usar el HAproxy con daemontools

    saludos!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>