Mini ITX Cluster Turing Pi 2 con 32 GB di RAM

Mini ITX Cluster Turing Pi 2 con 32 GB di RAM

Saluti alla comunità Habr! Di recente ho scritto della nostra prima versione di cluster board [V1]. E oggi voglio raccontarvi come abbiamo lavorato alla versione Turing V2 con 32 GB memoria ad accesso casuale.

Ci piacciono i mini server che possono essere utilizzati sia per lo sviluppo locale che per l'hosting locale. A differenza dei computer desktop o laptop, i nostri server sono progettati per funzionare 24 ore su 7, 4 giorni su 5, possono essere rapidamente federati, ad esempio, c'erano 16 processori in un cluster e dopo XNUMX minuti c'erano XNUMX processori (nessuna apparecchiatura di rete aggiuntiva) e tutto questo in un fattore di forma compatto silenzioso ed efficiente dal punto di vista energetico.

L'architettura dei nostri server si basa sul principio di costruzione del cluster, ovvero realizziamo schede cluster che, sfruttando la rete ethernet presente sulla scheda, collegano più moduli di calcolo (processori). Per semplificare, non realizziamo ancora i nostri moduli di elaborazione, ma utilizziamo i moduli di elaborazione Raspberry Pi e speravamo davvero nel nuovo modulo CM4. Ma tutto è andato contro i piani con il loro nuovo fattore di forma e penso che molti siano delusi.

Sotto il taglio come siamo passati da V1 a V2 e come dovevamo uscire con il nuovo fattore di forma Raspberry Pi CM4.

Quindi, dopo aver creato un cluster per 7 nodi, le domande sono: cosa c'è dopo? Come aumentare il valore di un prodotto? 8, 10 o 16 nodi? Quali produttori di moduli? Pensando al prodotto nel suo insieme, ci siamo resi conto che la cosa principale qui non è il numero di nodi o chi è il produttore, ma l'essenza stessa dei cluster come elemento costitutivo. Dobbiamo cercare l'elemento costitutivo minimo che

Il primo, sarà un cluster e allo stesso tempo sarà in grado di collegare dischi e schede di espansione. Il blocco cluster dovrebbe essere un nodo base autosufficiente e con un'ampia gamma di opzioni di espansione.

Secondo, in modo che i blocchi di cluster minimi possano essere collegati tra loro costruendo cluster di dimensioni maggiori e in modo che sia efficiente in termini di budget e velocità di scalabilità. La velocità di ridimensionamento deve essere superiore rispetto alla connessione di normali computer a una rete e molto più economica dell'hardware del server.

Il terzo, le unità a grappolo minimo dovrebbero essere sufficientemente compatte, mobili, efficienti dal punto di vista energetico, convenienti e non impegnative per le condizioni operative. Questa è una delle principali differenze rispetto ai server rack e a tutto ciò che è connesso con essi.

Abbiamo iniziato determinando il numero di nodi.

Numero di nodi

Con semplici giudizi logici, ci siamo resi conto che 4 nodi sono l'opzione migliore per il blocco minimo del cluster. 1 nodo non è un cluster, 2 nodi non sono sufficienti (1 master 1 worker, non c'è possibilità di ridimensionamento all'interno di un blocco, specialmente per opzioni eterogenee), 3 nodi sembrano ok, ma non un multiplo di potenze di 2 e ridimensionamento all'interno un blocco è limitato, 6 nodi hanno un prezzo quasi come 7 nodi (dalla nostra esperienza questo è già un prezzo elevato), 8 è molto, non si adatta al fattore di forma mini ITX e una soluzione PoC ancora più costosa.

Quattro nodi per blocco sono considerati la media aurea:

  • meno materiali per pannello cluster, quindi più economico da produrre
  • multiplo di 4, 4 blocchi totali danno 16 processori fisici
  • circuito stabile 1 master e 3 operai
  • varianti più eterogenee, moduli di calcolo generale + calcolo accelerato
  • fattore di forma mini ITX con unità SSD e schede di espansione

Moduli di calcolo

La seconda versione è basata su CM4, pensavamo che sarebbe stata rilasciata nel fattore di forma SODIMM. Ma…
Abbiamo preso la decisione di creare una scheda figlia SODIMM e assemblare CM4 direttamente in moduli in modo che gli utenti non debbano pensare a CM4.

Mini ITX Cluster Turing Pi 2 con 32 GB di RAM
Modulo di calcolo Turing Pi che supporta Raspberry Pi CM4

In generale, alla ricerca di moduli, è stato aperto un intero mercato di moduli informatici da piccoli moduli con 128 MB di RAM a 8 GB di RAM. I moduli con 16 GB di RAM e oltre sono avanti. Per l'hosting di applicazioni edge basato su tecnologie cloud native, 1 GB di RAM non è già sufficiente e la recente comparsa di moduli per 2, 4 e persino 8 GB di RAM offre buoni margini di crescita. Hanno anche preso in considerazione opzioni con moduli FPGA per applicazioni di apprendimento automatico, ma il loro supporto è stato ritardato perché l'ecosistema software non è sviluppato. Studiando il mercato dei moduli, ci è venuta l'idea di creare un'interfaccia universale per i moduli e in V2 iniziamo a unificare l'interfaccia dei moduli informatici. Ciò consentirà ai proprietari della versione V2 di collegare moduli di altri produttori e combinarli per attività specifiche.

V2 supporta l'intera linea Raspberry Pi 4 Compute Module (CM4), comprese le versioni Lite e i moduli RAM da 8 GB

Mini ITX Cluster Turing Pi 2 con 32 GB di RAM

periferia

Dopo aver determinato il fornitore dei moduli e il numero di nodi, ci siamo avvicinati al bus PCI su cui si trovano le periferiche. Il bus PCI è lo standard per le periferiche e si trova in quasi tutti i moduli informatici. Abbiamo diversi nodi e, idealmente, ogni nodo dovrebbe essere in grado di condividere dispositivi PCI in modalità di richiesta simultanea. Ad esempio, se si tratta di un disco connesso al bus, allora è disponibile per tutti i nodi. Abbiamo iniziato a cercare switch PCI con supporto multi-host e abbiamo scoperto che nessuno di essi soddisfaceva i nostri requisiti. Tutte queste soluzioni erano per lo più limitate a 1 host o multi host, ma senza la modalità di richieste simultanee agli endpoint. Il secondo problema è l'alto costo di $ 50 o più per chip. In V2, abbiamo deciso di posticipare gli esperimenti con gli switch PCI (ci torneremo più avanti durante lo sviluppo) e abbiamo seguito il percorso di assegnazione di un ruolo per ciascun nodo: i primi due nodi hanno esposto la porta mini PCI express per nodo, il terzo nodo controller SATA 2 Gbps a 6 porte esposto . Per accedere ai dischi da altri nodi, puoi utilizzare il file system di rete all'interno del cluster. Perché no?

Sbirciata

Abbiamo deciso di condividere alcuni schizzi di come il blocco minimo del cluster si è evoluto nel tempo attraverso la discussione e la riflessione.

Mini ITX Cluster Turing Pi 2 con 32 GB di RAMMini ITX Cluster Turing Pi 2 con 32 GB di RAMMini ITX Cluster Turing Pi 2 con 32 GB di RAM

Di conseguenza, siamo arrivati ​​a un'unità cluster con 4 nodi a 260 pin, 2 porte mini PCIe (Gen 2), 2 porte SATA (Gen 3). La scheda dispone di uno switch gestito di livello 2 con supporto VLAN. Una porta mini PCIe è stata rimossa dal primo nodo, in cui è possibile installare una scheda di rete e ottenere un'altra porta Ethernet o un modem 5G e creare un router per la rete sul cluster e le porte Ethernet dal primo nodo.

Mini ITX Cluster Turing Pi 2 con 32 GB di RAM

Il bus del cluster ha più funzionalità, inclusa la possibilità di eseguire il flashing dei moduli direttamente attraverso tutti gli slot e, naturalmente, i connettori FAN su ciascun nodo con controllo della velocità.

applicazione

Infrastruttura edge per applicazioni e servizi self-hosted

Abbiamo progettato V2 per essere l'elemento base minimo per un'infrastruttura edge di livello consumer/commerciale. Con V2, è economico iniziare la prova di concetto e scalare man mano che si cresce, portando gradualmente le applicazioni che sono più convenienti e pratiche da ospitare on edge. I blocchi di cluster possono essere collegati tra loro per creare cluster più grandi. Questo può essere fatto gradualmente senza molti rischi per stabilirsi
processi. Già oggi esiste un numero enorme di applicazioni per le imprese, che può essere ospitato localmente.

Postazione di lavoro ARM

Con un massimo di 32 GB di RAM per cluster, il primo nodo può essere utilizzato per la versione desktop del sistema operativo (ad esempio, Ubuntu Desktop 20.04 LTS) e i restanti 3 nodi per attività di compilazione, test e debug, sviluppando soluzioni cloud native per ARM cluster. Come nodo per CI/CD su infrastruttura edge ARM nella prod.

Il cluster Turing V2 con moduli CM4 è quasi identico dal punto di vista architettonico (differenza nelle versioni minori di ARMv8) al cluster basato su istanze AWS Graviton. Il processore del modulo CM4 utilizza l'architettura ARMv8 in modo da poter creare immagini e applicazioni per le istanze AWS Graviton 1 e 2, note per essere molto più economiche delle istanze x86.

Fonte: habr.com