Che cos'è il monitoraggio dei load balancer?
Il monitoraggio dei load balancer comprende processi e pratiche che garantiscono l'efficienza e la salute dei load balancer. I load balancer sono componenti chiave che assicurano l'alta disponibilità e la scalabilità promesse dai fornitori di cloud, in quanto gestiscono la distribuzione dei carichi di lavoro sulle risorse del cloud in modo che non siano né inattivi né sovraccarichi. Sono come piccoli semafori che decidono cosa va dove e quando. Nella prossima sezione mostreremo in dettaglio le principali implementazioni dei load balancer. Il monitoraggio dei load balancer non è una parte importante del monitoraggio del cloud, ma è comunque essenziale.
Il monitoraggio dei load balancer comprende le fasi di verifica dell'efficienza e dello stato di salute dei load balancer. Tutte le implementazioni dei principali fornitori di cloud, cioè AWS, Azure e GCP, fanno uso di bload balancer. Si tratta principalmente di load balancer di rete, che convogliano il traffico verso la risorsa giusta, ma non esclusivamente. Questi load balancer del cloud possono assumere diversi ruoli, non solo gestire le richieste di rete. Vedremo in seguito come questi ruoli differiscono tra loro e, soprattutto, come possono essere monitorati. Per ora vediamo come vengono implementati e utilizzati i load balancer e le loro differenze operative.
Come funziona il bilanciamento del carico?
I load balancer possono essere definiti come i guardiani dei carichi di lavoro. Sono posti davanti alle risorse e ascoltano le richieste, distribuendole tra quelle disponibili in base al carico di lavoro corrente delle risorse. L'insieme delle risorse che un load balancer può distribuire può includere database, sottoreti, applicazioni e in generale tutto ciò che fornisce dati o potenza di calcolo. Un load balancer per applicazioni divide le richieste per un'applicazione, mentre i load balancer per gateway distribuiscono il traffico a più gateway, dietro i quali si trovano, ad esempio, appliance virtuali o endpoint API.
Il modo in cui i load balancer decidono di assegnare una richiesta a una risorsa è stabilito da un algoritmo. Nei load balancer più semplici, una richiesta viene consegnata a una risorsa senza considerare il suo livello di carico. I load balancer più avanzati tengono conto dello stato di ciascuna risorsa ed evitano di assegnare altri compiti a una risorsa già sovraccarica. I primi sono chiamati load balancer statici, i secondi sono considerati dinamici. Altri load balancer stimano il tempo di completamento di ogni attività e includono questi dati nel modo in cui distribuiscono i carichi di lavoro, per una distribuzione possibilmente più accurata delle attività.
Un'applicazione comune dei load balancer si ha quando si distribuisce un singolo servizio a più utenti. È il caso di server web, server DNS, database e altro ancora. Un load balancer di rete è spesso implementato nei data center per identificare il percorso di rete più efficiente per la comunicazione tra due punti, per ottimizzare l'utilizzo della rete ed evitare congestioni. I load balancer privati bilanciano solo il traffico generato all'interno delle tue reti private, mentre i load balancer pubblici sono destinati a gestire il traffico esterno che vi raggiunge.
I load balancer non si limitano a distribuire le richieste. Un uso importante dei load balancer è quello di evitare i failover. Una risorsa viene costantemente monitorata per verificarne la disponibilità e, non appena il controllo fallisce, il load balancer viene utilizzato per passare a un'altra risorsa, non in failover, garantendo la continuità del servizio.
L'importanza del monitoraggio dei load balancer
Quanto detto sopra rende evidente l'importanza del monitoraggio dei load balancer. A maggior ragione se si considera che tutti i principali servizi cloud utilizzano una forma di bilanciamento del carico per distribuire i carichi di lavoro sui loro sistemi. È assolutamente necessario utilizzare i loro load balancer e sapere se funzionano in modo efficiente.
Il monitoraggio del load balancer può garantire che le applicazioni multiple che dipendono dal load balancer implementato ricevano la quantità di traffico prevista e non siano sovraccaricate di richieste. L'efficienza dell'infrastruttura cloud o ibrida può dipendere dall'efficienza dei load balancer.
Il monitoraggio dei load balancer di rete può anche fornire una panoramica delle tendenze del traffico diretto a un'applicazione. Di solito il monitoraggio viene effettuato dal lato dell'applicazione, ma questo fornisce informazioni solo sulle richieste che hanno raggiunto l'applicazione, non sul totale che è stato strozzato dal load balancer altrove. Il monitoraggio del load balancer può aggiungere una panoramica globale del traffico che va oltre quella ottenibile con il solo monitoraggio dell'applicazione.
Il monitoraggio dei load balancer fornisce un'importante panoramica della scalabilità dell'ambiente; poiché spesso tutto il traffico passa attraverso un load balancer, è facile utilizzare questo dato come indicazione di dove e quando passa il traffico verso le applicazioni e se è il momento di aumentare o diminuire la scala.
Una caratteristica importante dei load balancer di rete è l'offloading SSL. Invece di terminare un certificato SSL su ogni server, questa operazione può essere eseguita centralmente a livello di load balancer, che agisce quindi come distributore di certificati per le richieste esterne. Se implementato, il monitoraggio dei load balancer per la scadenza dei certificati è un compito fondamentale per gli amministratori di rete.
Quali sono i load balancer del cloud e come possono essere monitorati?
L'utilità dei load balancer raggiunge nuovi livelli nei servizi cloud. Grazie alla loro elevata scalabilità e disponibilità, i fornitori di cloud utilizzano molto i load balancer per mantenere efficienti i loro ambienti virtuali. Se la tua infrastruttura è parzialmente o completamente nel cloud, è importante sapere quali load balancer AWS, Azure e GCP, almeno, possono fornire e come possono essere monitorati.
Monitoraggio del load balancer AWS
Il load balancer AWS si chiama Elastic Load Balancing (ELB). Può funzionare come load balancer delle applicazioni, load balancer della rete, load balancer del gateway o load balancer classico che divide il traffico tra le istanze EC2. AWS ELB è accessibile e configurabile tramite CLI, AWS Management Console, SDK specifici per ogni lingua e Query API.
Oltre ai classici tipi di load balancer, AWS ELB può utilizzare un componente aggiuntivo chiamato AWS Load Balancer Controller, in grado di gestire una serie di load balancer per un cluster Kubernetes. Agisce come controllore di più load balancer secondari in un cluster Kubernetes.
Il monitoraggio di AWS ELB viene eseguito in diversi modi. Attraverso le metriche di CloudWatch (il metodo più semplice), attraverso i log degli accessi e di CloudTrail, attraverso il monitoraggio delle richieste HTTP che il load balancer AWS riceve, oppure utilizzando uno strumento di monitoraggio AWS ELB di terze parti. In quest'ultimo caso, il load balancer aggiunge un'intestazione con un identificatore di tracciamento a ogni richiesta che riceve, l'intestazione X-Amzn-Trace-Id, rendendo possibile seguire le richieste dei client ai target o ad altri servizi.
Nel monitoraggio di AWS ELB le metriche di CloudWatch saranno probabilmente quelle più comunemente monitorate. Ogni load balancer AWS pubblica punti di dati su Amazon CloudWatch. A seconda dell'uso che si fa degli ELB, una serie di metriche sarà più importante per l'utente. Alcune delle metriche chiave sono il conteggio delle connessioni attive, il numero di reindirizzamenti HTTP e di risposte fisse (come i controlli sanitari), il totale delle richieste IPv6, le connessioni rifiutate e il numero di codici di errore HTTP 3xx, 4xx e 5xx. Questi dati sono comuni a tutti i load balancer AWS. Poi, a seconda dei tipi di risorse per cui l'ELB sta strozzando il traffico, sono necessarie altre metriche, ad esempio per gli obiettivi Lambda.
Un'altra metrica importante, in particolare per il monitoraggio dell'ELB AWS, è il numero di LCU (unità di capacità del load balancer) utilizzate. Queste metriche sono fondamentali per sapere quanto viene utilizzato ciascun load balancer elastico e per calcolarne i costi. Sia CloudWatch che gli strumenti di monitoraggio AWS ELB di terze parti, come Checkmk, possono tenere traccia di questa metrica.
Monitoraggio del load balancer di Azure
Il servizio cloud Azure ha un proprio set di load balancer. Ce ne sono 4 in totale, a seconda delle risorse desiderate per le quali devono strozzare i carichi di lavoro. Azure Front Door è un load balancer delle applicazioni che bilancia il traffico delle applicazioni web. Traffic Manager è invece un load balancer di rete, per la precisione un load balancer DNS, in grado di distribuire il traffico tra le regioni globali di Azure. Application Gateway è un puro load balancer delle applicazioni. Infine, l'Azure Load Balancer, dal nome generico, fornisce un throttling per i pacchetti UDP e TCP per qualsiasi tipo di risorsa. Questi load balancer possono anche essere combinati e vengono impostati nel portale Azure.
Il monitoraggio dei load balancer sul cloud Azure si effettua tramite Azure Monitor o utilizzando le API. Queste ultime consentono anche a strumenti di terze parti per il monitoraggio dei load balancer Azure di accedere alle metriche necessarie per le loro funzioni di monitoraggio. Le metriche disponibili non sono molte, e le principali sono il conteggio dei pacchetti, il conteggio dei byte, il numero totale di connessioni, lo stato di salute del backend e lo stato medio della sonda di salute del load balancer.
A completamento di queste metriche ci sono i log del load balancer, disponibili nella sezione Attività di Azure Monitor.
Monitoraggio del load balancer GCP
Passando ai load balancer GCP, il servizio cloud di Google offre sia load balancer della rete che load balancer delle applicazioni. Il prodotto in sé si chiama semplicemente Cloud Load Balancing e può essere impostato per agire come load balancer per una rete o a livello di applicazione. La configurazione del load balancer GCP si effettua tramite una CLI, la Google Cloud Console, l'API REST o Terraform. Gli ultimi due sono particolarmente utili quando si utilizza uno strumento di monitoraggio del load balancer di terze parti, come Checkmk.
Nella pratica del monitoraggio, la verifica della salute e dello stato di un load balancer su GCP avviene attraverso l'analisi dei suoi log e delle metriche recuperate. Google Cloud Logging analizza solo i log,
mentre Google Cloud Monitoring visualizza e analizza le metriche.
Tuttavia, Google Cloud Logging può essere integrato in Google Cloud Monitoring, consentendo di avere a disposizione sia i log che le metriche in Google Cloud Monitoring, rendendolo così la scelta predefinita.
Anche gli strumenti di monitoraggio dei load balancer esterni sono in grado di eseguire uno o entrambi i compiti.
Ciò che va monitorato in modo specifico sono le metriche elaborate in modo simile dagli altri principali load balancer che abbiamo visto finora. Il conteggio delle connessioni totali in entrata e in uscita, la latenza, il numero di richieste, le connessioni nuove, chiuse e aperte sono tutti buoni indicatori del buon funzionamento di un load balancer GCP. Insieme ai log è quindi possibile avere una visione abbastanza buona della salute e dell'efficienza del load balancer.
Conclusione
Abbiamo visto come ci sia una manciata di load balancer disponibili su ciascuna delle tre principali piattaforme cloud. In linea di massima si tratta di load balancer di rete, che strozzano il traffico a livello di rete, o di applicazioni, che strozzano il traffico per applicazioni specifiche. Sia su AWS che su Azure e GCP i load balancer possono essere configurati per agire come load balancer di rete o di applicazioni, oltre che per alcuni tipi più specifici.
Il monitoraggio dei load balancer è un aspetto fondamentale per avere un'infrastruttura cloud o ibrida che funzioni sempre alla massima efficienza. Oltre alle dashboard di monitoraggio forniti da ciascuno dei principali fornitori di cloud, Checkmk è in grado di fornire metriche e statistiche aggiuntive di vitale importanza per tutti i tipi di load balancer qui trattati. Checkmk è dotato di numerose funzioni avanzate per aiutare gli amministratori del cloud a personalizzare le loro esigenze di monitoraggio e genera avvisi quando le cose vanno male.
FAQ
Un reverse proxy agisce come faccia pubblica per altre risorse, di solito uno o più server. A differenza di un load balancer, un reverse proxy non limita le richieste in base al carico di lavoro corrente dei server dietro di esso. Un reverse proxy è più utile quando si desidera sicurezza, caching, compressione dei dati e privacy, mentre un load balancer è fondamentale per garantire efficienza, scalabilità e prestazioni.
Un gateway API funge da intermediario tra un client e un server. È un unico punto di ingresso per più servizi, che si occupa di autorizzazione, autenticazione, limitazione della velocità e registrazione per tutti i server dietro di esso. A differenza di un load balancer, un gateway API ha il compito di fornire un accesso sicuro ai servizi di backend, mentre il ruolo di un load balancer è quello di distribuire questo accesso e garantire scalabilità e prestazioni ottimali.