Load Balancing: cos’è il bilanciamento del carico

Load Balancing: cos’è il bilanciamento del carico

Dietro ogni sito che resta rapido anche nei momenti di maggiore affluenza si nasconde spesso una scelta architetturale poco visibile: evitare che un solo server debba farsi carico di tutte le richieste. Con la crescita del traffico, una macchina isolata tende a rallentare fino a diventare un punto di fragilità, mentre un insieme di server coordinati riesce ad assorbire lo stesso volume in modo più equilibrato. Il load balancing, o bilanciamento del carico, nasce per gestire questa distribuzione, assegnando le richieste alle risorse disponibili secondo regole precise e in base alle condizioni di ciascun server. Ne derivano tempi di risposta più stabili, una latenza ridotta e una maggiore continuità del servizio.

Cos’è il load balancing e perché è importante

Il load balancing indica l’insieme di tecniche con cui il traffico di rete o i carichi di lavoro vengono ripartiti tra due o più server, così che nessuno di essi debba sostenere da solo un volume superiore alle proprie capacità. Il compito è affidato a un componente chiamato load balancer, che riceve le richieste in arrivo e le indirizza, di volta in volta, verso la risorsa più adatta a gestirle.

Il principio richiama da vicino il funzionamento di un aeroporto. Uno scalo dotato di una sola pista vedrebbe gli aerei accumularsi in attesa, mentre più piste coordinate da una torre di controllo consentono di gestire decolli e atterraggi con regolarità, dirottando i voli altrove quando una pista risulta occupata o inagibile. Il load balancer svolge una funzione analoga: osserva lo stato dell’infrastruttura, valuta e instrada.

Il valore di questo approccio emerge su più livelli:

  • prestazioni: la suddivisione delle richieste alleggerisce ogni singola macchina e contiene i tempi di risposta;
  • disponibilità: il guasto di un server incide in misura limitata sul servizio, perché il traffico viene spostato sulle risorse ancora attive;
  • scalabilità: l’aggiunta di nuovi server permette di sostenere la crescita del traffico senza riprogettare l’infrastruttura;
  • manutenzione: aggiornamenti e interventi possono essere eseguiti su un nodo alla volta, mantenendo il sito raggiungibile.

Per un’applicazione web, un e-commerce o qualsiasi servizio chiamato a restare accessibile in ogni momento, il bilanciamento del carico diventa così una componente strutturale dell’architettura.

Come funziona un load balancer

Dal punto di vista di chi visita un sito, l’esperienza appare lineare: un indirizzo digitato nel browser e una pagina che si carica. Il load balancer si inserisce proprio in questo passaggio, collocandosi tra gli utenti e il gruppo di server che ospita l’applicazione. Le richieste raggiungono un unico punto di accesso pubblico e da lì vengono smistate verso i server del gruppo, che restano così invisibili all’esterno.

Per ciascuna richiesta si ripete la stessa sequenza: il load balancer la intercetta, individua il server di destinazione secondo l’algoritmo configurato, la inoltra e restituisce all’utente la risposta ottenuta. Il tutto avviene in frazioni di secondo, senza che il visitatore ne percepisca la presenza.

Anche il livello a cui avviene la scelta incide sulla precisione della distribuzione. Un bilanciamento di livello 4 si basa su informazioni di rete come indirizzo IP e porta, con tempi di elaborazione molto contenuti. Un bilanciamento di livello 7 analizza invece il contenuto della richiesta, come l’URL o i cookie, e può ad esempio indirizzare le immagini verso un gruppo di server e le pagine dinamiche verso un altro.

Quanto alla forma, i load balancer appartengono a due famiglie:

  • hardware: dispositivi fisici dedicati, installati nel data center e pensati per volumi di traffico molto elevati;
  • software: applicazioni eseguibili su un server, su una macchina virtuale o in cloud, più flessibili e semplici da scalare.

A queste soluzioni si affiancano le CDN, che in molti casi includono funzioni di bilanciamento tra i propri servizi.

Algoritmi di bilanciamento statici e dinamici

Il criterio con cui un load balancer sceglie il server destinatario di ogni richiesta prende il nome di algoritmo di bilanciamento. Le soluzioni disponibili sono numerose e ruotano attorno a una distinzione di fondo: alcune seguono uno schema fissato in anticipo, altre adattano le proprie decisioni a ciò che accade nell’infrastruttura in tempo reale.

