Balanceo de carga con haproxy, introducción

haproxy logo


Explicaré que es un haproxy, su configuración, y un ejemplo para realizar un balanceo de carga con haproxy de un sitio web.



¿Qué es y cómo se realiza el balanceo de carga con haproxy?

Haproxy es una aplicación que se instala en un servidor linux, que balancea la carga de solicitudes http, https y tcp, y la redirige hacia otros servidores que están detrás.

Elige un servidor de los que le configuremos según nuestra estrategia. Puede dirigir solicitudes a un servidor por balanceo round-robin (de a uno a la vez) o con balanceo por peso (dirige la solicitud al servidor más libre en recursos). Tiene la capacidad de realizar esta tarea muy rápidamente y con un alto rendimiento.

El camino de solicitud:

Usuario ➡️ Internet ➡️ haproxy ➡️ Servidor Web

Y luego la respuesta en el sentido inverso:

Usuario ⬅️ Internet ⬅️ haproxy ⬅️ Servidor Web

Las ventajas del haproxy

– Podemos asignarle varios servidores web a una misma url y tener más tolerancia a fallos.
– Podemos asignarle una ip pública que tengamos contratada, y compartirla entre diferentes urls que tengamos.
– Tener varios servidores en el backend, nos da una mejor respuesta ante el aumento de la demanda.

– Podemos proteger a los servidores con listas de acceso (ACLs) con filtros de ip.
Más seguridad, ya que evitamos que un atacante acceda directamente a nuestros servidores, descubra sus características y vulnerabilidades.


Edición de la Configuración

El archivo de configuración se encuentra en la ruta /etc/haproxy/haproxy.cfg

Puede editarse con “vi /etc/haproxy/haproxy.cfg” o “nano /etc/haproxy/haproxy.cfg” , y luego se debe ejecutar el comando para recargar la configuración “systemctl reload haproxy“.

💎 Editamos la configuración seguido, así que muy conveniente tener un script para ejecutar estos comandos.

Si falta algo en la configuración o hay un error de tipeo, encontraremos un error. Entonces, debemos ejecutar el comando “systemctl status haproxy” que nos dirá en cual línea del archivo tenemos un problema. Lo corregimos y repetimos el comando “systemctl reload haproxy“.


Partes de la configuración

Global: Aquí se guarda la configuración general, por ejemplo los tiempos de respuesta de cada solicitud, configuración del archivo de log y otros parámetros. En principio lo dejamos como está después de la instalación.

Defaults: Configuración para Frontends y Backends por igual.

Frontend: Aquí se define cómo se manejan las conexiones entrantes. Se configuran los puertos que el haproxy escucha, las restricciones por ACL (listas de acceso) y en el caso del puerto 443 se especifica el certificado SSL.

Backend: Se ponen los servidores que están atrás del haproxy y atienden las solicitudes. Se colocan las ip y los puertos que brindan un servicio. También el tipo de balanceo de carga.


Ejemplo de balanceo de carga con haproxy y tres servidores web

La siguiente es para un haproxy que escucha el puerto 80, luego distribuye la solicitud entre tres servidores web, cada uno con su ip y atendiendo solicitudes en el puerto 80 también:


defaults
  mode http
  timeout client 10s
  timeout connect 5s
  timeout server 10s 
  timeout http-request 10s

frontend frontend_ejemplo
  bind 127.0.0.1:80
  default_backend mis_servidores

backend mis_servidores
  server servidor1 192.168.0.1:80
  server servidor2 192.168.0.2:80
  server servidor3 192.168.0.3:80

Hasta aquí llegamos con la introducción al balanceo de carga con haproxy. Seguiré explicando más sobre el tema en breve, pero si algo no quedó claro, dejá una consulta pública en los comentarios de abajo o un mensaje privado en la página de contacto. Saludos.


🏷️ # # # # # #

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio