Il Super Computer Raspberry Pi al Java One 2022
di Chris Bensen
Se preferisci puoi leggere questo post del blog su GitHub qui .
Il Raspberry Pi Super Computer è stato originariamente costruito per Oracle Open World nell'ottobre 2019. Ci sono 1050 Raspberry Pi 3b+ in quattro rack di server configurati in una grande scatola quadrata che ricorda una cabina della polizia britannica resa popolare in una certa serie TV della BBC. Avanti veloce fino ad oggi, e il Raspberry Pi Super Computer (Pi Cluster) è stato inviato ai rifiuti elettronici, alcune parti sono state rimosse e sono rimaste inattive per due anni fino a maggio di quest'anno, quando è arrivato nel mio garage per un revisione completa.
Per una storia temporale di come è nato 1050 Raspberry Pi, puoi leggere A Temporal History of The World's Largest Raspberry Pi Cluster .
Inizia con Gerald Venzl di Oracle Svizzera che porta alla mia attenzione il cluster a 12 nodi, quindi abbiamo fatto un brainstorming su un grande cluster con Stephen Chin. Scopri come il Pi Cluster è andato in e-waste durante i blocchi COVID e gli incendi in California e come Eric Sedlar lo ha salvato, conservandolo infine presso Oracle Labs. Se lo trovi troppo lungo, guarda il video di costruzione originale di The World's Largest Raspberry Pi Cluster di cui siamo a conoscenza , questo Creazione del cluster Raspberry Pi più grande del mondo di Gerald Venzl e questo video di Big Pi Cluster In My Garage - Part I .
E a proposito, se stai leggendo questo, c'è un'alta probabilità che tu sia un grande Luminare. Cos'è un luminare? È il nostro gruppo di sviluppatori lanciato di recente che mette in contatto gli sviluppatori come te con contenuti tecnici esclusivi, gadget gratuiti e una community per aiutarti a creare qualcosa di straordinario come questo cluster, diventa un Luminary oggi stesso .
Risurrezione
Quando è stato annunciato CloudWorld, abbiamo immediatamente proposto di resuscitare il super computer Raspberry Pi più grande del mondo (di cui siamo a conoscenza) . A chi non piace una bella storia di resurrezione? Le proposte sono andate più o meno così:
1. Donalo al Computer History Museum come opera d'arte non funzionale per il Pi-Day.
2. I Raspberry Pi sono preziosi ora. Metti in palio un pezzo del Pi per vincere un Raspberry Pi 3B+ gratuito da uno dei cluster Raspberry Pi più grandi al mondo.
3. Abbiamo un'opportunità per fare la storia. Lo ripariamo per CloudWorld, aggiungiamo ventole in modo che non si surriscaldi e lo eseguiamo come un dispositivo "on-prem" e "edge" che mostra la tecnologia che viene sviluppata nei laboratori. Includeremo GraalPython , Java e Oracle Linux 9 in esecuzione su ogni dispositivo del Pi Cluster. È tutto connesso a Oracle Cloud Infrastructure (OCI) tramite Site-to-Site (scorri verso il basso per le indicazioni su questo)VPN per microservizi on-premise e tramite, istanze di calcolo, database autonomo, gateway di servizi e bilanciamento del carico. Le visualizzazioni AR sarebbero l'ideale e potremmo eseguire qualcosa di interessante su di esso, come quando abbiamo eseguito SETI@home sul Raspberry Pi Mini Super Computer, un cluster 84-Pi. Mi è venuta l'idea di creare un servizio in modo che chiunque nel mondo possa inviare codice al cluster per eseguire un carico di lavoro, mentre mostriamo i nostri servizi Digital Twin AR/VR e creiamo blog e video per ispirare sviluppatori e studenti. Possiamo mostrare alle persone perché sviluppatori e studenti si divertono molto a imparare e utilizzare il piano gratuito di Oracle . Inoltre, possiamo ottenere un Guinness dei primati.
Scegliamo l'opzione tre e inizia la ricerca di un nuovo laboratorio. Ho parlato con la leadership di vari team di prodotto sopra menzionati, nonché con i leader della comunità Raspberry Pi come Jeff Geerling ed Eben Upton, e ho elaborato un piano. Non posso parlarvi dell'intero piano perché ne abbiamo appena gettato le basi, ma c'è molto di più in arrivo. Questa è solo la storia di portare il Pi Cluster a DevNucleus su CloudWorld e una breve menzione di ciò che accade dopo. Si scopre che un giudizio da Guinness Book è davvero costoso!
Il primo passo è stato identificare un budget e una stima del lavoro per vedere se fosse fattibile. Sapevamo di aver bisogno di:
1. Tifosi. Tantissimi fan.
2. Per sostituire eventuali parti mancanti.
3. Per testare tutto.
4. Scrivere un nuovo software.
Ogni rete Pi si avvia. Nel 2019 avevo Oracle Linux 7 in esecuzione sull'intero cluster, ma funzionava ancora? Avevamo tutto il codice sorgente, gli indirizzi MAC e tutto il necessario per rifarlo?
Il secondo passo è stato trovare un posto dove lavorare sul Pi Cluster. Prova a trovare un posto con doppie porte, vicino a un montacarichi, con energia e spazio sufficienti per lavorarci sopra e una rete che non sia ben chiusa: non è facile! Ho esaminato le strutture Oracle in tutto il mondo. La logistica di lavorare su qualcosa di simile in remoto e tutto il lavoro fisico che avrebbe dovuto essere svolto significava che in qualsiasi parte del mondo avrebbe funzionato solo se fossero stati soddisfatti determinati requisiti. Dovrei viaggiare lì, sistemare tutto e avere una dozzina di persone da aiutare. L'avremmo configurato per l'accesso remoto, ma qualcuno doveva essere disponibile di persona quando le cose non funzionavano bene. Dopo un bel pranzo con la mia fantastica moglie, abbiamo deciso che il nostro garage funzionava al meglio, ed è qui che è iniziato #BigPiClusterInMyGarage .
Aggiunta di ventole — Raffreddamento del Raspberry Pi
Una volta consegnato, sono andato a lavorare assicurandomi che il nostro budget fosse accurato, quindi rettificando e testando le cose ordinando parti di ricambio (principalmente ventole). Tanti fan: 250 nuovi fan per la precisione. Il cluster si è concluso con 257 ventole e questo non conta le ventole che si trovano in ciascuno degli switch, del server o degli alimentatori. Ciò ha richiesto che smontassi l'intero cluster e lo rimontassi. Non tutti i bulloni sono stati rimossi, ma tutti i 21 banchi Pi 2U sono stati smontati, ogni 5 Pi rimossi e sostituiti, il che significava che dovevano essere stampati 250 nuovi caddy Pi con staffe per ventole. Puoi saperne di più qui . Victor Agreda ha utilizzato la sua Ultimaker S5 appena acquistata per stampare alcune dozzine della versione fan dei carrelli. Tutti i fan avevano bisogno di energia e molte grazie a Eli Schillingper la creazione di molti dei cablaggi. Inoltre, abbiamo aggiunto alcune uova di Pasqua. So che non è molto simile a un uovo di Pasqua se lo racconto al mondo, ma lo spiegherò più dettagliatamente nella sezione Warble di seguito (perché è troppo bello per non dire nulla). Ho alcuni video che documentano alcuni dei lavori che possono essere trovati in A Temporal History of The World's Largest Raspberry Pi Cluster .
Sistema operativo: il sistema operativo più intelligente in circolazione
Penso che molti di noi sottovalutino il valore di un buon sistema operativo durante la creazione di infrastrutture e hardware, e Oracle Linux è di prim'ordine. Vado più in dettaglio sul sistema operativo in A Temporal History of The World's Largest Raspberry Pi Cluster (e ho altre cose su cui sto lavorando in modo da poter configurare l'avvio di rete Pi a casa).Poiché avevamo tutto quel lavoro su cui basarci, abbiamo dovuto eseguire l'aggiornamento da Oracle Linux 7 a Oracle Linux 9. Ti dirò un segreto: non è stato così semplice. Tuttavia, è stato fantastico lavorare con il team di Oracle Linux e merita davvero tutto il merito per aver configurato il sistema operativo per il Pi Cluster. Dai un'occhiata a Oracle Linux 9, vale la pena usarlo o aggiornarlo. Ci sono stati alcuni intoppi, come il livello di sicurezza aggiunto che significava che l'account root non aveva più accesso SSH per impostazione predefinita.
Vale la pena menzionare qui come avviamo il Pi. Ogni Pi nel cluster si avvia in rete da un singolo montaggio NFS di sola lettura sul server e abbiamo aggiunto un servizio systemd per eseguire uno script bash ogni volta che il server o il Pi si avviano. Questo rende la configurazione di ciò che eseguiamo quasi senza sforzo.
Software e servizi cloud: GraalVM funziona rapidamente sul client o nel cloud
Tutto il software è open source e può essere trovato qui nel nostro repository DevRel GitHub. Ci sono alcune cose che provengono dai laboratori e non sono disponibili nemmeno come anteprima tecnica (ho provato, semplicemente non erano pronte) , quindi quelle non sono incluse. Attenzione, la maggior parte di quel codice è stata scritta rapidamente. Quello che trovi potrebbe non avere molto senso, quindi lasciami spiegare.
Innanzitutto, c'è il software sul cluster. Il server esegue un contenitore Docker composto da GraalPython su GraalVM . Quel Dockerfile è in fase di miglioramento continuo, quindi non consiglio ancora di copiarlo. Ho fornito alcune segnalazioni di bug, ma non appena le variabili d'ambiente Graal e CTRL+C funzioneranno (e forse verrà creata una nuova immagine per GraalPython) vorrai tuffarti subito. Nel frattempo, sappi che questo è un modo di facendolo. Ho visto un aumento delle prestazioni di circa 8 volte durante l'esecuzione di puro codice Python in GraalVM . È piuttosto impressionante!
Ogni dispositivo nel cluster esegue un servizio web. Il server trasmette un messaggio UDP con il suo indirizzo IP e la sua porta affinché qualsiasi dispositivo possa ascoltarlo e comunica con il server per il rilevamento automatico. Questa è una novità rispetto agli anni precedenti in cui l'indirizzo IP del server è stato inserito in una variabile di ambiente. L'indirizzo IP non cambia, quindi abbiamo potuto codificarlo, ma c'erano due problemi: chiunque ci lavorasse deve eseguire un sistema di test con il proprio desktop e una simulazione di un Pi o di un paio di Pi sulla propria scrivania, e il le variabili di ambiente vengono perse una volta sudo. Questo in realtà risolve molti problemi! Una volta che un Pi si avvia, esegue il suo server Web, ascolta il messaggio UDP, registra il suo indirizzo IP e l'indirizzo MAC con il server e ascolta il lavoro. Ad intervalli,
Ogni cinque secondi ogni Pi invia tutti i suoi dati (CPU, memoria, temperatura, ecc.) a un endpoint REST su un database autonomo tramite il supporto ORDS nativo. La documentazione può essere trovata qui . Ho inserito del codice in cui se il Pi non riesce a inviare i propri dati, attende un po' di più la volta successiva, scalando fino a 60 secondi. Risulta essere una montagna di dati che Autonomous Database gestisce senza sforzo. Ho provato alcuni altri database che non devono essere nominati e diciamo solo che non sono stati in grado di gestirlo, a volte con conseguenti ritardi superiori a cinque secondi.
Digital Twin con AR/VR — Visualizza i tuoi dati
Ho creato un modello 3D abbastanza dettagliato del Pi Cluster che può essere trovato qui e aperto nel tuo programma 3D preferito. I nostri esperti di AR/VR e cloud Wojciech Pluta , Victor Martin , Bogdan Farca e Stuart Coggins si sono messi al lavoro per creare esperienze AR e VR straordinarie. Hanno ottimizzato i database, scritto app APEX ed eseguito socket.io per lo streaming. Hanno sfruttato un cluster Kubernettes chiamato OCI OKEcosì le esperienze 3D possono scalare senza cadere, il che significa che chiunque può mettere un Digital Twin del Pi Cluster nel proprio salotto. Abbiamo iPad per AR e codici QR stampati in modo che l'iPad possa tracciare il cluster con precisione millimetrica, consentendo ai partecipanti di visualizzare in modo interattivo ciò che accade nel cluster. Il team ha anche realizzato una versione Meta VR, i cui dettagli saranno presto svelati. Non c'era abbastanza energia per eseguire l'intero cluster nel mio garage, quindi lo integreremo e lo testeremo prima che si aprano le porte a CloudWorld. Potrebbe funzionare, potrebbe cadere. Qualunque cosa accada, sarà una bella storia! Aggiungerò un link qui quando avremo scritto qualcosa su AR/VR Digital Twin.
Servizi OCI: al centro di ogni progetto c'è l'infrastruttura cloud
Nel mio garage, il Pi Cluster è configurato come un server "on prem". Ho creato una sottorete isolata sulla mia Ubiquity Dream Machine Pro, ho configurato una VPN da sito a sito su OCI utilizzando un Bastion e ho utilizzato un jump box locale con due interfacce di rete (una per la sottorete Pi Cluster e una per Pi Cluster ) . Pertanto, il Pi Cluster appare al mondo esterno come un indirizzo IP. Fatti vivo, collega l'alimentazione di rete e sei a posto. Vorrei che l'installazione fosse così semplice e non dovessi testare tutto, assicurandomi che i cavi non rimbalzassero fuori posizione, ma diciamo solo che è così facile perché suona più divertente.
Non avremo il controllo della rete su CloudWorld, quindi il Pi Cluster è un "dispositivo perimetrale". Utilizza servizi cloud come Services Gateway , Load Balancer e Domain Management . Sì, abbiamo un dominio. Ne parlerò nella prossima sezione.
La rete si presenta così:
Se hai domande su questo, vai al canale Slack pubblico di Oracle per gli sviluppatori. Fai qualsiasi domanda tu voglia. Come configurarlo, quali servizi utilizzare. Lì troverai le tue risposte!
IoT: attività leggere specifiche con microcontrollori piccoli ed economici
Abbiamo anche un paio di Arduino in esecuzione sul cluster. Il primo Arduino è un Arduino Mega con un HAT Ethernet. Il codice originale può essere trovato qui . Esegue un servizio Web e attiva due solenoidi per l'accesso remoto al ripristino fisico e ai pulsanti di accensione sul server. Ho cambiato un po' il software rispetto al repository e non l'ho ancora pubblicato, quindi ho lasciato questa versione precedente. La versione che non ho pubblicato si registra da sola e attende un semplice comando di avvio quando uno sviluppatore accede tramite SSH a Bastion.
Il secondo Arduino è lo stesso hardware ma esegue un server REST in ascolto per un payload JSON ed è connesso a una dozzina di NeoPixel nella luce in cima alla scatola della polizia.
Warble: un linguaggio di programmazione personalizzato progettato per il cluster Pi
Stiamo ospitando il dominiohttps://warble.withoracle.cloudsu OCI, supportato da Domain Management , Load Balancer e Compute Instance . L'istanza di calcolo esegue lo stesso software in esecuzione sul cluster Pi: un contenitore Docker con GraalPython e un servizio web. Non è ancora pronto per la prima serata, ma torna qui o su Twitter dal 18 al 20 ottobre perché sarà live durante CloudWorld e penso che sarà molto divertente.
Abbiamo creato un linguaggio di programmazione progettato per Twitter da eseguire sul Pi Cluster chiamato Warble . Warble non è un linguaggio di programmazione completo e ho preso molte scorciatoie. È fatto per utilizzare il minor numero di caratteri possibile in modo da poter pubblicare un Warble su Twitter e farlo funzionare sul Pi Cluster. Ho uno script Python in esecuzione su un'istanza di computer che utilizza l'API di Twitter per cercare l'hashtag #pi . Se il carattere successivo è una parentesi graffa aperta e l'ultimo carattere è una parentesi graffa chiusa, allora abbiamo un Warble ed è memorizzato in un database. Per esempio:
> #pi{PRINT(“hello cluster”)}
< hello cluster
Non sarebbe bello vedere chi può calcolare Pi con il maggior numero di cifre su uno dei cluster Raspberry Pi più grandi del mondo?
> #pi{PRINT(2*ROUND(ACOS(0.0),3))}
< 3.142
Twitter sarà molto divertente, anche se limita l'API ed è per questo che abbiamo il dominio ospitato. Fornirò un endpoint REST per pubblicare Warbles. Forse qualcuno capirà come calcolare Pi con Bailey–Borwein–Plouffe_formula usando Warble o in qualche altro modo.
Non scriverò una grammatica sintattica ma fornirò alcuni esempi.
Warble supporta le variabili:
> #pi{x=0PRINT(x)}
< 0
> #pi{x=1/16.0²*(4.0/(8*k+1)-2.0/(8*k+4)-1.0/(8*k+5)-1.0/(8*k+6)}
<
> #pi{i=0;WHILE(i<10){PRINT(i);i++}}
< 0
< 1
< 2
< 3
< 4
< 5
< 6
< 7
< 8
< 9
> #pi{FOR(i=0;i<10;i++){PRINT(i)}}
< 0
< 1
< 2
< 3
< 4
< 5
< 6
< 7
< 8
< 9
Inoltre, puoi salvare i valori e caricarli di nuovo. Sono specifici dell'utente:
> #pi{SAVE(“pi”,1)}
<
> #pi{x=LOAD(“pi”);x++;SAVE(“pi”,x);PRINT(x)}
< 2
> #pi{PLAYSOUND(”http://downloads.bbc.co.uk/doctorwho/sounds/tardis.mp3");}
<
> #pi{LIGHTS(0,255,0,0)}
<
> #pi{LIGHTS(23,0,255,0)}
<
> #pi{LIGHTS(0,0,255,0);SLEEP(20);LIGHTS(0,0,255,0)}
<
> #pi{FOR(i=0;i<24;i++){LIGHTS(i,0,255,0)}SLEEP(20);FOR(i=0;i<24;i++){LIGHTS(i,0,0,255)}}
<
Sulla Ubiquity Dream Machine Pro, con l'aiuto di Tim Clegg , ho creato una nuova sottorete. Ecco uno schema dei passaggi che abbiamo seguito. Non fornirò schermate specifiche o un video perché le opzioni su Ubiquity e Oracle Cloud cambieranno. Invece, ecco alcuni punti salienti di ciò di cui hai bisogno e cosa fare:
Sotto reti crea una nuova rete con un nome, scelgo "pi".
ID VLAN: 3
Tipo di rete: Standard
Crea una VPN da sito a sito
Nome rete: pivpn Chiave
precondivisa: ***********************
Indirizzo server: <Indirizzo IP del router> ( l'impostazione predefinita dovrebbe andare bene)
Gateway remoto/Sottoreti: 10.0.0.0/24
Indirizzo IP remoto: <Indirizzo IP della VPN remota>
Avanzato: Manuale
Profilo IPsec:
Percorso personalizzato Distanza: 30
Versione scambio chiavi: IKEv1
Crittografia: AES-256
Hash: SHA1
Gruppo IKE DH: 5 Gruppo
ESP DH: 5
Perfect Forward Secrecy: abilitato
Dynamic Routing: abilitato
Ho creato tre regole firewall:
1. blocco pi greco 192.168.3.1 (gateway)
Tipo: LAN Local
Action: Drop
Source, Source Type: Network
Source, Network: pi
Destination, Source Type: Network
Destination, Network: pi
Destination, Network Type: Gateway IP Address
2. L'impostazione predefinita accetta su pi greco
Tipo: LAN In
azione: Accetta
sorgente, Tipo di sorgente: Sorgente di rete, Rete: Destinazione
predefinita , Tipo di sorgente: Destinazione di rete, Rete: pi
3. Blocco pi su Predefinito
Tipo: LAN Out
Azione: Elimina
origine, Tipo di origine:
Destinazione di rete, Rete: Destinazione pi
, Tipo di origine:
Origine di rete, Rete: Predefinito
Avanzato: Manuale
Verifica stato corrispondenza Nuovo
Verifica stato corrispondenza non valido
4. In OCI vai a Rete e VPN da sito a sito
Crea connessione IPSec.
Dagli un nome.
Lo vorrai per ottenere il tuo indirizzo IP pubblico.
dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com
Dovrai creare due tunnel, quindi ho configurato entrambi in modo che puntino alla stessa VPN poiché OCI ne richiede due e ne ho esposto solo uno sulla mia rete. Lo aggiungerai alla VPN.
5. Configura un gateway di routing dinamico
6. Configura una VCN, aggiungi una regola di ingresso con il CIDR che è la tua sottorete locale, ad esempio la mia è 192.168.3.0/24.
Il futuro
Dopo aver provato DevNucleus presso Oracle CloudWorld, il Pi Cluster si sta dirigendo verso Oracle Labs dove... beh, la parte successiva è un po' un segreto per ora. Gli usi potenziali includono:
1. esecuzione di test aggiuntivi per GraalVM e Java
2. progetti di edge computing
3. robot e elaborazione parallela (ovvero reti neurali)
5. attività suggerite da te, lo sviluppatore
Con il Pi Day 2023 proprio dietro l'angolo, vorrai sicuramente rimanere sintonizzato per la prossima fase di evoluzione di questo incredibile pezzo di tecnologia. Chissà? Alcuni dei Pi potrebbero persino uscire dal cluster e finire nelle tue mani.
Voglio ringraziare tutti coloro che hanno contribuito al progetto. Leggi A Temporal History of The World's Largest Raspberry Pi Cluster per sapere come è nato questo fantastico progetto.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































