Introducing G2.ai, the future of software buying.Try now

Cos'è un bilanciatore di carico? È importante per le prestazioni delle app

Dicembre 9, 2021
da Sudipto Paul

Avere un'app che si blocca nel bel mezzo dello shopping è frustrante.

Ci possono essere molte ragioni per il crash, inclusa una gestione impropria del carico di lavoro. Un'applicazione basata su cloud diventa rapidamente sovraccarica con un singolo server dietro di essa, portando a interruzioni del servizio, tempi di inattività e persino crash.

Troppi utenti che accedono contemporaneamente agli stessi dati o software all'interno dell'infrastruttura IT di un'azienda causano un crash, specialmente se il traffico dell'applicazione non è bilanciato correttamente. Ma come fanno le aziende a bilanciare il traffico? Entra in gioco il software di bilanciamento del carico.

Un bilanciatore di carico agisce come un facilitatore invisibile per gli utenti. Non possono vederlo ma le loro richieste vengono instradate attraverso di esso tutto il tempo. Ad esempio, un utente che fa shopping per Natale sfoglierà diversi prodotti prima di sceglierne uno o più. Quando l'utente clicca su un prodotto, il dispositivo client invia una richiesta di informazioni ai server backend. Un bilanciatore di carico riceve questa richiesta in arrivo e la instrada a tutti i server capaci.

Questa distribuzione del carico è cruciale per un'efficiente trasmissione dei dati e l'ottimizzazione delle risorse di consegna delle applicazioni. Migliora anche le prestazioni prevenendo il sovraccarico di un singolo server. Inoltre, un bilanciatore di carico controlla la capacità di un server di gestire le richieste, rimuove i server non idonei e crea persino nuovi server applicativi virtualizzati secondo necessità.

Funzioni di un bilanciatore di carico:

  • Aggiunge o rimuove server su richiesta
  • Riduce il tempo di risposta alle richieste degli utenti
  • Distribuisce le richieste dei client in modo efficiente
  • Identifica e blocca contenuti dannosi
  • Automatizza il recupero dei disastri su siti di backup
  • Rende l'ambiente di calcolo più resiliente
  • Rileva automaticamente i guasti dei server e reindirizza le richieste dei client
  • Permette la manutenzione dei server senza impattare le operazioni correnti
  • Dirige il traffico verso server capaci e online per garantire prestazioni e affidabilità

Oggi, i bilanciatori di carico sono solitamente contenuti nei controller di consegna delle applicazioni (ADC) che ottimizzano il flusso di dati tra due entità e migliorano le prestazioni delle applicazioni. Questo è il risultato della continua evoluzione dei bilanciatori di carico originariamente sviluppati per garantire servizi applicativi prevedibili, scalabili e altamente disponibili.

Il bilanciamento del carico ha fatto molta strada dalla sua nascita. Le aziende nei primi giorni di internet commerciale si affidavano a server basati su PC singoli per gestire il traffico web. Ma questi server non potevano gestire le crescenti richieste delle applicazioni web.

Poi è arrivata la tecnologia round-robin del sistema dei nomi di dominio (DNS). Ha funzionato bene in termini di distribuzione sequenziale degli utenti utilizzando il nome come punto di virtualizzazione. Tuttavia, non poteva migliorare l'alta disponibilità e rimuovere dinamicamente i server malfunzionanti.

Questo ha portato alla nascita di soluzioni di bilanciamento del carico costruite appositamente. Queste soluzioni sono integrate direttamente nel sistema operativo (OS) o nel software applicativo e comunicano utilizzando il protocollo internet del cluster (IP) invece degli indirizzi IP fisici. Una sessione di servizio inizierebbe solo dopo che un server ha risposto alla richiesta di connessione e l'ha reindirizzata a un indirizzo IP fisico.

Queste soluzioni di bilanciamento del carico proprietarie hanno migliorato la scalabilità, la prevedibilità e l'alta disponibilità. La vera sfida era la comunicazione costante tra i membri del cluster. Più server significavano più comunicazione inter-server e utilizzo del processore. Questo ha aumentato il traffico di rete e alla fine ha impattato il traffico degli utenti finali.

Poi è arrivata l'era dell'hardware di bilanciamento del carico basato sulla rete. Questi erano essenzialmente dispositivi neutrali rispetto alle applicazioni situati al di fuori del server applicativo. Usavano la traduzione degli indirizzi di rete bidirezionale (NAT) per inoltrare gli utenti dagli indirizzi del server virtuale ai server reali più capaci.

I dispositivi basati sulla rete hanno anche reso possibile mascherare l'identità del server applicativo e portare un server offline per la manutenzione senza interruzione per l'utente. Gli ADC che vedi oggi derivano da questi bilanciatori di carico basati sulla rete.

Dopo aver iniziato come dispositivi hardware, gli ADC sono diventati rapidamente disponibili sia come macchine virtuali che come software. Gli ADC basati su software hanno soddisfatto i picchi di traffico, garantito la sicurezza e offerto maggiore flessibilità. Gli ADC sono incompleti senza la tecnologia di bilanciamento del carico sottostante cruciale per la gestione della consegna delle applicazioni.

Importanza del bilanciamento del carico

I siti web ad alto traffico ricevono milioni di richieste utente simultanee per il ritorno immediato dei dati dell'applicazione. Questo carico di lavoro massiccio, se lasciato incontrollato, può sopraffare un singolo server. Un server sovraccarico può non riuscire a fornire risposte o diventare non disponibile, risultando in una perdita per l'azienda. È qui che entrano in gioco i bilanciatori di carico.

Un bilanciatore di carico coordina con i server per una distribuzione efficiente delle richieste degli utenti. Garantisce che nessun server sia sovraccarico o non stia elaborando alcun traffico. Inoltre, i dispositivi di bilanciamento del carico possono rilevare server malfunzionanti e reindirizzare il traffico ai server operativi. Alcuni bilanciatori di carico con algoritmi avanzati possono persino prevedere se un server è probabile che si sovraccarichi presto e instradare il traffico di conseguenza.

Le aziende che ricevono traffico massiccio hanno diversi stakeholder oltre ai clienti che visitano le loro app o siti web. La capacità di supportare questa domanda crescente è fondamentale per il continuo patrocinio da parte degli stakeholder e dei clienti. È per questo che le aziende aggiungono bilanciatori di carico alla loro infrastruttura cloud per migliorare la disponibilità, la reattività e la scalabilità.

Vuoi saperne di più su Software di bilanciamento del carico? Esplora i prodotti Bilanciamento del carico.

Tipi di bilanciatori di carico

I bilanciatori di carico sono principalmente responsabili della gestione del bilanciamento del carico del server (SLB). A seconda delle loro capacità, possono anche offrire funzionalità aggiuntive: sicurezza, autenticazione e archiviazione geografica. Queste funzioni variegate, insieme alle configurazioni, aiutano a categorizzare i bilanciatori di carico in sette tipi.

1. Bilanciatore di carico di rete (NLB)

Un bilanciatore di carico di rete distribuisce il traffico in base a variabili di rete: IP di origine, IP di destinazione, porta di origine, porta di destinazione e protocollo IP. È anche conosciuto come bilanciatore di carico di livello 4 (L4) poiché opera nel quarto livello del modello di interconnessione dei sistemi aperti (OSI).

Un bilanciatore di carico di rete non considera parametri a livello di applicazione come il tipo di contenuto, i dati dei cookie, le intestazioni personalizzate, la posizione dell'utente o il comportamento dell'applicazione. È privo di contesto e dirige il traffico in base alle informazioni a livello di rete contenute nei pacchetti.

2. Bilanciatore di carico applicativo (ALB)

Un bilanciatore di carico applicativo distribuisce le richieste in arrivo in base a più variabili a livello di applicazione. È anche conosciuto come bilanciatore di carico di livello 7 (L7) perché si colloca al livello più alto del modello OSI.

Un bilanciatore di carico applicativo è consapevole del contenuto. Prende decisioni di bilanciamento del carico sugli elementi del payload del contenuto come l'Uniform Resource Locator (URL), l'intestazione del protocollo di trasferimento ipertestuale (HTTP) e il livello di socket sicuro (SSL). Questa consapevolezza consente a un bilanciatore di carico applicativo di controllare il traffico del server in base al comportamento e all'uso dell'applicazione.

3. Bilanciatore di carico globale del server (GSLB)

Un bilanciatore di carico globale del server o bilanciatore di carico multi-sito utilizza la tecnologia DNS dinamica per distribuire il traffico tra server in diverse località.

Il bilanciamento del carico globale del server agisce come un proxy DNS e utilizza algoritmi di bilanciamento del carico in tempo reale per rispondere. Massimizza le prestazioni e minimizza la latenza consentendo agli utenti di connettersi a un server geograficamente più vicino a loro. Oltre al bilanciamento del carico, monitora la salute del server attraverso configurazioni e facilita il recupero in caso di disastro del server.

4. Dispositivo hardware di bilanciamento del carico (HLD)

Un dispositivo hardware di bilanciamento del carico è un dispositivo fisico situato in loco che instrada il traffico web a diversi server. Di solito è implementato sul livello di trasporto (L4) e sul livello applicativo (L7) del modello OSI.

