Cosa sono i cluster

Cosa sono i cluster

Novembre 10, 2021 Servizi 0
cosa sono i cluster

I cluster computing, hanno visto un aumento sostanziale dell’adozione nell’ultimo decennio.

Dalle startup alle big corporations, le architetture basate sul clustering sono sempre più utilizzate per distribuire e gestire le applicazioni nel cloud.

Che cos’è un cluster?

Un cluster computing (o cluster di computer) è un gruppo di due o più computer (nodi) che funzionano in parallelo per raggiungere un obiettivo comune.

Ciò consente di distribuire i carichi di lavoro costituiti da un numero elevato di attività individuali e parallelizzabili tra i nodi del cluster.

Di conseguenza queste possono sfruttare la memoria combinata e la potenza di elaborazione di ciascun computer per aumentare le prestazioni complessive.

Come creare un clustering

Per costruire un computer cluster, i singoli nodi devono essere collegati in rete per consentire la comunicazione internodo.

Il software del cluster di computer può quindi essere utilizzato per unire i nodi.

Può avere un dispositivo di archiviazione condiviso e/o un archivio locale su ciascun nodo.

In genere, almeno un nodo è designato come nodo leader e funge da punto di ingresso al cluster.

Il nodo leader può essere responsabile della delega del lavoro in entrata agli altri nodi e, se necessario, dell’aggregazione dei risultati e della restituzione di una risposta all’utente.

Idealmente, un cluster funziona come se fosse un unico sistema.

Tipi di cluster computing

I cluster di computer possono essere generalmente classificati in tre tipi:

  1. Elevata disponibilità o failover
  2. Bilancio del carico
  3. Elaborazione ad alte prestazioni

e può identificarsi contemporaneamente in più tipi.

Ad esempio, è probabile che uno che ospita un server Web sia ad alta disponibilità e con bilanciamento del carico.

Quali sono i vantaggi chiave del cluster computing

Disponibilità: l’accessibilità di un sistema o servizio in un periodo di tempo, solitamente espressa come percentuale di disponibilità durante un determinato anno (ad es. disponibilità del 99,999% o cinque 9)

Resilienza: quanto bene un sistema si riprende da un guasto

Tolleranza ai guasti: la capacità di un sistema di continuare a fornire un servizio in caso di guasto

Affidabilità: la probabilità che un sistema funzioni come previsto

Ridondanza: duplicazione di risorse critiche per migliorare l’affidabilità del sistema

Configurazioni

Un’applicazione in esecuzione su una singola macchina ha un singolo punto di errore, il che rende scarsa l’affidabilità del sistema.

Se la macchina che ospita l’applicazione si arresta, si verificheranno quasi sempre tempi di inattività durante il ripristino dell’infrastruttura.

Il mantenimento di un livello di ridondanza, che contribuisce a migliorare l’affidabilità, può ridurre la quantità di tempo in cui un’applicazione non è disponibile.

Ciò può essere ottenuto eseguendo preventivamente l’applicazione su un secondo sistema (che potrebbe ricevere o meno traffico) o avendo un cold system (non attualmente in esecuzione) preconfigurato con l’applicazione.

Queste configurazioni sono rispettivamente note come configurazioni attivo-attivo e attivo-passivo.

Quando viene rilevato un errore, un sistema attivo-attivo può eseguire immediatamente il fail-over sulla seconda macchina, mentre un sistema attivo-passivo eseguirà il failover una volta che la seconda macchina sarà attiva.

Cluster ad alta disponibilità

I cluster di computer sono costituiti da più nodi che eseguono lo stesso processo contemporaneamente e sono quindi sistemi attivi-attivi.

I sistemi attivo-attivo sono generalmente tolleranti ai guasti perché il sistema è intrinsecamente progettato per gestire la perdita di un nodo.

Se un nodo si guasta, i nodi rimanenti sono pronti per assorbire il carico di lavoro del nodo guasto.

Detto questo, un cluster che richiede un nodo leader dovrebbe eseguire un minimo di due nodi leader in una configurazione attivo-attivo.

Ciò può impedire che il cluster diventi non disponibile in caso di guasto di un nodo leader.

L’utilizzo di un cluster può migliorare la resilienza e la tolleranza agli errori del sistema, consentendo una maggiore disponibilità.

I cluster con queste caratteristiche sono chiamati cluster “ad alta disponibilità” o “fail-over”.

Cluster Bilanciamento del carico

Il bilanciamento del carico è l’atto di distribuire il traffico tra i vari nodi per ottimizzare le prestazioni ed evitare che ogni singolo nodo riceva una quantità sproporzionata di lavoro.

È possibile installare un servizio di bilanciamento del carico sui nodi leader o eseguirne il provisioning separatamente dal cluster.

Il servizio di bilanciamento del carico è in grado di rilevare se un nodo è guasto e, in tal caso, indirizzerà il traffico in entrata agli altri nodi.

Questa configurazione è spesso contemporaneamente un cluster ad alta disponibilità.

Cluster ad alte Prestazioni

Quando si tratta di parallelizzazione, i cluster possono raggiungere livelli di prestazioni più elevati rispetto a una singola macchina.

Questo perché non sono limitati da un certo numero di core del processore o altro hardware.

Inoltre, il ridimensionamento orizzontale può massimizzare le prestazioni impedendo al sistema di esaurire le risorse.

I cluster “High Performance Computing” (HPC) sfruttano la parallelizzabilità dei cluster di computer per raggiungere il livello di prestazioni più elevato possibile.

Cluster nel cloud

Prima del cloud pubblico, i cluster di computer erano costituiti da un insieme di macchine fisiche che comunicavano tramite una rete locale.

La creazione di un cluster di computer ha comportato una pianificazione attenta per garantire che soddisfi i requisiti presenti e futuri, poiché il ridimensionamento fisico potrebbe richiedere settimane o addirittura mesi.

Inoltre, quelli in loco o autogestiti non erano resilienti in caso di disastri regionali, quindi dovevano essere in atto altre misure di sicurezza per garantire la ridondanza.

In poche parole si tratta quindi di un gruppo di nodi ospitati su macchine virtuali e connessi all’interno di un cloud privato virtuale.

L’utilizzo del cloud consente di ridurre notevolmente il tempo e lo sforzo necessari per essere operativi, fornendo anche un lungo elenco di servizi per migliorare la disponibilità, la sicurezza e la manutenibilità.

Container e relazione con i cluster

I container hanno eliminato molti degli oneri legati alla distribuzione delle applicazioni.

Le differenze tra ambienti locali e remoti possono essere in gran parte ignorate (con alcune eccezioni, come l’architettura della CPU), le dipendenze dell’applicazione vengono fornite all’interno del contenitore e la sicurezza viene migliorata isolando l’applicazione dall’host.

L’uso dei contenitori ha inoltre reso più semplice per i team sfruttare un’architettura di microservizi, in cui l’applicazione è suddivisa in servizi piccoli e ad accoppiamento libero.

La distribuzione di applicazioni containerizzate tra i nodi può migliorare sostanzialmente la disponibilità, la scalabilità e le prestazioni della tua applicazione web.

L’esecuzione di più contenitori per nodo aumenta l’utilizzo delle risorse e garantire che un’istanza di ogni contenitore sia in esecuzione su più di un nodo alla volta impedisce all’applicazione di avere un singolo punto di errore.

Tuttavia, questo porta a un altro problema: la gestione dei contenitori.

La gestione dei contenitori in un cluster di dieci nodi può essere noiosa, ma cosa fare quando raggiunge i cento, o anche i mille nodi?

Per fortuna, esistono numerosi sistemi di orchestrazione dei container, come Kubernetes, che possono aiutare la scalabilità della tua applicazione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *