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.
🏷️ #balanceo_de_carga #haproxy #http #https #servidor_linux #tcp