Gli HLD randomizzano la distribuzione del traffico o considerano vari fattori come la connessione del server disponibile, l'utilizzo delle risorse e la potenza di elaborazione del server. Questi bilanciatori di carico non hanno dipendenze e puoi installarli nei data center. Nonostante gestiscano un grande volume di traffico, gli HLD offrono una flessibilità limitata e sono costosi.

5. Bilanciatore di carico software (SLB)

Un bilanciatore di carico software utilizza uno o più algoritmi di pianificazione per distribuire le richieste in arrivo tra i server. Gli SLB sono flessibili e puoi integrarli facilmente nelle soluzioni di orchestrazione della virtualizzazione. Poiché gli SLB funzionano su hardware di consumo, sono anche meno costosi.

6. Bilanciatore di carico virtuale (VLB)

Un bilanciatore di carico virtuale è un bilanciatore di carico hardware che funziona su una macchina virtuale. I VLB utilizzano software di controller di consegna delle applicazioni virtualizzate per distribuire il carico del traffico di rete. Le grandi organizzazioni con picchi di traffico costanti spesso utilizzano questi bilanciatori di carico. Le sfide comuni dei VLB includono capacità di automazione limitate, minore scalabilità e mancanza di gestione centralizzata.

7. Bilanciatore di carico del gateway (GLB)

Un bilanciatore di carico del gateway distribuisce, scala e gestisce appliance virtuali come firewall, sistemi di ispezione approfondita dei pacchetti e sistemi di prevenzione delle intrusioni. Questo bilanciatore di carico utilizza un gateway di rete a punto di ingresso e uscita singolo per distribuire il traffico. Un GLB opera sul terzo livello del modello OSI.

Come funziona un bilanciatore di carico?

Un bilanciatore di carico si trova tipicamente tra un client e gli host che forniscono servizi client. Supponiamo che un bilanciatore di carico sia connesso a un server virtuale e a un cluster di punti di servizio. È anche connesso agli host per elaborare il traffico di ritorno al client. Ecco come funziona questo bilanciatore di carico durante una transazione:

How does a load balancer work

  • Tentativo di connessione: Un client tenta di connettersi ai servizi dietro un bilanciatore di carico.
  • Accettazione della connessione: Il bilanciatore di carico accetta la richiesta in arrivo. Sceglie l'host più adatto ma instrada la richiesta solo dopo aver cambiato l'IP di destinazione in base ai servizi dell'host selezionato.
  • Risposta dell'host: L'host accetta la connessione e risponde al client tramite il bilanciatore di carico.
  • Intercettazione del pacchetto di ritorno: Il bilanciatore di carico intercetta il pacchetto di ritorno e cambia l'IP di origine con l'IP del server virtuale prima di inoltrare il pacchetto al client.
  • Ricezione del pacchetto di ritorno: Il client riceve il pacchetto di ritorno e continua a fare altre richieste.

Algoritmi di bilanciamento del carico

L'efficienza del bilanciamento del carico deriva dagli algoritmi di bilanciamento del carico.

Un algoritmo di bilanciamento del carico è una logica che un bilanciatore di carico utilizza per elaborare i pacchetti di dati in arrivo e distribuire i carichi tra i server. Selezionare l'algoritmo giusto è fondamentale per l'affidabilità, le prestazioni e la ridondanza.

Gli algoritmi di bilanciamento del carico analizzano il traffico in arrivo e utilizzano vari parametri per distribuirlo. In base a questi parametri, gli algoritmi di bilanciamento del carico sono divisi in due tipi: statici e dinamici.

Algoritmo di bilanciamento del carico statico

Un algoritmo di bilanciamento del carico statico distribuisce tutto il traffico uniformemente tra i server. È statico perché non considera lo stato del sistema attuale per lo spostamento del carico.

Questo algoritmo instrada il traffico in base alla conoscenza delle risorse del server. Inoltre, un algoritmo di bilanciamento del carico statico richiede che i compiti di bilanciamento del carico siano eseguiti esclusivamente. Altri dispositivi non possono eseguire questi compiti. Questo algoritmo è ideale per sistemi con basse variazioni di carico.

Di seguito sono riportati alcuni degli algoritmi di bilanciamento del carico statico più comunemente usati.

Round-robin

Il bilanciamento del carico round-robin è uno degli algoritmi più semplici e ampiamente utilizzati per distribuire le richieste in arrivo ai server. Scorre un elenco di server e inoltra una richiesta del client a ciascun server nell'elenco. Alla fine di un elenco, ripete lo stesso processo fino a quando tutte le richieste sono distribuite. L'algoritmo round-robin presume che tutti i server siano disponibili con la stessa capacità di bilanciamento del carico.

Due varianti dell'algoritmo round-robin sono:

