Che cos'è il load balancing?

Che cos'è il load balancing?

Il load balancing, o ripartizione del carico, è una tecnologia concepita per distribuire il carico di lavoro tra diversi server o applicazioni. L’obiettivo: ottimizzare le prestazioni globali, il rendimento e la capacità dell’infrastruttura.

Load Balancer OVHcloud

Load balancer: definizione

Da dieci anni, il traffico online continua a crescere in modo esponenziale e gli utenti diventano sempre più esigenti in termini di velocità di accesso e sicurezza. Dato che i server Web sono estremamente sollecitati, è stata messa in atto una soluzione di ottimizzazione del loro carico di lavoro: il load balancing, che permette a un gruppo di server (cluster) di far fronte ai picchi di traffico, ma anche di prevedere una soluzione di emergenza in caso di guasto. È a questo punto che interviene il load balancer (ripartitore di carico), che permette di equilibrare il carico di lavoro tra i server per mantenere la loro capacità a un livello ottimale. Quando il tuo sito Internet è ospitato sui nostri server con un load balancer, è meno soggetto a rallentamenti o interruzioni di servizio.

Un ripartitore di carico deve essere installato all'interno di un'infrastruttura dedicata, fisica o virtuale. Nel caso di una piattaforma fisica, un server funge da load balancer e presuppone un investimento notevole. Un software di load balancing, invece, può essere installato su una macchina virtuale (virtual machine o VM) e assume la funzione di controller di consegna dell’applicazione (Application Delivery Controller o ADC). Nella versione virtuale, il load balancer è più flessibile e permette di far evolvere il carico automaticamente, in base alle previsioni di traffico.

In entrambi i casi, identifica in tempo reale quale server è in grado di rispondere a una richiesta, in modo che il cluster mantenga un livello di performance stabile. In caso di guasto di una macchina, il load balancer ha anche il compito di spostare il carico di lavoro su un altro server.

Quando un utente chiede di caricare la pagina di un sito Web, il load balancer interviene tra lui e il server: analizza la macchina più idonea a soddisfare la richiesta e gliela trasmette. Può anche aggiungere o rimuovere server in base al carico, secondo le necessità.

Come funziona un load balancer?

La ripartizione del carico viene effettuata tramite un algoritmo basato sul DNS (Domain Name System). L'utente accede ai siti Internet tramite un URL, associato a un indirizzo IP. Quest'ultimo contatta il ripartitore di carico, che trasmette la richiesta al server. La distribuzione dipende quindi dal tipo di algoritmo utilizzato. I quattro più noti sono: Round Robin, Weighted Round Robin, Least Connections e Weighted Least Connections.

 

Round Robin

Questo metodo crea una coda per le richieste in entrata. Queste vengono poi gestite dal ripartitore di carico, che le distribuisce ai server del cluster. Le richieste sono assegnate in sequenza, in base alla disponibilità delle macchine. Round Robin non tiene conto dell'urgenza della richiesta, né del carico che rappresenterà per il server in questione: è quindi adatto agli ambienti in cui i server dispongono di risorse identiche. Tuttavia, in un'infrastruttura in cui vi sono diverse risorse, potrebbe assegnare carichi non adatti a macchine meno potenti, causando un sovraccarico.

Si tratta del metodo classico che serve da modello per gli altri algoritmi.

 

Weighted Round Robin

Diversamente dal metodo Round Robin, Weighted Round Robin funziona con una distribuzione basata sul peso. A ogni server viene assegnato in anticipo un valore, in base alla sua capacità e potenza. Ad esempio, il più potente avrà un valore di 10 e il meno potente un valore di 1. Il load balancer attribuirà quindi maggior carico alla macchina più resistente. Questo metodo è quindi più adatto a un ambiente i cui server hanno risorse differenti, perché il carico è ottimizzato in funzione della loro capacità.

 

Least Connections

I due metodi precedenti non tengono conto del numero di connessioni che i server del cluster devono gestire durante la distribuzione dei task ad opera del load balancer. A volte, diverse connessioni si accumulano su un server e ne provocano il sovraccarico. Least Connections pone rimedio a tutto ciò, perché tiene conto delle richieste già esistenti sul server Web durante la distribuzione. La macchina con il minor numero di richieste riceve la richiesta successiva del load balancer. Questo algoritmo non tiene in considerazione le capacità tecniche dei server ed è quindi più adatto agli ambienti con le stesse risorse.

 

Weighted Least Connections

Questo algoritmo completa quello di Least Connections. In un'infrastruttura in cui le risorse dei server sono eterogenee, tiene conto del volume di richieste per ogni macchina e del peso assegnato dall'amministratore. Come per Weighted Round Robin, il server più potente ha un peso maggiore. In questo modo è possibile mantenere una ripartizione ottimale delle richieste all’interno di un cluster. Ogni nuova richiesta viene infatti assegnata al server con il rapporto connessioni attive/peso più basso.

Vantaggi e importanza del load balancer

Il principale vantaggio di un load balancer è quello di ridurre i tempi di risposta di un sito in seguito alle richieste degli utenti. Ottimizzare il carico di lavoro dei server riduce i rischi di malfunzionamenti dovuti a un sovraccarico. Se una macchina non è disponibile, gli utenti vengono reindirizzati verso un altro server e hanno sempre accesso alle pagine. In questo modo, puoi garantire loro un'esperienza ottimale grazie a una qualità di servizio costante: hosting flessibile, high availability, scalabilità, ecc. Inoltre, OVHcloud non limita la banda passante né il traffico mensile.

Il load balancer è particolarmente adatto all’e-commerce, in cui forti fluttuazioni del traffico possono causare sovraccarichi; permette di avere funzionalità omogenee sui siti, curare la propria immagine online e rassicurare i clienti. Per fare un esempio concreto, il load balancer permette di evitare la perdita di carrelli o l’interruzione delle operazioni di pagamento.