Algoritmi statici

Gli algoritmi statici distribuiscono il traffico secondo una logica predefinita, senza considerare il carico effettivo o lo stato dei server. Il loro punto di forza risiede nella semplicità: richiedono poche risorse di calcolo, si configurano rapidamente e garantiscono un comportamento prevedibile. Tra i più diffusi figurano:

  • round robin: le richieste vengono assegnate a turno, seguendo l’ordine dei server del gruppo;
  • round robin ponderato: a ciascun server viene attribuito un peso proporzionale alla sua capacità, così le macchine più potenti ricevono una quota maggiore di traffico;
  • IP hash: l’indirizzo IP del client determina il server di destinazione, quindi lo stesso utente viene indirizzato sempre alla stessa macchina;
  • round robin DNS: la rotazione avviene in fase di risoluzione del dominio, restituendo indirizzi IP diversi a richieste diverse.

Il limite emerge quando i server lavorano a ritmi differenti. Una macchina rallentata da un’operazione onerosa continua a ricevere la propria quota di richieste, con il rischio che le code si formino proprio dove le risorse scarseggiano.

Algoritmi dinamici

Gli algoritmi dinamici fondano ogni scelta sulle condizioni correnti dell’infrastruttura, come disponibilità, carico, tempi di risposta e stato di salute dei server. Ne deriva una distribuzione più aderente alla realtà, capace di spostare il traffico dalle macchine sotto pressione a quelle con margine disponibile. Tra i metodi più utilizzati:

  • least connection: la richiesta viene inviata al server con il minor numero di connessioni attive;
  • weighted least connection: al conteggio delle connessioni si aggiunge il peso assegnato a ciascun server in base alla sua capacità;
  • resource-based: la scelta dipende dalle risorse effettivamente libere, come CPU e memoria, rilevate tramite agenti installati sui server;
  • geolocalizzazione: il traffico viene indirizzato verso i server più vicini all’area da cui proviene la richiesta.

Questa maggiore precisione comporta una complessità superiore: la configurazione richiede più attenzione e il load balancer deve monitorare costantemente i server, sostenendo un carico di elaborazione più elevato. La scelta tra i due approcci dipende quindi dalla natura del progetto. Le soluzioni statiche si adattano bene a gruppi di server omogenei e a un traffico regolare, quelle dinamiche danno il meglio in contesti con carichi variabili e richieste di peso diverso.

Health check e failover: cosa succede quando un server si blocca

L’efficacia di un load balancer dipende da quanto conosce lo stato dei server a cui affida il traffico. Per questo i sistemi di bilanciamento, in particolare quelli dinamici, eseguono a intervalli regolari i cosiddetti health check: verifiche automatiche che controllano se ogni macchina risponde e con quale rapidità. A seconda della configurazione, il controllo può limitarsi a una connessione di rete oppure richiedere una pagina specifica e valutarne il codice di risposta.

Gli esiti di queste verifiche orientano le decisioni successive. Un server che risponde con lentezza riceve una quota di richieste ridotta, mentre uno che supera la soglia di errori stabilita viene escluso temporaneamente dal gruppo, per essere reintegrato in automatico non appena torna operativo.

Quando un server o un intero gruppo smette di funzionare, entra in gioco il failover: il traffico viene reindirizzato verso le risorse secondarie, così che gli utenti continuino a ricevere risposta. Le configurazioni più diffuse sono due:

  • attivo-passivo: un server di riserva resta in attesa e subentra solo in caso di guasto;
  • attivo-attivo: tutti i server lavorano in parallelo e si ripartiscono il carico quando uno di essi viene a mancare.

La rapidità del passaggio è decisiva, perché anche pochi minuti di interruzione possono tradursi in ordini persi o sessioni interrotte. Per la stessa ragione, nelle infrastrutture più solide viene ridondato anche il load balancer, così da evitare che diventi a sua volta un punto unico di guasto. L’effetto complessivo di questi accorgimenti si riflette nei livelli di uptime che un provider è in grado di assicurare, con impegni di disponibilità formalizzati in una Garanzia SLA.

Dove si usa il load balancing

Il bilanciamento del carico accompagna un servizio digitale in tutte le sue possibili dimensioni, dalla singola infrastruttura locale fino alle reti distribuite su più continenti. I suoi ambiti di applicazione si possono leggere proprio in base alla scala.