1. Round-robin ponderato: Il round-robin ponderato è una configurazione avanzata del round-robin. Assegna un peso a ciascun server che di solito denota la capacità di gestione del carico di un server. Maggiore è il peso, più richieste riceve un server.

Supponiamo che due server, X e Y, abbiano pesi 2 e 1, rispettivamente. Un bilanciatore di carico distribuirà due richieste a X per ogni richiesta che invia a Y.

 

2. Round-robin dinamico: Un algoritmo round-robin dinamico assegna dinamicamente un peso a ciascun server. Questo peso varia a seconda del carico attuale e della capacità inattiva di un server.

Hash IP di origine

L'algoritmo di bilanciamento del carico hash IP di origine genera una chiave hash combinando gli indirizzi IP di origine e di destinazione. Ogni chiave hash è unica per un server specifico e assegna le richieste solo a quel server. Questa chiave può essere rigenerata e garantisce che un client si diriga allo stesso server se una sessione si interrompe.

Statico randomizzato

Un algoritmo di bilanciamento del carico statico randomizzato assegna casualmente i compiti ai server. Può persino calcolare una permutazione casuale se conosce il numero di compiti in anticipo. Poiché i processori conoscono già i compiti assegnati a loro, un server non ha bisogno di un master di distribuzione in tali casi. Questo algoritmo funziona bene per una dimensione minima del compito.

Gestore centrale

L'algoritmo del gestore centrale distribuisce il carico di lavoro con un nodo centrale come coordinatore, scegliendo il processore con il carico minore. Avere informazioni sul carico su tutti i server aiuta il gestore a selezionare il processore meno carico. Questo algoritmo utilizza molta comunicazione inter-processo, che può rapidamente diventare un collo di bottiglia.

Soglia

L'algoritmo della soglia assegna il traffico in arrivo a nuovi server. I server sono selezionati localmente, eliminando la necessità di comunicare tramite messaggi remoti. Ogni server mantiene una copia del carico del processore categorizzato in tre livelli:

  1. Sottocarico: carico <tunder
  2. Medio: tunder ≤ carico ≤ tupper
  3. Sovraccarico: carico > tupper

Algoritmo di bilanciamento del carico dinamico

Un algoritmo di bilanciamento del carico dinamico prende decisioni di bilanciamento del carico basate sulle informazioni sulle prestazioni dei nodi. Questo algoritmo distribuisce il carico di lavoro in tempo reale e trova il carico designato appropriato sul server più leggero in una rete. Gli algoritmi di bilanciamento del carico dinamico sono solitamente complessi ma offrono migliori prestazioni e tolleranza.

Gli algoritmi di bilanciamento del carico dinamico più comunemente usati sono:

Connessione minima

Questo algoritmo di bilanciamento del carico distribuisce le richieste dei client ai server con il minor numero di connessioni attive al momento della ricezione di una nuova richiesta. Per connessioni di lunga durata, l'algoritmo della connessione minima considera il carico delle connessioni attive mentre distribuisce le richieste.

Connessione minima ponderata

La connessione minima ponderata, una configurazione avanzata dell'algoritmo della connessione minima, utilizza il peso del server e le connessioni attive per distribuire le richieste dei client. Una volta che un amministratore assegna un peso a ciascun server in base alla sua capacità di gestione del traffico, la connessione minima ponderata considera varie caratteristiche del server applicativo per la distribuzione del carico. Questo algoritmo richiede più tempi di calcolo ma garantisce una distribuzione efficiente del traffico.

Tempo di risposta ponderato

Questo algoritmo di bilanciamento del carico sfrutta il tempo di risposta dei server applicativi per la distribuzione del carico. Più veloce è la risposta, più rapidamente un server riceve la richiesta successiva. Questo algoritmo calcola i pesi del server applicativo collegando il tempo di risposta a un controllo di salute.

Basato sulle risorse (adattivo)

Con questo algoritmo, le risorse disponibili per ciascun server guidano le decisioni di distribuzione del carico. Ogni server contiene un agente o un software specializzato che misura le metriche disponibili di CPU e memoria. Questo agente riporta al bilanciatore di carico per una distribuzione efficiente delle richieste. Un altro algoritmo basato sulle risorse che utilizza i controller di rete definita dal software (SDN) e la conoscenza del livello di rete per le decisioni di distribuzione del traffico è un algoritmo di carico basato sulle risorse (SDN adattivo).

Gli algoritmi di bilanciamento del carico dinamico possono sembrare superare quelli statici, ma sono più complessi poiché tengono conto dello stato attuale del sistema. Questa complessità spesso porta a sovraccarico e decisioni di bilanciamento del carico scadenti. È per questo che è cruciale avere un quadro completo di un meccanismo di bilanciamento del carico prima di scegliere un bilanciatore di carico.

  Bilanciamento del carico statico Bilanciamento del carico dinamico
