Vai al contenuto
BeoHosting
BeoHosting
Tecnico

Che cos'è il load balancing e come funziona

BeoHosting Team··9 min read di lettura
Che cos'è il load balancing e come funziona

Che cos'è il load balancing

Il load balancing è una tecnica per distribuire il traffico di rete. È particolarmente rilevante per gli utenti di server dedicati. Consiste nella distribuzione del traffico tra più server per garantire alta disponibilità, affidabilità e prestazioni ottimali delle applicazioni. Immagina un load balancer come un vigile del traffico posto davanti a un gruppo di server, che indirizza ogni richiesta in arrivo verso il server attualmente meno carico. Senza un load balancer, un solo server deve gestire tutto il traffico e, quando raggiunge la sua capacità, il sito diventa lento o del tutto irraggiungibile. Con un load balancer il carico è distribuito in modo uniforme e, se un server si guasta, gli altri ne assumono il lavoro senza interruzioni per gli utenti.

Il load balancing è la base dell'infrastruttura web moderna. Ogni grande piattaforma web — Google, Facebook, Amazon, Netflix — usa sofisticati sistemi di load balancing. Ma il load balancing non è riservato solo ai giganti: qualsiasi sito con traffico in crescita o con un requisito di alta disponibilità può trarre vantaggio da questa tecnologia. Con la diffusione del cloud hosting, il load balancing è diventato accessibile alle piccole e medie imprese a prezzi ragionevoli.

Tipi di load balancer

Load balancing di livello 4

Un load balancer di livello 4 (L4) opera al livello di trasporto del modello OSI e prende decisioni di instradamento in base agli indirizzi IP e alle porte, senza accedere al contenuto del traffico. Quando arriva una richiesta, il bilanciatore L4 reindirizza l'intera connessione TCP o UDP a un server di backend selezionato. I pregi dei bilanciatori L4 sono una velocità eccezionale, dovuta al fatto che non analizzano il contenuto dei pacchetti, minori requisiti di risorse e la capacità di bilanciare qualsiasi tipo di traffico, non solo HTTP. Si usa negli scenari in cui basta una pura distribuzione del traffico, senza bisogno di un instradamento intelligente basato su URL o intestazioni.

Load balancing di livello 7

