Clustering e bilanciamento del carico
Cosa sono il clustering e il bilanciamento del carico
Il clustering dei server è un metodo per trasformare più server di computer in un cluster, che è un gruppo di server che agisce come un singolo sistema.
Il bilanciamento del carico riguarda la distribuzione di carichi di lavoro su più risorse di elaborazione, come computer, cluster di server, collegamenti di rete, ecc. Il bilanciamento del carico mira a ottimizzare l’utilizzo delle risorse, massimizzare il throughput, ridurre al minimo i tempi di risposta ed evitare il sovraccarico di qualsiasi singola risorsa.
Un set di repliche MongoDB è un gruppo di processi mongod
che mantengono lo stesso set di dati. I set di repliche offrono ridondanza e disponibilità elevata e costituiscono la base per tutte le distribuzioni di produzione.
L’alta disponibilità (HA) è una caratteristica generale di un sistema, che mira a garantire un livello concordato di prestazioni operative, solitamente uptime, per un periodo superiore al normale.
RESTHeart è sempre stato un ottimo adatto per Microservizi e altri stili di architettura distribuita. È stato implementato con successo con tecnologie di clustering come AWS ECS e Fargate, Kubernetes e molti altri.
Come funziona
RESTHeart riceve fondamentalmente richieste HTTP e le trasforma in query MongoDB, attraverso il driver Java. La creazione di un cluster è stata una questione di mettere un semplice bilanciamento del carico HTTP in cima alla tecnologia di clustering scelta, esattamente come si farebbe con qualsiasi altro server HTTP.
RESTHeart è stateless per tutte le funzionalità ma per il gestore token predefinito utilizzato per l’autenticazione token. Questa implementazione fornita con RESTHeart OSS contiene i token in memoria. Di conseguenza, non supporta il clustering.
Quindi un cluster di nodi RESTHeart richiede sessioni appiccicose quando si utilizza l’autenticazione token altrimenti il nodo RESTHeart potrebbe ricevere un token di autenticazione creato da un’altra istanza, che si traduce in un errore HTTP 401 “Non autorizzato”.
Poiché le istanze RESTHeart non comunicano direttamente (per evitare costosi passaggi di sincronizzazione), non possono convalidare i token di autenticazione creati da altre istanze nello stesso cluster. Per superare questa situazione, HTTP Load Balancer inserisce un token di sessione appiccicoso in un cookie e quindi gestisce il flusso di comunicazione dai client alle istanze RESTHeart di conseguenza. Le sessioni appiccicose, da un punto di vista architettonico, introducono un livello di statefulness nel sistema e il loro timeout di scadenza deve essere attentamente sintonizzato.
Funzionalità RESTHeart EE
L’acquisto di una licenza commerciale RESTHeart clustering può essere configurato più facilmente, senza la necessità di sessioni appiccicose. Ciò consente una distribuzione completamente senza stato.
Con la licenza, è possibile ottenere un gestore di token specializzato che crea token firmati crittograficamente che possono essere riconosciuti da qualsiasi nodo RESTHeart nel cluster senza comunicazione diretta e sincronizzazione tra di loro: veloce, semplice e sicuro.
Per ulteriori informazioni, fare riferimento alla pagina della documentazione di Token Manager.
In sintesi, i passaggi di primo livello per una configurazione RESTHeart + MongoDB altamente disponibile sono:
-
Creare un set di repliche MongoDB;
-
Creare un cluster RESTHeart connesso al set di repliche MongoDB;
-
Metti un bilanciamento del carico HTTP sopra di esso.
Se vuoi saperne di più su clustering, bilanciamento del carico e alta disponibilità, contattaci.
Leave a Reply