Distribuzione del carico Al momento della compilazione In tempo reale
Stabilità Maggiore Minore
Complessità e costo Minore Maggiore
Affidabilità e tempo di risposta Minore Maggiore
Prevedibilità Facile Difficile
Thrashing del processore e oscillazione dello stato Nessuno Considerevole
Utilizzo delle risorse Minore Maggiore
Ritardo di comunicazione Minore Maggiore

Vantaggi del bilanciatore di carico

Applicazioni o risorse web non reattive non sono solo frustranti per gli utenti ma influenzano anche il potenziale business. Il bilanciamento del carico ti aiuta a ottimizzare l'uso delle risorse, il tempo di risposta e la consegna dei dati in ambienti ad alto traffico. Di seguito sono riportati alcuni dei principali vantaggi di un bilanciatore di carico.

Alta prestazione

Un bilanciatore di carico riduce la velocità di caricamento e i tempi di risposta instradando il traffico in arrivo verso server capaci. Il bilanciamento del carico intelligente riduce il carico sui server, ottimizza l'esperienza utente e migliora le prestazioni del tuo sito web o applicazione. Ecco come un bilanciatore di carico migliora le prestazioni del server:

  • Scarico SSL: Rimuove il sovraccarico dei server e rende più risorse disponibili per la tua applicazione web o risorse
  • Compressione del traffico: Comprimi il traffico del sito web per ottimizzare l'esperienza utente
  • Cache del traffico: Fornisce contenuti rapidamente con copie conservate di elementi web frequentemente accessibili
  • Supporto HTTP 2.0: Aiuta a comunicare con i client e a caricare i siti web più velocemente

Ridondanza

Un server malfunzionante interrompe i servizi. I bilanciatori di carico utilizzano la ridondanza integrata per gestire i guasti hardware e mitigarne l'impatto sul tempo di attività del sito web. Reindirizzano automaticamente le richieste dei client ai server funzionanti durante un guasto del server. Ecco come i bilanciatori di carico garantiscono ulteriormente la ridondanza:

  • Servizio continuo: Utilizza server funzionanti per instradare le richieste dei client quando un server fallisce
  • Aggirare i server occupati: Identifica i server occupati e reindirizza il traffico verso server meno occupati
  • Sito altamente disponibile: Distribuisci i bilanciatori di carico in coppia in modo che uno possa subentrare quando l'altro fallisce
  • Continuità aziendale: Rileva l'interruzione del sito e reindirizza i visitatori a un sito alternativo preimpostato

Scalabilità

I picchi di traffico possono diventare un incubo senza un meccanismo per gestire il carico crescente. Un bilanciatore di carico aggiunge un server fisico o virtuale nel processo di distribuzione del traffico per soddisfare questa domanda. La scalabilità garantisce un servizio ininterrotto. Ecco come la scalabilità aiuta:

  • Continuità aziendale: Reindirizza il traffico verso siti alternativi durante le interruzioni del sito
  • Capacità del sito web: Gestisce i picchi di traffico con server aggiuntivi
  • Auto-scaling del cloud: Soddisfa le richieste variabili dei siti web ospitati nel cloud
  • Aggiunta di capacità: Evita aggiornamenti dirompenti

Sicurezza

I bilanciatori di carico proteggono anche i dati con ulteriori livelli di sicurezza di rete. Un bilanciatore di carico utilizza le seguenti funzionalità per migliorare la sicurezza del tuo sito web o applicazione:

  • Firewall delle applicazioni web (WAF): Protegge il sito web o l'app da minacce emergenti ed esegue aggiornamenti delle regole giornalieri
  • Autenticazione dell'accesso utente: Protegge le risorse web da accessi non autorizzati
  • Rilevamento delle minacce: Identifica e elimina il traffico di denial of service (DDoS)

Le sfide del bilanciatore di carico

Alcune delle sfide più comuni con un bilanciatore di carico derivano da opzioni di configurazione non adatte. Alcune di queste sfide sono:

  • Chiusura delle connessioni silenziose: Una configurazione predefinita nei bilanciatori di carico chiude le connessioni del protocollo di controllo della trasmissione (TCP) che sono silenziose per un po'. Sebbene questo sia adatto per i bilanciatori di carico che gestiscono le connessioni del server web, la chiusura automatica può causare il fallimento dei tentativi di riconnessione di un client.
  • Pooling delle connessioni: I bilanciatori di carico spesso vengono con una funzione di pooling delle connessioni che mantiene attiva la connessione server-bilanciatore di carico. Più client utilizzano queste connessioni. Il problema con il pooling delle connessioni è che una volta che la connessione multiplexata si chiude, tutte le connessioni lato client si chiudono anche.
  • Connessione TCP costosa: Creare una nuova connessione TCP per ogni richiesta è costoso e aggiunge al tempo di elaborazione della richiesta. Queste nuove connessioni aumentano anche significativamente il traffico tra il bilanciatore di carico e il server. È meglio configurare un bilanciatore di carico per riutilizzare le connessioni TCP per le richieste dallo stesso client.
  • Timeout di ritrasmissione TCP: I bilanciatori di carico che utilizzano il failover soffrono di timeout di trasmissione TCP e causano lunghe latenze per i client. Questo perché i server non disponibili mantengono aperte le connessioni client esistenti e memorizzano i dati nel buffer prima di chiuderle. Puoi evitare questo modificando il timeout di ritrasmissione TCP del server host o configurando un bilanciatore di carico per chiudere le connessioni non salutari.

Proxy inverso vs. bilanciatore di carico vs. CDN vs. clustering

Un proxy inverso accetta una richiesta del client e la inoltra a un server che può soddisfare la richiesta. D'altra parte, un bilanciatore di carico distribuisce le richieste dei client tra un pool di server. Entrambi:

  • Migliorano l'efficienza
  • Agiscono come dispositivi dedicati e costruiti appositamente
  • Restituiscono la risposta del server al client
  • Contribuiscono a un'architettura di calcolo client-server
  • Mediano la comunicazione tra client e server

L'unica differenza tra proxy inverso e bilanciatore di carico è che il primo è utilizzato per un singolo server web o applicativo e il secondo per più server. Oltre a offrire una maggiore sicurezza, i bilanciatori di carico offrono un'accelerazione web che riduce il tempo di risposta.

Una rete di distribuzione dei contenuti (CDN) è una rete di server in più località geografiche. La CDN fornisce dati agli utenti dalla posizione più vicina a loro. Le CDN e i bilanciatori di carico svolgono ruoli simili: distribuzione efficiente dei dati e massimizzazione del tempo di attività.

La principale differenza tra CDN e bilanciatori di carico è che le CDN distribuiscono contenuti su un'ampia area geografica, mentre i bilanciatori di carico distribuiscono il traffico dei client su una rete di server.

Clustering converte più server in un cluster. Questi server connessi agiscono come un singolo server e condividono un indirizzo IP comune per migliorare le prestazioni e la resilienza. Ecco le principali differenze tra bilanciamento del carico e clustering:

 

  • Tipo di server: Il bilanciamento del carico può funzionare con diversi tipi di server, mentre il clustering necessita di server identici all'interno di un cluster.
  • Gestione: Un controller può gestire i cluster, ma il bilanciamento del carico richiede ulteriore competenza di rete.
  • Operazioni: I bilanciatori di carico non dipendono dai server di destinazione. I cluster dipendono da agenti e gestori di nodi per la comunicazione.

Un'organizzazione in crescita deve identificare modi per soddisfare le esigenze dei server in evoluzione. La scelta della tecnologia varia con il problema che stai cercando di risolvere. Indipendentemente dallo strumento che scegli, dovrebbe essere economico e flessibile al cambiamento.

Per riassumere, dovresti usare:

  • Proxy inverso per accelerare il flusso di traffico memorizzando nella cache i contenuti comunemente usati e comprimendo i dati (in entrata e in uscita)
  • Bilanciatore di carico per migliorare le prestazioni dell'applicazione aumentando la capacità e l'affidabilità dell'applicazione
  • CDN per fornire contenuti rapidamente agli utenti con una rete di server situati in diverse geografie
  • Clustering per garantire alta disponibilità consentendo ad altri server di subentrare in caso di interruzione

Casi d'uso del bilanciatore di carico

