Il bilanciamento del carico è il processo di distribuzione del traffico tra più server per migliorare le prestazioni e l'affidabilità di un servizio o di un'applicazione.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Algoritmi per il bilanciamento del carico
Bilanciamento del carico basato su DNS
Failover del server
Bilanciamento del carico multi-cloud e a cloud ibrido
Bilanciamento del carico su cloud (LBaaS)
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
Il bilanciamento del carico è la pratica di distribuzione dei carichi di lavoro computazionali tra due o più computer. Su Internet, il bilanciamento del carico viene spesso utilizzato per suddividere il traffico di rete tra diversi server. Ciò riduce il carico su ciascun server e li rende più efficienti, velocizzando le prestazioni e riducendo la latenza. Il bilanciamento del carico è essenziale per il corretto funzionamento della maggior parte delle applicazioni Internet.
Immagina una fila alla cassa in un negozio di alimentari con 8 linee alla cassa, solo una delle quali è aperta. Tutti i clienti devono mettersi nella stessa fila e quindi ci vuole molto tempo prima che un cliente finisca di pagare la spesa. Ora immagina che il negozio apra invece tutte e 8 le linee di pagamento. In questo caso, il tempo di attesa per i clienti è circa 8 volte più breve (a seconda di fattori come la quantità di cibo acquistata da ciascun cliente).
Il bilanciamento del carico si comporta essenzialmente nello stesso modo. Dividendo le richieste degli utenti tra più server, i tempi di attesa degli utenti vengono notevolmente ridotti. Ciò si traduce in una migliore esperienza utente: i clienti del supermercato nell'esempio precedente probabilmente cercherebbero un supermercato più efficiente se dovessero sempre riscontrare lunghi tempi di attesa.
Il bilanciamento del carico è gestito da uno strumento o un'applicazione chiamato bilanciatore del carico. Un bilanciatore del carico può essere basato su hardware o basato su software. I bilanciatori di carico basati su hardware richiedono l'installazione di un dispositivo di bilanciamento del carico dedicato; i bilanciatori di carico basati su software possono essere eseguiti su un server, su una macchina virtuale o nel cloud. Le reti di distribuzione dei contenuti (CDN) spesso includono funzionalità di bilanciamento del carico.
Quando arriva una richiesta da un utente, il bilanciatore assegna la richiesta a un determinato server e questo processo si ripete per ogni richiesta. I bilanciatori del carico determinano quale server deve gestire ogni richiesta in base a una serie di algoritmi diversi. Questi algoritmi rientrano in due categorie principali: statici e dinamici.
Gli algoritmi statici di bilanciamento del carico distribuiscono i carichi di lavoro senza tenere conto dello stato corrente del sistema. Un bilanciatore del carico statico non sarà a conoscenza di quali server stanno funzionando lentamente e quali server non vengono utilizzati a sufficienza. Assegna invece i carichi di lavoro in base a un piano predeterminato. Il bilanciamento del carico statico è rapido da configurare, ma può causare inefficienze.
Tornando all'analogia di cui sopra, immagina che in un supermercato con 8 casse aperte ci sia un dipendente il cui compito è quello di indirizzare i clienti verso le casse. Immaginate che questo dipendente proceda semplicemente in ordine, assegnando il primo cliente alla linea 1, il secondo alla linea 2 e così via, senza voltarsi indietro per vedere la velocità con cui si muovono le linee. Se tutti gli 8 cassieri lavorano in modo efficiente, il sistema funzionerà bene, ma se uno o più di loro sono in ritardo, alcune file potrebbero diventare molto più lunghe di altre, con conseguente brutta esperienza per i clienti. Anche il bilanciamento del carico statico presenta lo stesso rischio: a volte, i singoli server possono comunque risultare sovraccarichi.
Il DNS round robin e il bilanciamento del carico casuale lato client sono due forme comuni di bilanciamento del carico statico.
Gli algoritmi dinamici di bilanciamento del carico prendono in considerazione la disponibilità attuale, il carico di lavoro e l'integrità di ciascun server. Possono spostare il traffico da server sovraccarichi o con scarse prestazioni a server sottoutilizzati, mantenendo una distribuzione uniforme ed efficiente. Tuttavia, il bilanciamento del carico dinamico è più difficile da configurare. La disponibilità del server è influenzata da diversi fattori: lo stato di integrità e la capacità complessiva di ciascun server, la dimensione delle attività distribuite e così via.
Supponiamo che il dipendente del supermercato che smista i clienti alle casse utilizzi un approccio più dinamico: osserva attentamente le file, vede quali si muovono più velocemente, osserva quanti prodotti alimentari sta acquistando ogni cliente e assegna i clienti di conseguenza. Ciò potrebbe garantire un'esperienza più efficiente per tutti i clienti, ma metterebbe anche a dura prova l'addetto allo smistamento in coda.
Esistono diversi tipi di algoritmi dinamici di bilanciamento del carico, tra cui il bilanciamento del carico basato sulla minima connessione, il bilanciamento del carico basato sulla minima connessione ponderata, il bilanciamento del carico basato sulle risorse e il bilanciamento del carico basato sulla geolocalizzazione.
Come discusso in precedenza, il bilanciamento del carico viene spesso utilizzato con le applicazioni Web. I bilanciatori di carico basati su software e su cloud aiutano a distribuire uniformemente il traffico Internet tra i server che ospitano l'applicazione. Alcuni prodotti di bilanciamento del carico nel cloud possono bilanciare i carichi del traffico Internet su server distribuiti in tutto il mondo, un processo noto come bilanciamento del carico del server globale (GSLB)
Il bilanciamento del carico è comunemente utilizzato anche all'interno di grandi reti localizzate, come quelle all'interno di un datacenter o di un grande complesso di uffici. Tradizionalmente, ciò ha richiesto l'uso di dispositivi hardware quali un controller di distribuzione delle applicazioni (ADC) o un dispositivo di bilanciamento del carico dedicato. A questo scopo vengono utilizzati anche i bilanciatori di carico basati su software.
I bilanciatori di carico dinamici devono essere consapevoli dello stato di integrità del server, ad esempio il suo stato attuale, le sue prestazioni e altro, e lo monitorano eseguendo controlli regolari. Se un server o un gruppo di server ha prestazioni lente, il bilanciatore di carico distribuisce meno traffico su di esso. Se un server o un gruppo di server si guasta completamente, il sistema di bilanciamento del carico reindirizza il traffico a un altro gruppo di server, un processo noto come "failover".
Il failover si verifica quando un determinato server non funziona e un bilanciatore del carico distribuisce i suoi normali processi a un server secondario o a un gruppo di server. Il failover del server è fondamentale per l'affidabilità: se non è presente un backup, un arresto anomalo del server potrebbe causare il blocco di un sito Web o di un'applicazione. È importante che il failover avvenga rapidamente per evitare interruzioni nel servizio.
Scopri di più sui diversi aspetti del bilanciamento del carico: