Il cluster computing è, letteralmente, la “computazione a grappolo”: un gruppo di computer collegati in rete tra loro che lavorano in parallelo, distribuendo il carico di elaborazione e aumentando la potenza di calcolo.
Indice degli argomenti
Cos’è il cluster computing
Il cluster computing è un’architettura distribuita e centralizzata che consente di risolvere elaborazioni impegnative attraverso la scomposizione del problema in sottoquesiti, che vengono smistati tra i computer della rete: ciascun computer risolve il proprio sotto-quesito in parallelo agli altri.
In ogni cluster generalmente c’è un nodo principale e più nodi “lavoratori”: il nodo principale delega le richieste agli altri nodi.
Ogni nodo del cluster esegue lo stesso sistema operativo: una ridondanza che consente la continuità operativa in caso di guasti o anomalie. Infatti, ciascun nodo è bilanciato rispetto alle richieste della rete: in caso di errore, il traffico dati viene indirizzato automaticamente verso un altro nodo del cluster, che fa procedere l’elaborazione, sia essa l’esecuzione di una applicazione o un compito più complesso.
Il termine “Cluster computing” comprende anche la manutenzione, il monitoraggio e la gestione dell’architettura di elaborazione.
Quali sono le caratteristiche dei computer cluster?
L’architettura di un computer cluster è formata da più macchine computazionali, collegate tra loro in un ambiente di programmazione parallela, da middleware e applicazioni.
Il sistema di gestione e programmazione dei lavori è centralizzato: i computer cluster lavorano come una sola macchina di elaborazione. I server fisici di ogni nodo del cluster condividono unità di storage. I computer cluster possono essere collegati tra loro in diversi modi che supportino l’ampia larghezza di banda e la comunicazione a bassa latenza tra i nodi.
Tra i più comuni, troviamo: Myrinet, protocollo di rete ad alta velocità in fibra ottica; Infiniband, bus di computer ad alta velocità; Gigabit Ethernet, l’implementazione dello standard in rame o fibra che fornisce la velocità di trasferimento dati di un gigabit al secondo e controllo di flusso; SCI – Scalable Coherent Interface, un sistema di memoria condivisa a bassa latenza.
Quanti tipi di cluster esistono?
I cluster possono essere classificati in base alla posizione o alla funzione.
Nel primo caso, si distinguono i cluster a distanza estesa, i cluster metropolitani e i cluster continentali. Il cluster a distanza estesa ha i nodi in data center diversi e a distanza, collegati via cavo ad alta velocità. Il cluster metropolitano prende il nome dall’area geografica in cui è distribuito. Il cluster continentale può estendersi per centinaia o migliaia di chilometri.
Nel secondo caso, si distinguono i fail-over cluster, i load balancing cluster, gli High Performance Computing- HPC cluster e i cluster virtualizzati.
I Fail-over o high availability cluster sono usati per mantenere la continuità operativa e proteggere una o più funzioni sensibili, che vengono monitorate in modo permanente: se, ad esempio, l’applicazione smette di funzionare e il nodo locale non riesce a riavviarla, il software del cluster sposterà il riavvio su un altro nodo. Se il cluster è formato da più di due nodi, si potranno definire diversi livelli di commutazione.
I Load Balancing cluster, o cluster di bilanciamento del carico, verifica che ogni nodo abbia lo stesso carico di lavoro e invia le richieste di elaborazione al nodo meno sovraccarico, quindi con il tempo di risposta più veloce.
Gli High Performance Clustering – HPC sono cluster ad alte prestazioni, usati per aumentare la potenza di calcolo di un pc. La computazione procede in parallelo per sotto-problemi, e non sequenzialmente.
Video: Introduzione agli HPC – ADACS Learning (in inglese)
I cluster virtualizzati sono situati sulle macchine fisiche per aumentarne la flessibilità e la potenza computazionale.
Analogie e differenze tra cluster computing e grid computing
Il grid computing è, letteralmente, la “computazione a rete”: le risorse di molti computer vengono collegate in una rete per risolvere lo stesso problema di computazione in parallelo.
Ma mentre il cluster computing è una rete omogenea, con componenti hardware simili che eseguono lo stesso sistema operativo, il grid computing è una rete eterogenea, con diversi sistemi operativi presenti. Nel grid computing ogni nodo è indipendente, nel cluster computing ogni nodo fa parte di una unità.
Inoltre, la rete del cluster computing è centralizzata, con una pianificazione delle attività controllata da server centralizzati, mentre la rete del grid computing è decentralizzata: ogni nodo gestisce le proprie risorse e possono esistere più server autonomi all’interno della griglia.
Quali sono gli usi e i vantaggi del cluster computing
Il cluster computing viene utilizzato per aumentare le prestazioni computazionali e proteggere dai guasti. È molto meno costoso dei server multiprocessore. La sua architettura di calcolo distribuita via hardware di rete è facilmente scalabile e fa diminuire notevolmente il consumo di tempo computazionale: viceversa, incrementa capacità e velocità di calcolo.
Il cluster computing facilita la gestione delle risorse e abilita il bilanciamento del carico di lavoro delle diverse macchine, riducendo i tempi di latenza nella risposta alle richieste.
La simmetricità dei nodi consente un’alta affidabilità del sistema: la ridondanza funzionale delle diverse macchine garantisce un’alta tolleranza ai guasti e una solida continuità operativa. Infatti, in caso di malfunzionamento di un nodo, i dati possono essere presi in carico da un altro nodo del cluster.
In un cluster, anche la manutenzione del sistema, come la sostituzione di una macchina malfunzionante, è più agevole rispetto a quella dei superprocessori.
Tuttavia, l’hardware di rete, tranne poche eccezioni, non è progettato per l’elaborazione in parallelo: questo frena la potenzialità del cluster computing per molte applicazioni. Per ridurre l’alta latenza, grazie ai progressi dei computer a scheda singola e dell’infrastruttura di rete, il cluster computing viene abbinato all’edge computing.
Esempi di applicazioni e progetti del cluster computing sull’Edge
L’edge computing è, letteralmente, la “computazione ai margini della rete”: per ridurre i tempi di latenza, l’elaborazione dei dati viene svolta direttamente dai dispositivi locali, che hanno al proprio interno microcontrollori o sistemi embedded.
Il cluster computing viene usato per aumentare la robustezza ai guasti e la continuità operativa delle applicazioni edge, migliorandone la manutenzione. Può essere utilizzato per aumentare la potenza di calcolo dell’edge o per ospitare server che elaborino e segnalino i dati dai dispositivi IoT.
Il cluster computing può anche essere usato per portare il machine learning sull’edge: un cluster di GPU può infatti eseguire contemporaneamente i calcoli rapidi necessari per l’apprendimento automatico senza passare dal cloud. Ad esempio, per rilevare in tempo reale le persone nei video dei sistemi di sicurezza.