Un bilanciatore di carico distribuisce principalmente il traffico in arrivo tra i server backend, ma può fare molto di più. Alcuni dei casi d'uso notevoli di un bilanciatore di carico sono:

  • Scalabilità orizzontale: La scalabilità del traffico è una preoccupazione comune per le organizzazioni in crescita che offrono servizi web. Ci sono due tipi di scalabilità: orizzontale (distribuzione del traffico tra più server) e verticale (spostamento delle applicazioni su un server potente per soddisfare le crescenti richieste). I bilanciatori di carico facilitano la scalabilità orizzontale e rendono il tuo sito web o applicazione più affidabile.
  • Alta disponibilità: L'alta disponibilità è fondamentale per ridurre i tempi di inattività e ottimizzare l'affidabilità del sistema. I bilanciatori di carico eliminano i punti di guasto singoli e ti aiutano a raggiungere un'alta disponibilità. Identificano automaticamente i server non funzionali con controlli di salute e li rimuovono per una migliore disponibilità.
  • Distribuzioni blu/verde: Supponiamo che tu voglia testare a fondo il tuo software prima di distribuirlo nell'infrastruttura di produzione. Prima di tutto, devi assicurarti che tutto funzioni prima della distribuzione. Grazie alla tecnica di distribuzione blu/verde, puoi facilmente eseguire questi test con un bilanciatore di carico. Puoi anche tornare alla vecchia versione se una distribuzione fallisce.
  • Distribuzioni canary: Le distribuzioni canary testano una nuova versione di un'applicazione per un sottoinsieme di utenti e aggiornano di conseguenza il resto del pool di server. Se vedi troppi errori dopo aver aggiunto un server canary al pool, puoi annullare la distribuzione. Quando non ci sono errori, puoi continuare a distribuire aggiornamenti al resto del pool.
  • Distribuzioni A/B: Le distribuzioni A/B ti aiutano a prendere decisioni di marketing e sviluppo informate. I bilanciatori di carico ti permettono di aggiungere server B al pool di server A esistente. Una volta fatto, puoi ottenere informazioni significative dall'infrastruttura di monitoraggio e registrazione.

Software di bilanciamento del carico

Un bilanciamento del carico efficiente dipende dalla scelta del software giusto. Se stai cercando di gestire un traffico ad alto volume distribuendo le richieste dei client tra i server in arrivo, lascia che il software di bilanciamento del carico faccia il lavoro pesante.

Per essere incluso in questa categoria, un prodotto software deve:

  • Monitorare il traffico web e distribuire le risorse
  • Scalare i carichi di lavoro dell'infrastruttura per bilanciare il traffico
  • Integrare o fornire servizi di failover e backup

*Di seguito sono riportate le cinque principali soluzioni software di bilanciamento del carico dal Grid® Report Inverno 2021 di G2. Alcune recensioni possono essere modificate per chiarezza.

1. F5 NGINX

F5 NGINX offre un proxy inverso e un bilanciatore di carico cloud-native e facile da usare. Viene fornito con capacità variegate come controlli di sicurezza, recupero del sistema DNS, monitoraggio avanzato, persistenza della sessione, contenitori Kubernetes e interfaccia di programmazione delle applicazioni (API) di rappresentazione dello stato (REST).

Cosa piace agli utenti:

Semplice, facile da usare e potente server HTTPS. Il bilanciamento del carico è uno dei migliori che abbia mai visto. Attualmente utilizzo solo la versione gratuita, ma fa tutto ciò di cui ho bisogno. È leggero e non utilizza molte risorse.

- Recensione F5 NGINX, Joseph S.

Cosa non piace agli utenti:

Meno supporto della comunità e documentazione rispetto ad altri server web come Apache, ma probabilmente più che sufficiente a seconda della tua esperienza e caso d'uso. Non così tanti moduli o estensioni come Apache. Potrebbe essere difficile capire come configurarlo inizialmente. Ma una volta che ci prendi la mano, è abbastanza semplice da usare.

- Recensione F5 NGINX, Amogh H.

2. Kemp LoadMaster

Kemp LoadMaster offre soluzioni di bilanciamento del carico per alte prestazioni e consegna sicura dei carichi di lavoro applicativi. È noto per le implementazioni semplificate, la licenza flessibile e il supporto tecnico di alto livello.

Cosa piace agli utenti:

Il prodotto LoadMaster è incredibilmente facile da usare per tutte le basi. Siamo riusciti a impostare facilmente regole di bilanciamento del carico per sistemi web e interni, ma c'è molto di più che può fare come prodotto di bilanciamento del carico. Queste funzionalità possono essere piuttosto difficili da configurare, ma il supporto è impareggiabile. Quindi, per qualsiasi problema nell'impostare un servizio, invia un ticket e entro un'ora qualcuno risponde e le sessioni remote risolvono i problemi. Nessuna attesa per giorni per una risposta. Questo è ciò che ci attira davvero a rinnovare ogni anno – ti rendi conto di quanto sia importante un buon supporto. Impostare i LoadMaster da un'immagine VM richiede circa 15 minuti per un setup HA.

- Recensione Kemp LoadMaster, Daniel S.

Cosa non piace agli utenti:

Interfaccia web. È poco rifinita e non intuitiva. Ad esempio, i server reali non sono configurati nella sezione "Server Reali". È difficile trovare le impostazioni e le impostazioni per cose correlate sono sparse in diverse sezioni. Posizionamento incoerente dei pulsanti, nomi dei campi incoerenti: a volte tutto in maiuscolo come "Timeout di Connettività", a volte in maiuscolo e minuscolo come "Tentativi di Riprova" appena sotto. Mancanza di supporto per Duo 2FA. Gran parte della documentazione online e dei tutorial sono obsoleti.

