Cos'è il bilanciamento del carico?
Il bilanciamento del carico è il metodo di distribuzione equa del traffico di rete su un pool di risorse che supportano un'applicazione. Le applicazioni moderne devono elaborare milioni di utenti contemporaneamente e restituire testo, video, immagini e altri dati corretti a ciascun utente in modo rapido e affidabile. Per gestire volumi di traffico così elevati, la maggior parte delle applicazioni dispone di molti server di risorse con dati duplicati tra di loro. Un load balancer è un dispositivo che si trova tra l'utente e il gruppo di server e funge da facilitatore invisibile, garantendo che tutti i server di risorse siano utilizzati allo stesso modo.
Quali sono i vantaggi del bilanciamento del carico?
Il bilanciamento del carico dirige e controlla il traffico Internet tra i server delle applicazioni e i loro visitatori o client. Di conseguenza, migliora la disponibilità, la scalabilità, la sicurezza e le prestazioni di un'applicazione.
Disponibilità delle applicazioni
Gli errori o la manutenzione del server possono aumentare i tempi di inattività delle applicazioni, rendendo l'applicazione non disponibile ai visitatori. I load balancer aumentano la tolleranza ai guasti dei sistemi rilevando automaticamente i problemi del server e reindirizzando il traffico client ai server disponibili. È possibile utilizzare il bilanciamento del carico per semplificare queste attività:
- Eseguire la manutenzione o gli aggiornamenti del server delle applicazioni senza tempi di inattività delle applicazioni
- Consentire il ripristino di emergenza automatico ai siti di backup
- Eseguire controlli dell'integrità e prevenire i problemi che possono causare tempi di inattività
Scalabilità delle applicazioni
È possibile utilizzare i load balancer per indirizzare il traffico di rete in modo intelligente tra più server. Le applicazioni sono in grado di gestire migliaia di richieste client perché il bilanciamento del carico esegue le seguenti operazioni:
- Previene i colli di bottiglia del traffico su qualsiasi server
- Prevede il traffico delle applicazioni in modo da poter aggiungere o rimuovere server diversi, se necessario
- Aggiunge ridondanza al sistema in modo da poter dimensionare le risorse con sicurezza
Sicurezza delle applicazioni
I load balancer sono dotati di funzionalità di sicurezza integrate per aggiungere un ulteriore livello di sicurezza alle applicazioni Internet. Sono uno strumento utile per affrontare gli attacchi di tipo Distributed Denial of Service (DDoS), in cui i malintenzionati inondano un server delle applicazioni con milioni di richieste simultanee che causano errori del server. I load balancer del carico possono inoltre effettuare le seguenti operazioni:
- Monitorare il traffico e bloccare i contenuti dannosi
- Reindirizzare automaticamente il traffico degli attacchi a più server di back-end per ridurre al minimo l'impatto
- Instradare il traffico attraverso un gruppo di firewall di rete per una maggiore sicurezza
Prestazioni delle applicazioni
I load balancer migliorano le prestazioni delle applicazioni aumentando i tempi di risposta e riducendo la latenza di rete. Eseguono diverse attività essenziali come le seguenti:
- Distribuire uniformemente il carico tra i server per migliorare le prestazioni delle applicazioni
- Reindirizzare le richieste dei client a un server geograficamente più vicino per ridurre la latenza
- Garantire l'affidabilità e le prestazioni delle risorse informatiche fisiche e virtuali
Cosa sono gli algoritmi di bilanciamento del carico?
Un algoritmo di bilanciamento del carico è l'insieme di regole che un load balancer segue per determinare il server migliore per ciascuna delle diverse richieste del client. Gli algoritmi di bilanciamento del carico si dividono in due categorie principali.
Bilanciamento del carico statico
Gli algoritmi di bilanciamento del carico statico seguono regole fisse e sono indipendenti dallo stato corrente del server. Di seguito sono riportati esempi di bilanciamento del carico statico.
Metodo round robin
I server dispongono di indirizzi IP che indicano al client dove inviare le richieste. L'indirizzo IP è un numero lungo difficile da ricordare. Per semplificare le cose, un Domain Name System mappa i nomi dei siti Web ai server. Quando inserisci aws.amazon.com nel tuo browser, la richiesta va prima al nostro server dei nomi, che restituisce il nostro indirizzo IP al tuo browser.
Nel metodo round robin, un server dei nomi autorevole esegue il bilanciamento del carico invece di hardware o software specializzati. Il server dei nomi restituisce gli indirizzi IP di diversi server nella server farm a turno o in modalità round robin.
Metodo weighted round robin
Nel bilanciamento del carico con metodo weighted round robin è possibile assegnare pesi diversi a ciascun server in base alla sua priorità o capacità. I server con pesi più elevati riceveranno più traffico di applicazioni in entrata dal server dei nomi.
Metodo IP hash
Nel metodo IP hash, il load balancer esegue un calcolo matematico, chiamato hashing, sull'indirizzo IP del client. Converte l'indirizzo IP del client in un numero, che viene quindi mappato ai singoli server.
Bilanciamento del carico dinamico
Gli algoritmi di bilanciamento del carico dinamico esaminano lo stato corrente dei server prima di distribuire il traffico. Di seguito sono riportati alcuni esempi di algoritmi di bilanciamento del carico dinamico.
Metodo least connection
Una connessione è un canale di comunicazione aperto tra un client e un server. Quando il client invia la prima richiesta al server, si autentica e stabilisce una connessione attiva tra loro. Nel metodo least connection, il load balancer controlla quali server hanno il minor numero di connessioni attive e invia il traffico a tali server. Questo metodo presuppone che tutte le connessioni richiedano la stessa potenza di elaborazione per tutti i server.
Metodo weighted least connection
Gli algoritmi weighted least connection presuppongono che alcuni server siano in grado di gestire più connessioni attive di altri. Pertanto, è possibile assegnare pesi o capacità diversi a ciascun server e il load balancer invia le nuove richieste client al server con il minor numero di connessioni in base alla capacità.
Metodo least response time
Il tempo di risposta è il tempo totale impiegato dal server per elaborare le richieste in arrivo e inviare una risposta. Il metodo least response time combina il tempo di risposta del server e le connessioni attive per determinare il server migliore. I load balancer utilizzano questo algoritmo per garantire un servizio più rapido per tutti gli utenti.
Metodo resource-based
Nel metodo resource-based, i load balancer distribuiscono il traffico analizzando il carico corrente del server. Un software specializzato chiamato agente viene eseguito su ciascun server e calcola l'utilizzo delle risorse del server, come la capacità di calcolo e la memoria. Quindi, il load balancer controlla l'agente per verificare le risorse libere sufficienti prima di distribuire il traffico a quel server.
Come funziona il bilanciamento del carico?
Le aziende di solito hanno le loro applicazioni in esecuzione su più server. Tale disposizione dei server è chiamata server farm. Le richieste degli utenti all'applicazione vanno prima al load balancer. Il load balancer instrada quindi ogni richiesta a un singolo server nella server farm più adatta a gestire la richiesta.
Il bilanciamento del carico è come il lavoro svolto da un gestore in un ristorante. Pensa a un ristorante con cinque camerieri. Se i clienti potessero scegliere i loro camerieri, uno o due camerieri potrebbero essere sovraccarichi di lavoro mentre gli altri rimangono inattivi. Per evitare questa situazione, il gestore del ristorante assegna i clienti ai camerieri specifici più adatti a servirli.
Quali sono i tipi di bilanciamento del carico?
È possibile classificare il bilanciamento del carico in tre categorie principali a seconda di ciò che il load balancer controlla nella richiesta del client di reindirizzare il traffico.
Bilanciamento del carico delle applicazioni
Le applicazioni moderne e complesse hanno diverse server farm con più server dedicati a una singola funzione applicativa. Gli Application Load Balancer esaminano il contenuto della richiesta, ad esempio le intestazioni HTTP o gli ID di sessione SSL, per reindirizzare il traffico.
Ad esempio, un'applicazione di e-commerce ha una directory di prodotti, un carrello della spesa e funzioni di pagamento. L'Application Load Balancer invia richieste di esplorazione dei prodotti a server che contengono immagini e video ma non devono mantenere connessioni aperte. In confronto, invia richieste del carrello degli acquisti a server in grado di mantenere molte connessioni client e salvare i dati del carrello per un lungo periodo.
Bilanciamento del carico di rete
I Network Load Balancer esaminano gli indirizzi IP e altre informazioni di rete per reindirizzare il traffico in modo ottimale. Tengono traccia dell'origine del traffico dell'applicazione e possono assegnare un indirizzo IP statico a diversi server. I Network Load Balancer utilizzano gli algoritmi di bilanciamento del carico statico e dinamico descritti in precedenza per bilanciare il carico del server.
Bilanciamento del carico del server globale
Il bilanciamento del carico del server globale avviene su diversi server distribuiti geograficamente. Ad esempio, le aziende possono disporre di server in più data center, in diversi paesi e in fornitori di cloud di terze parti in tutto il mondo. In questo caso, i load balancer locali gestiscono il carico dell'applicazione all'interno di una regione o di una zona. Tentano di reindirizzare il traffico verso una destinazione server geograficamente più vicina al client. Potrebbero reindirizzare il traffico verso server al di fuori della zona geografica del client solo in caso di errore del server.
Bilanciamento del carico DNS
Nel bilanciamento del carico DNS, è possibile configurare il dominio per instradare le richieste di rete attraverso un pool di risorse del dominio. Un dominio può corrispondere a un sito Web, un sistema di posta, un server di stampa o un altro servizio reso accessibile tramite Internet. Il bilanciamento del carico DNS è utile per mantenere la disponibilità delle applicazioni e bilanciare il traffico di rete in un pool di risorse distribuito a livello globale.
Quali sono i tipi di tecnologia di bilanciamento del carico?
I load balancer sono di due tipi: load balancer hardware e load balancer software.
Load balancer hardware
Un load balancer basato su hardware è un'appliance hardware in grado di elaborare e reindirizzare in modo sicuro gigabyte di traffico verso centinaia di server diversi. È possibile archiviarlo nei data center e utilizzare la virtualizzazione per creare più load balancer digitali o virtuali che è possibile gestire centralmente.
Load balancer software
I load balancer basati su software sono applicazioni che eseguono tutte le funzioni di bilanciamento del carico. È possibile installarli su qualsiasi server o accedervi come servizio di terze parti completamente gestito.
Confronto tra load balancer hardware e load balancer software
I load balancer hardware richiedono un investimento iniziale, una configurazione e una manutenzione continua. È anche possibile non utilizzarli a piena capacità, soprattutto se ne viene acquistato uno solo per gestire i picchi di traffico nelle ore di punta. Se il volume del traffico aumenta improvvisamente oltre la sua capacità attuale, ciò influirà sugli utenti fino a quando non sarà possibile acquistare e configurare un altro load balancer.
Al contrario, i load balancer basati su software sono molto più flessibili. Possono aumentare o ridurre facilmente le risorse e sono più compatibili con i moderni ambienti di cloud computing. Inoltre, la loro configurazione, gestione e utilizzo nel tempo costano meno.
In che modo AWS può essere utile per il bilanciamento del carico?
Elastic Load Balancing (ELB) è un servizio di bilanciamento del carico completamente gestito che distribuisce automaticamente il traffico delle applicazioni in ingresso a più destinazioni e appliance virtuali tra AWS e risorse on-premise. Può essere usato per dimensionare applicazioni moderne senza configurazioni complesse ed API Gateway. È possibile utilizzare ELB per configurare quattro diversi tipi di load balancer software.
-
Un Application Load Balancer instrada il traffico per le richieste basate su HTTP.
-
Un Network Load Balancer instrada il traffico in base agli indirizzi IP. È ideale per bilanciare le richieste basate su TCP e UDP (User Datagram Protocol).
-
Un Gateway Load Balancer instrada il traffico verso dispositivi virtuali di terze parti. È ideale per incorporare un'appliance di terze parti, come un firewall di rete, nel traffico di rete in modo scalabile e facile da gestire.
-
Un Classic Load Balancer instrada il traffico verso le applicazioni nella rete Amazon EC2-Classic, una singola rete flat condivisa con altri clienti.
È possibile selezionare il load balancer in base alle proprie esigenze. Ad esempio, Terminix, un marchio globale di disinfestazione, utilizza Gateway Load Balancer per gestire il 300% in più di velocità di trasmissione effettiva. Second Spectrum, una società che fornisce tecnologia di tracciamento basata sull'intelligenza artificiale per le trasmissioni sportive, utilizza AWS Load Balancer Controller per ridurre i costi di hosting del 90%. Code.org, un'organizzazione no profit dedicata all'espansione dell'accesso all'informatica nelle scuole, utilizza Application Load Balancer per gestire un picco del 400% di traffico in modo efficiente durante gli eventi di codifica online.
Inizia oggi stesso a utilizzare il bilanciamento del carico creando un account AWS.
Fasi successive del bilanciamento del carico con AWS
Ottieni accesso istantaneo al piano gratuito di AWS.