Configurare HAProxy come load balancer

Configurare HAProxy come load balancer

HAProxy e lo standard de facto per il load balancing TCP/HTTP nel mondo Linux. Affidabile, performante e altamente configurabile, e in grado di gestire decine di migliaia di connessioni concorrenti per istanza. Vediamo come configurarlo per distribuire il traffico su più server applicativi in modo intelligente.

Architettura HAProxy

HAProxy si basa su quattro sezioni principali: global (impostazioni di sistema), defaults (valori comuni), frontend (chi riceve traffico esterno) e backend (a chi inoltrarlo). Ogni frontend ha una porta, regole di routing (ACL) e collega backend specifici. Ogni backend definisce un'algoritmo di bilanciamento e una lista di server con health check.

Esempio configurazione web

Un frontend in ascolto su 80/443 con terminazione TLS, ACL per percorso e tre backend (web pool, api pool, static pool) e una configurazione tipica. L'algoritmo predefinito e roundrobin; per sessioni sticky usa source o cookie. option httpchk abilita health check HTTP attivi.

Procedura passo-passo

  1. Installa HAProxy: apt install haproxy (o repo ufficiale per versione 2.x recente).
  2. Modifica /etc/haproxy/haproxy.cfg.
  3. Definisci global con maxconn, log a syslog/stderr e user/group dedicati.
  4. Imposta defaults: timeout client/server/connect, log option httplog.
  5. Crea un frontend ascoltatore con bind *:80 e *:443 ssl crt.
  6. Aggiungi backend con server e check per health probe.
  7. Abilita stats UI con listen stats per monitoraggio.
  8. Verifica config con haproxy -c -f /etc/haproxy/haproxy.cfg.
  9. Ricarica con systemctl reload haproxy.

Algoritmi di bilanciamento

  • roundrobin: rotazione classica.
  • leastconn: server con meno connessioni attive.
  • source: hash IP client per sticky session.
  • uri: hash dell'URI per cache friendliness.
  • hdr: hash di un'header (es. Host).

SSL termination

HAProxy gestisce TLS in frontend con bind *:443 ssl crt /etc/haproxy/certs/dominio.pem. Combina certificato e chiave in un singolo PEM. Per certificati multipli usa una directory crt-list. SSL passthrough invece inoltra il traffico cifrato al backend (utile per mutual TLS o quando il backend deve vedere il certificato originale).

Errori comuni e come risolverli

  • Health check assenti: server down rovinano l'esperienza; configura sempre check.
  • Timeout default troppo bassi: alcuni endpoint richiedono timeout client elevati.
  • X-Forwarded-For non impostato: aggiungi option forwardfor.
  • Configurazione monolitica: splitta per environment con include.

Domande frequenti

D: HAProxy o Nginx?
R: HAProxy per puro load balancing e gestione TCP; Nginx per caching e contenuti web.

D: Quanto traffico regge?
R: Decine di migliaia di richieste/sec per istanza su hardware moderno.

D: HAProxy supporta HTTP/3?
R: Si dalle versioni recenti, tramite QUIC binding.

Approfondimento tecnico: agent check e ACL avanzate

Gli agent check di HAProxy sono check personalizzati eseguiti dai backend: invece del semplice TCP/HTTP probe, il server espone un'endpoint che ritorna informazioni sullo stato (es. "ready 75%" o "down maint"). HAProxy adatta il peso del server di conseguenza, abilitando algoritmi di load balancing intelligenti basati sul carico reale.

Le ACL avanzate permettono routing complesso: acl is_api path_beg /api, acl is_mobile hdr_sub(User-Agent) -i mobile, use_backend api_servers if is_api. Combinando ACL con stick tables e possibile implementare bot detection, abuse limiting e canary deployment senza tool esterni.

Scenari d'uso reali

Una fintech usa HAProxy con TLS 1.3 e mTLS per separare traffico interno/esterno, conformandosi a PSD2.

Un media streaming bilancia 8 worker FFmpeg via leastconn, con health check sui processi attivi.

Un SaaS usa stick table per limitare a 100 richieste/minuto per account, evitando abuse da parte di singoli tenant.

Checklist operativa HAProxy

  • Configurazione validata con haproxy -c prima di reload.
  • Health check attivi su tutti i backend.
  • Timeout coerenti con l'applicazione.
  • Stats UI protetta con basic auth.
  • SSL/TLS terminato in frontend con cifrari moderni.
  • Capacity sufficiente per N-1 backend.
  • Monitoring di queue size e backend status.

Risorse e riferimenti

haproxy.org/docs e community blog (HAProxy Technologies). HAProxy ALOHA per appliance enterprise. Per visualizzazione: HAProxy Stats UI, dashboard Grafana via prometheus exporter. Patterns come blue-green deploy ben documentati.

Considerazioni economiche e organizzative

Implementare correttamente quanto descritto in questo articolo su configurare haproxy come load balancer richiede tempo, formazione e talvolta investimenti hardware o software. La buona notizia e che il ritorno e quasi sempre positivo: meno incidenti, meno tempo speso in troubleshooting reattivo, maggiore predicibilita dei servizi. Stima sempre il costo del downtime per il tuo business: anche poche ore l'anno di indisponibilita possono giustificare investimenti che a prima vista sembrano sovradimensionati.

Sul piano organizzativo, la documentazione e il fattore decisivo. Un sistema brillantemente configurato ma non documentato e una bomba a orologeria: il giorno in cui il sysadmin originale lascia l'azienda, ogni intervento diventa archeologia. Mantieni runbook aggiornati, versionali in git, fai pratica di lettura nei momenti di calma e non solo durante gli incidenti.

Glossario rapido dei termini chiave

RTO (Recovery Time Objective): tempo massimo entro cui un servizio deve tornare operativo dopo un'incidente. RPO (Recovery Point Objective): perdita massima accettabile di dati misurata nel tempo (es. 1 ora di transazioni). SLA (Service Level Agreement): contratto formale che definisce livelli di servizio e penali. SLO/SLI (Service Level Objective/Indicator): metriche interne di qualità usate per misurare e mantenere lo SLA. MTBF/MTTR: tempo medio tra guasti e tempo medio di ripristino, indicatori di affidabilità. Idempotenza: proprietà di un'operazione che, applicata più volte, produce lo stesso risultato della singola applicazione (fondamentale per automazione).

Hai bisogno di aiuto?

Se hai dubbi sulla gestione server, il team di G Tech Group puo aiutarti. Contattaci tramite il modulo di contatto.

Hai trovato utile quest'articolo?