- Recensione Kemp LoadMaster, Peter K.

3. Azure Traffic Manager

Azure Traffic Manager offre un servizio di bilanciamento del carico basato su cloud progettato per garantire alta disponibilità, aumentare la reattività, fornire approfondimenti basati sull'uso e combinare sistemi on-premise e cloud.

Cosa piace agli utenti:

I gestori del traffico consentono di reindirizzare gli utenti agli endpoint appropriati in base a diverse impostazioni. Lo stiamo utilizzando per instradare gli utenti alle versioni nazionali del sito, a seconda della posizione degli utenti. Consente agli utenti di vedere le informazioni nella loro lingua nativa e minimizza il tempo di risposta delle pagine web perché i siti nazionali sono situati nei data center più vicini. La caratteristica principale è che l'intero instradamento viene eseguito in background e tutti gli utenti possono utilizzare un singolo URL per accedere al sito indipendentemente dalla loro posizione. La seconda grande caratteristica è l'opzione di failover, quindi il sito rimane disponibile con lo stesso URL indipendentemente dalla sua posizione attuale. Lo stiamo utilizzando per siti on-premise dove è stato configurato Azure Site Recovery per i server. L'URL rimane attivo anche dopo il failover su Azure.

- Recensione Azure Traffic Manager, Arthur S.

Cosa non piace agli utenti:

Aumenta il tempo di risposta iniziale per il sito a causa delle attività di instradamento. Anche se gli utenti vengono reindirizzati al sito più vicino, la richiesta iniziale andrà alla regione di Azure dove è distribuito il gestore del traffico.

- Recensione Azure Traffic Manager, Michael L.

4. AWS Elastic Load Balancing

AWS Elastic Load Balancing distribuisce il traffico applicativo in arrivo per migliorare la scalabilità dell'applicazione. È noto per offrire alta disponibilità, sicurezza robusta e funzionalità di scalabilità automatica.

Cosa piace agli utenti:

ELB è altamente disponibile e consente l'instradamento del traffico verso altri server istantaneamente anche se quello primario è inattivo. Non è a pagamento. ELB funziona bene con l'auto scaling di AWS (aiuta a scalare su/giù in tempo reale senza alcun impatto). Possiamo integrare ELB con Route53 e cloudfront per servire la richiesta in tempo da diverse località per evitare latenza. È sicuro e facile da installare.

- Recensione AWS Elastic Load Balancing, Anshu K.

Cosa non piace agli utenti:

I controlli di salute a volte richiedono più tempo del previsto e questo può causare problemi se non si configura attentamente la configurazione del controllo di salute.

- Recensione AWS Elastic Load Balancing, Joey D.

5. Micro Focus Silk Performer

Micro Focus Silk Performer ottimizza le prestazioni delle applicazioni con test di carico e stress realistici e potenti. Offre diagnostica end-to-end e consente alle app di tollerare un uso aumentato.

Cosa piace agli utenti:

Analisi delle applicazioni e facilità di avviare test di funzionalità di picco di carico di qualsiasi dimensione richiesta. È facile costruire test utilizzando Micro Focus Silk Performer per migliorare la qualità della produzione.

- Recensione Micro Focus Silk Performer, Debra M.

Cosa non piace agli utenti:

La scrittura di script era difficile inizialmente. Molte funzioni sembrano simili ma è difficile valutare quella giusta.

- Recensione Micro Focus Silk Performer, Rajesh H.

Migliora il tempo di attività e la distribuzione del carico

Oggi, i DevOps devono garantire che le applicazioni soddisfino le crescenti richieste di traffico con il minimo disturbo per l'utente. Sfruttano le capacità di bilanciamento del carico come la distribuzione del carico di rete, il miglioramento del tempo di attività, il rilevamento dei guasti del server e la minimizzazione del carico del server backend per mantenere il server funzionale. I bilanciatori di carico sono cruciali per la scalabilità, la disponibilità e la sicurezza delle applicazioni.

Vuoi aggiungere bilanciatori di carico alla tua rete? Scopri di più sui server privati virtuali e se dovresti sceglierli per archiviare le risorse.

Sudipto Paul
SP

Sudipto Paul

Sudipto Paul is a former SEO Content Manager at G2 in India. These days, he helps B2B SaaS companies grow their organic visibility and referral traffic from LLMs with data-driven SEO content strategies. He also runs Content Strategy Insider, a newsletter where he regularly breaks down his insights on content and search. Want to connect? Say hi to him on LinkedIn.