Sul piano delle applicazioni web, il load balancer ripartisce le visite tra i server che ospitano un sito, un e-commerce o un portale, mantenendo stabili i tempi di caricamento anche quando gli accessi si concentrano in poche ore. Lo stesso principio si estende alle API e alle architetture a microservizi, dove ogni componente dell’applicazione può contare su un proprio gruppo di istanze bilanciate.

All’interno dei data center e delle grandi reti aziendali, il bilanciamento regola il traffico tra server, database e servizi interni. In questi contesti si sono affermati storicamente dispositivi hardware dedicati, come gli Application Delivery Controller (ADC), oggi affiancati con sempre maggiore frequenza da soluzioni software e virtualizzate.

Su scala geografica, il global server load balancing (GSLB) applica la stessa logica a server collocati in regioni o Paesi diversi. Ogni richiesta viene indirizzata verso il punto dell’infrastruttura più vicino o più disponibile, con un duplice beneficio:

  • latenza ridotta per gli utenti, a prescindere dalla loro posizione;
  • continuità del servizio anche in caso di problemi su un intero data center.

Le piattaforme cloud e le CDN integrano queste funzioni tra i propri servizi, rendendo il bilanciamento accessibile anche a progetti privi di un’infrastruttura di proprietà.

Quando serve il load balancing a un sito web

Un blog con un pubblico stabile può funzionare a lungo su un singolo server senza particolari criticità. Il quadro cambia quando il sito assume un ruolo centrale per l’attività e alcuni segnali iniziano a ripresentarsi con una certa regolarità:

  • rallentamenti o errori nei momenti di maggiore affluenza;
  • picchi di traffico prevedibili, legati a saldi, festività o campagne promozionali;
  • tempi di inattività che si traducono in mancati incassi o in un danno di reputazione;
  • crescita costante delle visite, con risorse sempre più vicine al limite.

Il caso degli e-commerce è emblematico. Le vendite online seguono ritmi ciclici, con settimane in cui gli accessi si moltiplicano rispetto al resto dell’anno, come illustrato nell’approfondimento sulla stagionalità degli eCommerce. In quei periodi, un’infrastruttura capace di distribuire il carico permette di assorbire l’aumento delle visite preservando la fluidità dell’esperienza d’acquisto.

L’adozione del bilanciamento può avvenire in modo graduale. Per molti progetti il primo passo coincide con la scelta di un hosting su infrastruttura ridondata o di un server cloud in alta affidabilità, mentre le architetture con più nodi e un bilanciamento dedicato diventano la soluzione naturale quando il traffico e la criticità del servizio crescono ulteriormente.

Load Balancing: cos’è il bilanciamento del carico

FAQ – Load Balancing

Che differenza c’è tra un load balancer e un reverse proxy?

Entrambi si collocano tra gli utenti e i server, intercettando le richieste in arrivo. Il reverse proxy può operare anche davanti a un solo server, occupandosi di cache, compressione o gestione dei certificati SSL. Il load balancer ha come compito specifico la ripartizione del traffico tra più macchine. Molti software, come Nginx o HAProxy, svolgono entrambe le funzioni.

In che modo il load balancing incide sull’esperienza degli utenti?

L’effetto si percepisce soprattutto nella costanza del servizio. Le pagine mantengono tempi di caricamento simili anche nelle ore di maggiore traffico, le operazioni come il login o il checkout si concludono con regolarità e un eventuale guasto passa spesso inosservato. Ne beneficiano la fiducia verso il sito e la probabilità che la visita si trasformi in un’azione concreta.

Load balancing e CDN svolgono la stessa funzione?

Le due soluzioni condividono l’obiettivo di alleggerire i server e ridurre la latenza, con modalità differenti. La CDN conserva copie dei contenuti statici su nodi distribuiti e le consegna dal punto più vicino all’utente. Il load balancer smista le richieste tra i server che elaborano l’applicazione. Nelle infrastrutture più evolute operano spesso in modo complementare.

Il load balancing ha effetti sul posizionamento nei motori di ricerca?

L’influenza è indiretta. Velocità di caricamento e disponibilità del sito contribuiscono alla qualità dell’esperienza valutata dai motori di ricerca, e un’infrastruttura bilanciata aiuta a mantenerle stabili. Riduce inoltre il rischio che i crawler incontrino errori o tempi di risposta elevati durante la scansione, condizione che nel tempo può ostacolare l’indicizzazione delle pagine.