load balancing
Cos’è il load balancing o bilanciamento del carico?
Il load balancing è una tecnica utilizzata per distribuire il traffico di rete su un pool di server noto come server farm. Ottimizza le prestazioni, l’affidabilità e la capacità della rete, riducendo la latenza poiché la domanda è distribuita equamente tra più server e risorse di elaborazione.
Il load balancing utilizza un’appliance, fisica o virtuale, per identificare in tempo reale quale server in un pool può soddisfare al meglio una determinata richiesta del client, assicurando al contempo che il traffico di rete intenso non sovraccarichi eccessivamente un singolo server.
Oltre a massimizzare la capacità di rete e garantire prestazioni elevate, il bilanciamento del carico fornisce il failover. Se un server si guasta, un bilanciatore del carico reindirizza immediatamente i suoi carichi di lavoro a un server di backup, mitigando così l’effetto sugli utenti finali.
Il bilanciamento del carico è solitamente classificato come supporto del Livello 4 o del Livello 7 del modello di comunicazione Open Systems Interconnection (OSI). I bilanciatori del carico di Livello 4 distribuiscono il traffico in base ai dati di trasporto, come indirizzi IP e numeri di porta TCP. I dispositivi di bilanciamento del carico di livello 7 prendono decisioni di routing in base alle caratteristiche a livello di applicazione, che includono le informazioni dell’intestazione Hypertext Transfer Protocol (HTTP) e il contenuto effettivo del messaggio, come URL e cookie. I bilanciatori del carico di livello 7 sono più comuni, ma i bilanciatori del carico di livello 4 rimangono popolari, in particolare nelle distribuzioni edge.
Come funziona il load balancing
I bilanciatori del carico gestiscono le richieste in arrivo degli utenti per informazioni e altri servizi. Si trovano tra i server che gestiscono tali richieste e Internet. Una volta ricevuta una richiesta, il bilanciatore del carico determina innanzitutto quale server in un pool è disponibile e online e quindi indirizza la richiesta a tale server. Durante i periodi di carichi pesanti, un bilanciatore del carico agisce prontamente e può aggiungere dinamicamente server in risposta a picchi di traffico. Al contrario, i bilanciatori del carico possono eliminare i server se la domanda è bassa.
Tipi di bilanciatori del carico
Il load balancing è un componente chiave delle infrastrutture ad alta disponibilità. A seconda delle esigenze di una rete, è possibile distribuire vari tipi di bilanciatori del carico con diverse capacità di archiviazione, funzionalità e complessità.
Un bilanciatore di carico può essere un’appliance fisica, un’istanza software o una combinazione di entrambi. Di seguito sono riportati due tipi di bilanciatori di carico:
- Bilanciatore di carico hardware. Un bilanciatore di carico hardware è un dispositivo hardware con software integrato specializzato e proprietario progettato per gestire enormi quantità di traffico applicativo. Questi bilanciatori di carico hanno una capacità di virtualizzazione integrata e consentono di utilizzare più istanze di un bilanciatore di carico virtuale su un singolo dispositivo.
Tradizionalmente, i fornitori caricavano software proprietario su hardware dedicato e lo vendevano agli utenti come appliance standalone, solitamente in coppia per fornire il failover in caso di guasto di un sistema. Le reti in crescita richiedono a un’organizzazione di acquistare appliance aggiuntive o più grandi. - Bilanciatore di carico software. Il bilanciamento del carico software viene eseguito su macchine virtuali (VM) o server white box, molto probabilmente come funzione di controller di distribuzione delle applicazioni (ADC). Gli ADC in genere offrono funzionalità aggiuntive, tra cui memorizzazione nella cache, compressione e modellazione del traffico. Popolare negli ambienti cloud, il bilanciamento del carico virtuale può offrire un elevato grado di flessibilità. Ad esempio, consente agli utenti di aumentare o ridurre automaticamente le dimensioni per rispecchiare i picchi di traffico o l’attività di rete ridotta.
Bilanciamento del carico basato su cloud
Il bilanciamento del carico basato su cloud utilizza il cloud come infrastruttura sottostante per bilanciare gli ambienti di cloud computing.
Di seguito sono riportati alcuni esempi di modelli di bilanciamento del carico basati su cloud:
- Bilanciamento del carico di rete. Questa è l’opzione di bilanciamento del carico più veloce disponibile. Opera sul Livello 4 del modello OSI e utilizza le informazioni del livello di rete per trasportare il traffico di rete.
- Bilanciamento del carico HTTP Secure. Ciò consente agli amministratori di rete di distribuire il traffico in base alle informazioni provenienti dall’indirizzo HTTP. Si basa sul Livello 7 ed è una delle opzioni di bilanciamento del carico più flessibili.
- Bilanciamento del carico interno. È simile al bilanciamento del carico di rete, ma può anche bilanciare la distribuzione del traffico nell’infrastruttura interna.
Algoritmi di bilanciamento del carico
Gli algoritmi di bilanciamento del carico determinano quali server ricevono specifiche richieste client in arrivo. Esistono due tipi principali di algoritmi di bilanciamento del carico: statico e dinamico.
1. Algoritmi di bilanciamento del carico statico
- L’approccio basato su hash IP calcola il server preferito di un determinato client in base a chiavi designate, come intestazioni HTTP o informazioni sull’indirizzo IP. Questo metodo supporta la persistenza della sessione, o stickiness, che avvantaggia le applicazioni che si basano su informazioni di stato memorizzate specifiche dell’utente, come i carrelli della spesa nell’e-commerce
- Il metodo round-robin esamina tutti i server disponibili in ordine sequenziale e distribuisce il traffico a un elenco di server in rotazione utilizzando il sistema dei nomi di dominio (DNS). Un nameserver autorevole trasporta un elenco di diversi record “A” e ne fornisce uno in risposta a ogni query DNS.
- L’approccio round-robin ponderato consente agli amministratori di assegnare pesi variabili a ciascun server. In questo modo, i server che possono gestire più traffico ricevono leggermente più traffico in base al loro peso. La ponderazione è configurata all’interno dei record DNS.
2. Algoritmi di bilanciamento dinamico del carico
Il metodo least-connections favorisce i server con il minor numero di transazioni in corso e controlla e invia il traffico a quei server che hanno il minor numero di connessioni aperte. Questo algoritmo presuppone che tutte le connessioni richiedano una potenza di elaborazione pressoché uguale.
Il metodo weighted least connection presuppone che alcuni server possano gestire più traffico rispetto ad altri. Pertanto, consente agli amministratori di assegnare pesi diversi a ciascun server. L’approccio del tempo di risposta ponderato utilizza le medie del tempo di risposta di ogni server e le combina con il numero di connessioni aperte da ogni server per trovare la destinazione migliore per l’invio del traffico. Questo algoritmo garantisce un servizio più rapido, poiché invia il traffico ai server con il tempo di risposta più rapido. L’algoritmo basato sulle risorse distribuisce il carico in base alla disponibilità delle risorse su ogni server in quel momento. Prima della distribuzione del traffico, interroga un software specializzato chiamato agente che viene eseguito su ogni server per misurare la disponibilità dell’unità di elaborazione centrale e della memoria.
Vantaggi del load balancing
Le organizzazioni che gestiscono più server possono trarre grandi vantaggi dal load balancing del traffico di rete. Di seguito sono riportati i principali vantaggi dell’utilizzo dei bilanciatori di carico:
- Migliore scalabilità. I bilanciatori di carico possono scalare l’infrastruttura del server su richiesta, a seconda dei requisiti di rete, senza influire sui servizi. Ad esempio, se un sito Web inizia ad attrarre un gran numero di visitatori, può causare un picco improvviso di traffico. Se il server Web non è in grado di gestire questo improvviso afflusso di traffico, il sito Web potrebbe bloccarsi. Il bilanciamento del carico può distribuire il traffico extra su più server, impedendo che ciò accada.
- Migliore efficienza. Grazie al ridotto carico di traffico su ciascun server, il traffico di rete scorre meglio e migliora i tempi di risposta. Ciò fornisce in definitiva un’esperienza migliore per i visitatori del sito.
- Tempi di inattività ridotti. Le aziende con una presenza globale e più sedi in diversi fusi orari possono trarre vantaggio dal bilanciamento del carico, soprattutto quando si tratta di manutenzione del server. Ad esempio, un’azienda può spegnere il server che necessita di manutenzione e instradare il traffico verso gli altri bilanciatori di carico disponibili senza causare interruzioni del servizio o tempi di inattività.
- Analisi predittiva. Il bilanciamento del carico può fornire un rilevamento precoce dei guasti e aiutare a gestirli senza influire su altre risorse. Ad esempio, i bilanciatori del carico basati su software possono prevedere i colli di bottiglia del traffico prima che si verifichino.
- Gestione efficiente dei guasti. In caso di guasto, i bilanciatori del carico possono reindirizzare automaticamente il traffico alle risorse funzionali e alle opzioni di backup. Ad esempio, se viene rilevato un guasto su una risorsa di rete, come un server di posta, i bilanciatori del carico possono ridistribuire le risorse ad altre aree non interessate per prevenire l’interruzione del servizio.
- Sicurezza migliorata. I bilanciatori del carico aggiungono un ulteriore livello di sicurezza senza richiedere modifiche o risorse aggiuntive. Man mano che più elaborazione si sposta sul cloud, i bilanciatori del carico vengono dotati di funzionalità di sicurezza, come la funzione di offload. Ciò difende un’organizzazione dagli attacchi di negazione del servizio distribuiti trasferendo il traffico di attacco dal server aziendale a un provider di cloud pubblico.
Bilanciatori di carico hardware e software
Sia i bilanciatori di carico hardware che quelli software hanno casi d’uso specifici. I bilanciatori di carico hardware richiedono appliance rack-and-stack, mentre i bilanciatori di carico software sono installati su server X86 standard, VM o istanze cloud. I bilanciatori di carico hardware sono dimensionati per gestire carichi di traffico di picco. I prodotti software sono in genere concessi in licenza in base al consumo di larghezza di banda.