Un load balancer di livello 7 (L7) opera al livello applicativo e comprende il protocollo HTTP. Questo gli permette di instradare in modo intelligente in base a URL, intestazioni HTTP, cookie, tipo di contenuto e altri attributi della richiesta. Per esempio, il bilanciatore L7 può instradare le richieste di immagini verso server ottimizzati per i contenuti statici, le richieste API verso i server applicativi e le connessioni websocket verso server configurati per connessioni a lunga durata. I bilanciatori L7 possono anche eseguire la terminazione SSL (decifrare l'HTTPS sul bilanciatore), la compressione dei contenuti e il caching. La maggior parte delle applicazioni web moderne usa il load balancing L7.

Global server load balancing

Il GSLB (Global Server Load Balancing) distribuisce il traffico tra server situati in diverse aree geografiche. Usa il DNS per instradare gli utenti verso il data center più vicino in base alla posizione geografica, alla latenza o allo stato di salute del server. Per esempio, gli utenti dall'Italia vengono instradati verso il data center europeo, mentre quelli dagli Stati Uniti vanno verso quello americano. Il GSLB è fondamentale per le applicazioni globali che richiedono bassa latenza in tutto il mondo e offre disaster recovery: se un intero data center diventa irraggiungibile, il traffico viene reindirizzato automaticamente verso un altro.

Algoritmi di distribuzione del traffico

Round Robin

Round Robin è l'algoritmo più semplice e distribuisce le richieste in sequenza, una dopo l'altra, tra i server disponibili. La prima richiesta va al server 1, la seconda al server 2, la terza al server 3, poi di nuovo al server 1, e così via. Il vantaggio è l'assoluta semplicità di implementazione e la prevedibilità della distribuzione. Lo svantaggio è che non tiene conto del carico attuale dei server — un server impegnato in un'operazione pesante riceve lo stesso numero di nuove richieste di un server inattivo. La variante Weighted Round Robin assegna pesi diversi ai server in proporzione alle loro capacità, così i server più potenti ricevono più richieste.

Least Connections

L'algoritmo Least Connections instrada ogni nuova richiesta verso il server che ha attualmente il minor numero di connessioni attive. È più intelligente di Round Robin perché tiene conto del carico reale. Se un server elabora richieste a lunga durata mentre un altro completa rapidamente richieste brevi, Least Connections instraderà più richieste verso il server più veloce. Weighted Least Connections combina questo approccio con i coefficienti di peso per server di capacità diversa. Questo algoritmo è ideale per applicazioni con richieste di durata variabile.

IP Hash

L'algoritmo IP Hash calcola un valore di hash dall'indirizzo IP del client e lo usa per determinare il server. Questo garantisce che le richieste dello stesso client vadano sempre allo stesso server, cosa importante per le applicazioni che memorizzano la sessione sul server (session persistence). Senza IP Hash o un meccanismo simile, un utente può essere spostato su un altro server che non ha la sua sessione, con la conseguenza di perdere il carrello o di dover effettuare di nuovo il login. L'alternativa moderna è usare un archivio di sessioni centralizzato con Redis, eliminando la necessità della session persistence a livello di load balancer.

Least Response Time

Questo algoritmo combina il minor numero di connessioni con il minor tempo di risposta. La richiesta viene instradata verso il server con il minor numero di connessioni attive e il tempo di risposta medio più rapido. È l'approccio più intelligente perché considera sia il carico sia le prestazioni di ciascun server. Se un server ha dischi più veloci o più RAM, avrà naturalmente tempi di risposta più brevi e riceverà proporzionalmente più richieste. Richiede il monitoraggio delle risposte di ogni server, che aggiunge un piccolo overhead ma produce risultati ottimali.

Load balancer hardware vs software

Load balancer hardware

I load balancer hardware sono apparati specializzati progettati esclusivamente per la distribuzione del traffico. Vendor come F5 Networks (BIG-IP), Citrix (NetScaler) e A10 Networks offrono apparati in grado di gestire milioni di connessioni al secondo con latenza estremamente bassa. I vantaggi sono prestazioni prevedibili, hardware dedicato e funzionalità avanzate come SSL offloading, protezione DDoS e firewall applicativo. Lo svantaggio è il costo elevato — i load balancer hardware costano da qualche migliaio fino a centinaia di migliaia di euro, oltre ai costi di manutenzione e licenza.

Load balancer software

I load balancer software si installano su server standard e offrono flessibilità, costi inferiori e facilità di scaling. Le soluzioni open source più diffuse sono Nginx, che è al tempo stesso un web server e un load balancer con prestazioni eccellenti, HAProxy, specializzato nel load balancing con affidabilità eccezionale e bassa latenza, e Traefik, un load balancer moderno pensato per gli ambienti containerizzati come Docker e Kubernetes. I provider cloud offrono load balancer gestiti come servizio, eliminando la necessità di gestire l'infrastruttura.

Load balancer cloud

AWS Elastic Load Balancer, Google Cloud Load Balancing e Azure Load Balancer sono servizi gestiti che offrono il load balancing senza dover gestire hardware o software. Scalano automaticamente con il tuo traffico, si integrano con altri servizi cloud e paghi in base a ciò che usi. Per la maggior parte delle applicazioni moderne i load balancer cloud sono la scelta ottimale, perché eliminano la complessità operativa, offrono alta disponibilità con ridondanza integrata e richiedono una configurazione minima per iniziare.

Quando ti serve un load balancer

Scenari d'uso

Ti serve un load balancer quando un solo server non riesce a gestire il tuo traffico e il sito rallenta nei momenti di picco, quando hai bisogno di alta disponibilità e non puoi permetterti tempi di inattività, quando hai un'applicazione critica come un negozio e-commerce in cui ogni minuto di downtime significa mancato fatturato, quando vuoi poter aggiornare i server senza interrompere il servizio usando il rolling deployment, oppure quando il tuo traffico varia in modo significativo e hai bisogno di uno scaling dinamico.

Quando un load balancer non serve

Per un sito piccolo con traffico moderato, un load balancer comporta complessità e costi superflui. Se il tuo sito riceve meno di 10.000 visitatori al giorno, un solo server ben ottimizzato con il caching è più che sufficiente. Prima di aggiungere un load balancer, ottimizza il server esistente: implementa il page caching, ottimizza il database, usa una CDN per i file statici e comprimi le immagini. Queste ottimizzazioni spesso eliminano la necessità di un load balancer e costano molto meno.

Health check e failover

  • Health check attivi: il load balancer invia periodicamente richieste ai server di backend per verificare che siano attivi e funzionanti — di solito una GET HTTP verso un endpoint specifico.
  • Health check passivi: il load balancer monitora le risposte dei server durante il traffico normale e rileva gli errori senza richieste apposite.
  • Failover automatico: quando un server non supera l'health check, viene rimosso automaticamente dalla rotazione e il traffico viene reindirizzato verso i server rimanenti.
  • Recupero graduale: quando un server torna sano, viene reintrodotto gradualmente nella rotazione con meno richieste, per evitare un carico improvviso.
  • Health check personalizzati: oltre al controllo HTTP di base, configura controlli specifici per la tua applicazione — stato del database, disponibilità di API esterne e spazio libero su disco.

Conclusione

Il load balancing è una tecnica fondamentale per costruire applicazioni web affidabili e scalabili. Dal semplice algoritmo Round Robin ai sofisticati bilanciatori L7 con instradamento intelligente, esiste una soluzione per ogni budget ed esigenza. I load balancer software come Nginx e HAProxy hanno democratizzato questa tecnologia, rendendola accessibile a tutti. In BeoHosting offriamo cloud hosting con funzionalità di load balancing per i siti che richiedono alta disponibilità, e il nostro team può aiutarti a configurare l'infrastruttura ottimale per le tue esigenze specifiche.

BeoHosting Team

10+ anni di esperienza — Specialisti di web hosting e infrastrutture

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Ultimo aggiornamento: