Cluster CycleCloud
In CycleCloud il termine cluster viene usato per descrivere un gruppo di computer connessi (nodi) che interagiscono come un singolo sistema. I cluster possono essere annidati; Ad esempio, un cluster di calcolo costituito da un nodo head dell'utilità di pianificazione del motore griglia e nodi di calcolo può montare un cluster BeeGFS costituito da diversi server di archiviazione e metadati, con cluster di calcolo e archiviazione che si uniscino in un singolo cluster HPC padre o in un sistema.
I cluster comprendono fondamentalmente nodi, ognuno dei quali svolge un ruolo specifico nel sistema HPC. I termini node e VM vengono usati in modo intercambiabile occasionalmente, ma sono semanticamente separati in CycleCloud. I nodi che costituiscono un cluster sono essenzialmente macchine virtuali in Azure che hanno completato il processo di preparazione e configurazione. In altre parole, viene effettuato il provisioning delle macchine virtuali dai livelli di servizio dell'infrastruttura di Azure e i relativi stati finali sono nodi di un cluster HPC dopo aver eseguito i passaggi di installazione e configurazione del software.
Esistono due incarnazioni separate dei nodi in CycleCloud. Il primo come nodo autonomo e il secondo come nodearray, che è una raccolta di nodi configurati in modo identico (la distinzione node vs nodearray segue l'analogia DevOps Pets vs Cattle nello spirito). In generale, ma non esclusivamente, i nodi autonomi vengono costruiti da singole macchine virtuali in Azure, mentre gli oggetti nodearray eseguono il mapping ai set di scalabilità di macchine virtuali.
Esistono tuttavia differenze cruciali tra nodearrays e set di scalabilità di macchine virtuali, quello principale è che un singolo nodearray può essere costituito da più set di scalabilità di macchine virtuali. In questo modo, un singolo nodearray può essere compilato da macchine virtuali di dimensioni diverse o addirittura da famiglie di macchine virtuali diverse, con l'unico vincolo che tutti i nodi in un nodearray eseguono lo stesso ruolo nel cluster, ad esempio fornendo risorse a una singola coda di un'utilità di pianificazione.
La topologia, o il modo in cui i nodi sono organizzati in un cluster CycleCloud, sono definiti in modelli di testo che definiscono le relazioni tra i nodi di un cluster e, nel caso di cluster annidati, la relazione padre-figlio dei cluster. I modelli forniscono anche i mezzi per definire il ruolo svolto da ogni nodo.
I modelli di cluster sono definiti in un formato INI. Le sezioni, delineate usando parentesi quadre [
,]
vengono usate per definire cluster, nodi e nodearray. L'elemento di base dei file INI sono asserzioni coppie chiave-valore che forniscono i dettagli di configurazione di ogni sezione. Questi dettagli di configurazione forniscono informazioni contestuali usate per creare ogni nodo di un cluster, dall'immagine della macchina virtuale usata per avviare la macchina virtuale nella subnet in cui deve essere effettuato il provisioning della macchina virtuale.
Altre informazioni sui modelli di cluster CycleCloud
CycleCloud effettua il provisioning delle macchine virtuali dalle immagini di macchina virtuale di base definite nel modello di cluster e tramite una serie di passaggi gestiti dall'agente CycleCloud (Jetpack) durante il processo di avvio, inizializza e configura il sistema operativo nella macchina virtuale per convertirlo in un nodo HPC funzionante. Questi passaggi variano da script a installare e configurare il software di pianificazione, fino alla configurazione dell'ultimo miglio per il montaggio di un file system.
Definita nella sezione di configurazione di ogni nodo sono specifiche di cluster-init , specifiche fornite a ogni macchina virtuale di avvio usata per prepararla per un ruolo specifico nel cluster. CycleCloud usa Chef come piattaforma di automazione dell'infrastruttura per la preparazione e la configurazione di ogni nodo. In sostanza, ogni specifica cluster-init è mappata a uno di più ruoli Chef e/o ricette cookbook che devono essere eseguite nella macchina virtuale di avvio.
CycleCloud usa Chef in modalità autonoma che non si basa su un server Chef centralizzato. Al contrario, l'intero set di cookbook Chef necessari per preparare ogni macchina virtuale viene scaricato da un account di archiviazione di Azure appartenente all'utente durante la fase di avvio della macchina virtuale. Questo set di cookbook viene memorizzato nella cache dal server applicazioni CycleCloud nell'account di archiviazione durante la fase di creazione del cluster.
Dopo aver scaricato questi cookbook, Chef elabora l'elenco di ricette definite nelle specifiche cluster-init del nodo, attivando una fase di preparazione e configurazione che converte la macchina virtuale in un nodo HPC funzionante.
Le specifiche vengono create come raccolte logiche denominate Projects. Ad esempio, un progetto per un'utilità di pianificazione batch, ad esempio Slurm, è costituito da almeno due specifiche: una per i nodi head dell'utilità di pianificazione e l'altra per i nodi di calcolo. Altre informazioni sui progetti CycleCloud
A seconda dell'utilità di pianificazione e dei servizi usati in un cluster, CycleCloud a volte deve orchestrare la fase di preparazione dei nodi in un cluster tramite il coordinamento di nodi diversi. Ad esempio, alcune utilità di pianificazione richiedono che ogni nodo di calcolo si registri nel daemon dell'utilità di pianificazione, che non solo richiede che i nodi di calcolo siano consapevoli dell'indirizzo del nodo head, ma sono anche in grado di riconoscere che il nodo head è completamente preparato e attendere se non lo è.
Questo elemento dell'individuazione dei servizi viene usato anche per le relazioni server-client del file system ed è una funzionalità in CycleCloud.