Configurar un Balanceador de Carga con HAProxy en Linux

¿Qué es HAProxy y para qué se utiliza?

HaProxy es un balanceador de carga (Load Balancer) de código abierto y un proxy inverso que se utiliza para difundir las solicitudes en múltiples servidores. Está escrito en C y es conocido por su velocidad y eficiencia. Se puede utilizar de forma gratuita en la mayoría de distribuciones de Linux.

En los entornos profesionales es imprescindible configurar la alta disponibilidad para que el usuario que utiliza el servicio nunca se dé cuenta de que ha habido una incidencia en alguno de los servidores (avería hardware, caída de un servidor, etc.).

Es habitual utilizar balanceadores de carga en servicios WEB, donde cada una de las peticiones se envía a un servidor WEB diferente para repartir el tráfico entre todos ellos con el objetivo de no saturar siempre el mismo servidor y para que, en caso de incidencia, las peticiones de los usuarios se sigan atendiendo en cualquier otra maquina con el servicio levantado.

Las grandes empresas suelen utilizar hardware dedicado para construir el servicio de balanceador, pero también podemos configurarlo por software. HAProxy es una de esas herramientas de software libre para configurar balanceadores de carga.

HAProxy es altamente configurable y podemos ajustarlo para que un servidor reciba un porcentaje de tráfico mayor que otro, por ejemplo, o desactivar el envío de tráfico a uno de los nodos. Esto viene muy bien en caso de avería, incidencia o intervención en algún servidor que no necesite recibir tráfico en un momento puntual.

Instalación de HAProxy

Como ya sabéis, suelo utilizar RedHat o CentOS, así que vamos a instalar HAProxy en Linux CentOS 7. Para ello ejecutaremos el siguiente comando:

yum install haproxy

Una vez instalado, conviene realizar una copia de seguridad del fichero original del producto, por si metemos la pata cuando configuremos nuestros servicio. El fichero es: /etc/haproxy/haproxy.cfg.

Configuración de HAProxy

Supongamos que tenemos dos servidores WEB esuchando por las IPs:

  • 192.168.1.2:443
  • 192.168.1.3:443

Y queremos balancear la carga entre ambos servidores. En el fichero /etc/haproxy/haproxy.cfg, configuraremos las IPs y puertos por donde escuchan los servicios, en concreto, la sección listen:

listen ServidorWeb
    bind *:80
    mode http
    stats enable
    stats auth  cda:cda
    balance roundrobin
    server frontend-01 192.168.1.2:80 check weight 40
    server frontend-02 192.168.1.3:80 check weight 60

Como podemos ver en el ejemplo anterior, balanceamos el servicio por roundrobin y distribución de pesos en relación 40-60%. Roundrobin significa que una petición va a un servidor y la siguiente a otro (teniendo en cuenta la distribución de pesos).

Arranque de HAProxy

En el caso de Linux CentOS, arrancaremos y habilitaremos el servicio con el arranque del sistema con los siguientes comandos:

systemctl start haproxy
systemctl enable haproxy

Una vez que tenemos arrancado el servicio, podemos acceder a las estadísticas de balanceo con una URL interna de HAProxy, por ejemplo:

http://192.168.1.4:8080/stats

Te podría interesar

COMPÁRTEME

Deja un comentario