Le super ordinateur Raspberry Pi à Java One 2022
par Chris Bensen
Si vous préférez, vous pouvez lire cet article de blog sur GitHub ici .
Le Raspberry Pi Super Computer a été construit à l'origine pour Oracle Open World en octobre 2019. Il y a 1050 Raspberry Pi 3b+ dans quatre racks de serveurs configurés dans une grande boîte carrée rappelant une boîte de police britannique popularisée dans une certaine série télévisée de la BBC. Avance rapide jusqu'à aujourd'hui, et le Raspberry Pi Super Computer (Pi Cluster) a été envoyé aux déchets électroniques, certaines pièces en ont été retirées et sont restées inactives pendant deux ans jusqu'en mai de cette année, lorsqu'elles ont trouvé leur chemin vers mon garage pour un refonte complète.
Pour une histoire temporelle de la naissance de 1050 Raspberry Pi, vous pouvez lire A Temporal History of The World's Largest Raspberry Pi Cluster .
Cela commence par Gerald Venzl d'Oracle Suisse qui a attiré mon attention sur le cluster à 12 nœuds, puis nous avons réfléchi à un grand cluster avec Stephen Chin. Découvrez comment le cluster Pi est allé aux déchets électroniques pendant les verrouillages COVID et les incendies en Californie et comment Eric Sedlar l'a sauvé, le stockant finalement à Oracle Labs. Si vous trouvez cela trop long, regardez la vidéo de construction originale de The World's Largest Raspberry Pi Cluster que nous connaissons , ce Building the world's plus grand Raspberry Pi cluster par Gerald Venzl, et cette vidéo du Big Pi Cluster In My Garage — Part I .
Et au fait, si vous lisez ceci, il y a de fortes chances que vous soyez un grand luminaire. Qu'est-ce qu'un luminaire ? C'est notre groupe de développeurs récemment lancé qui connecte les développeurs comme vous à un contenu technique exclusif, à du swag gratuit et à une communauté pour vous aider à créer quelque chose d'aussi cool que ce cluster, devenez un Luminary aujourd'hui .
Résurrection
Lorsque CloudWorld a été annoncé, nous avons immédiatement proposé de ressusciter le plus grand super ordinateur Raspberry Pi au monde (que nous connaissons) . Qui n'aime pas une bonne histoire de résurrection ? Les propositions ressemblaient à ceci :
1. Faites-en don au Computer History Museum en tant qu'œuvre d'art non fonctionnelle pour Pi-Day.
2. Les Raspberry Pi sont précieux maintenant. Tirez au sort un morceau du Pi pour gagner un Raspberry Pi 3B + gratuit de l'un des plus grands clusters Raspberry Pi au monde.
3. Nous avons une occasion d'entrer dans l'histoire. Nous le réparons pour CloudWorld, ajoutons des ventilateurs pour qu'il ne surchauffe pas et l'exécutons comme un appareil « sur site » et « de pointe » montrant la technologie en cours de construction dans les laboratoires. Nous inclurons GraalPython , Java et Oracle Linux 9 exécutés sur chaque appareil du cluster Pi. Tout est connecté à Oracle Cloud Infrastructure (OCI) via Site-to-Site (faites défiler vers le bas pour obtenir des instructions à ce sujet)VPN pour sur site et via des micro-services, des instances de calcul, une base de données autonome, une passerelle de services et un équilibreur de charge. Les visualisations AR seraient idéales, et nous pourrions exécuter quelque chose de cool dessus – comme lorsque nous avons exécuté SETI @ home sur le Raspberry Pi Mini Super Computer, un cluster 84-Pi. J'ai eu l'idée de mettre en place un service afin que n'importe qui dans le monde puisse envoyer du code au cluster pour exécuter une charge de travail, alors que nous montrons nos services Digital Twin AR/VR et créons des blogs et des vidéos pour inspirer les développeurs et les étudiants. Nous pouvons montrer aux gens pourquoi les développeurs et les étudiants s'amusent beaucoup à apprendre et à utiliser l'offre gratuite d'Oracle . De plus, nous pouvons obtenir un record du monde Guinness Book.
Nous avons choisi la troisième option et la recherche d'un nouveau laboratoire a commencé. J'ai parlé avec la direction de diverses équipes de produits mentionnées ci-dessus, ainsi qu'avec des leaders de la communauté Raspberry Pi comme Jeff Geerling et Eben Upton, et j'ai élaboré un plan. Je ne peux pas vous parler de tout le plan parce que nous venons d'en poser les bases, mais il y a beaucoup plus à venir. Il s'agit simplement de l'histoire de l'obtention du cluster Pi vers DevNucleus chez CloudWorld et d'une brève mention de ce qui se passe après. Il s'avère qu'une adjudication du Guinness Book coûte vraiment cher !
La première étape a été d'identifier un budget et une estimation des travaux pour voir si c'était faisable. Nous savions qu'il nous fallait :
1. Ventilateurs. Beaucoup de fans.
2. Pour remplacer les pièces manquantes.
3. Pour tout tester.
4. Pour écrire de nouveaux logiciels.
Chaque réseau Pi démarre. En 2019, j'avais Oracle Linux 7 en cours d'exécution sur l'ensemble du cluster, mais cela fonctionnait-il toujours ? Avons-nous tout le code source, les adresses MAC et tout le nécessaire pour recommencer ?
La deuxième étape consistait à trouver un lieu de travail sur le cluster Pi. Essayez de trouver un endroit avec des doubles portes, à proximité d'un monte-charge, avec suffisamment de puissance et d'espace pour y travailler, et un réseau qui n'est pas bien verrouillé — pas facile ! J'ai regardé les installations d'Oracle dans le monde entier. La logistique de travailler sur quelque chose comme ça à distance et tout le travail physique qui devrait y être consacré signifiait que n'importe où dans le monde ne fonctionnerait que si certaines exigences étaient remplies. Il faudrait que je m'y rende, que je mette tout en place et que j'aie une douzaine de personnes pour m'aider. Nous le configurions pour un accès à distance, mais quelqu'un devait être disponible en personne lorsque les choses ne fonctionnaient pas correctement. Après un bon déjeuner avec ma merveilleuse épouse, nous avons décidé que notre garage fonctionnait le mieux, et c'est là que #BigPiClusterInMyGarage a commencé.
Ajout de ventilateurs - Refroidissement du Raspberry Pi
Une fois qu'il a été livré, je suis allé travailler en m'assurant que notre budget était exact, puis en rectifiant et en testant les choses tout en commandant des pièces de rechange (principalement des ventilateurs). Beaucoup de fans : 250 nouveaux fans pour être exact. Le cluster s'est retrouvé avec 257 ventilateurs et cela ne compte pas les ventilateurs qui se trouvent dans chacun des commutateurs, le serveur ou les blocs d'alimentation. Cela a nécessité que je démonte l'ensemble du cluster et que je le remonte. Tous les boulons n'ont pas été retirés, mais les 21 banques Pi 2U ont été démontées, tous les 5 Pi retirés et remplacés, ce qui signifiait que 250 nouveaux caddies Pi avec supports pour ventilateurs devaient être imprimés. Vous pouvez en savoir plus ici . Victor Agreda a utilisé son Ultimaker S5 nouvellement acheté pour imprimer quelques dizaines de la version fan des caddies. Les fans avaient tous besoin de puissance, et un grand merci à Eli Schillingpour créer de nombreux faisceaux de câbles. De plus, nous avons ajouté des œufs de Pâques. Je sais que ce n'est pas vraiment un œuf de Pâques si j'en parle au monde, mais je l'expliquerai plus en détail dans la section Warble ci-dessous (parce que c'est trop cool pour ne rien dire). J'ai quelques vidéos documentant certains des travaux qui peuvent être trouvés dans A Temporal History of The World's Largest Raspberry Pi Cluster .
Système d'exploitation - Le système d'exploitation le plus intelligent qui soit
Je pense que beaucoup d'entre nous sous-estimons la valeur d'un bon système d'exploitation lors de la construction d'infrastructures et de matériel, et Oracle Linux est de premier ordre. J'entre dans plus de détails sur le système d'exploitation dans A Temporal History of The World's Largest Raspberry Pi Cluster (et j'ai d'autres choses sur lesquelles je travaille pour que vous puissiez configurer le démarrage du réseau Pi à la maison).Parce que nous avions tout ce travail sur lequel nous baser, nous avons dû passer d'Oracle Linux 7 à Oracle Linux 9. Je vais vous dire un secret : ce n'était pas si simple. Néanmoins, l'équipe Oracle Linux a été formidable avec qui travailler et mérite vraiment tout le mérite d'avoir configuré le système d'exploitation pour le cluster Pi. Allez voir Oracle Linux 9, cela vaut la peine d'utiliser ou de mettre à niveau. Il y a eu quelques problèmes, tels que la couche de sécurité supplémentaire qui signifiait que le compte root n'avait plus d'accès SSH par défaut.
Il convient de mentionner ici comment nous démarrons le Pi. Chaque Pi du cluster démarre en réseau à partir d'un seul montage NFS en lecture seule sur le serveur, et nous avons ajouté un service systemd pour exécuter un script bash chaque fois que le serveur ou le Pi démarre. Cela rend la configuration de ce que nous exécutons presque sans effort.
Logiciels et services cloud - GraalVM s'exécute rapidement sur le client ou dans le cloud
Tous les logiciels sont open source et peuvent être trouvés ici dans notre référentiel DevRel GitHub. Certaines choses viennent des laboratoires et ne sont pas disponibles même en tant qu'aperçu technique (j'ai essayé, elles n'étaient tout simplement pas prêtes) , elles ne sont donc pas incluses. Soyez averti, la plupart de ce code a été écrit rapidement. Ce que vous trouvez n'a peut-être pas beaucoup de sens, alors laissez-moi vous expliquer.
Tout d'abord, il y a le logiciel sur le cluster. Le serveur exécute un conteneur Docker composé de GraalPython au-dessus de GraalVM . Ce Dockerfile est en constante amélioration, je ne recommande donc pas de le copier pour le moment. J'ai fourni quelques rapports de bogues, mais dès que les variables d'environnement Graal et CTRL + C fonctionnent (et peut-être qu'une nouvelle image pour GraalPython est créée) , vous voudrez plonger directement. En attendant, sachez que c'est une façon de je le fais. J'ai constaté une augmentation des performances d'environ 8 fois lors de l'exécution de code Python pur sous GraalVM . C'est assez impressionnant !
Chaque appareil du cluster exécute un service Web. Le serveur diffuse un message UDP avec son adresse IP et son port pour que tout périphérique écoute et communique avec le serveur pour la découverte automatique. Ceci est nouveau par rapport aux années précédentes où l'adresse IP du serveur était placée dans une variable d'environnement. L'adresse IP ne change pas, nous avons donc pu la coder en dur, mais il y avait deux problèmes : toute personne travaillant sur ce problème doit exécuter un système de test avec son bureau et une simulation d'un Pi ou de deux Pi sur son bureau, et le les variables d'environnement sont perdues une fois que vous avez sudo. Cela résout en fait beaucoup de problèmes! Une fois qu'un Pi démarre, il exécute son serveur Web, écoute le message UDP, enregistre son adresse IP et son adresse MAC auprès du serveur et écoute le travail. À intervalles,
Toutes les cinq secondes, chaque Pi envoie toutes ses données (CPU, mémoire, température, etc.) à un point de terminaison REST sur une base de données autonome via le support ORDS natif. La documentation se trouve ici . J'ai mis du code dans lequel si le Pi ne parvient pas à envoyer ses données, il attend un peu plus longtemps la prochaine fois, en passant à 60 secondes. Il s'avère être une montagne de données que la base de données autonome gère sans effort. J'ai essayé quelques autres bases de données qui ne seront pas nommées et disons simplement qu'elles ne pouvaient pas le gérer, entraînant parfois des retards supérieurs à cinq secondes.
Jumeau numérique avec AR/VR — Visualisez vos données
J'ai créé un modèle 3D assez détaillé du cluster Pi qui peut être trouvé ici et ouvert dans votre programme 3D préféré. Nos experts AR/VR et cloud Wojciech Pluta , Victor Martin , Bogdan Farca et Stuart Coggins se sont mis au travail pour créer des expériences AR et VR incroyables. Ils ont réglé les bases de données, écrit des applications APEX et exécuté socket.io pour le streaming. Ils ont exploité un cluster Kubernettes appelé OCI OKEAinsi, les expériences 3D peuvent évoluer sans tomber, ce qui signifie que n'importe qui peut mettre un jumeau numérique du cluster Pi dans son salon. Nous avons des iPads pour AR et des codes QR imprimés afin que l'iPad puisse suivre le cluster avec une précision millimétrique, permettant aux participants de voir les événements du cluster de manière interactive. L'équipe a également construit une version Meta VR, dont les détails seront dévoilés prochainement. Il n'y avait pas assez de puissance pour faire fonctionner l'ensemble du cluster dans mon garage, nous allons donc l'intégrer et le tester avant l'ouverture des portes de CloudWorld. Ça peut marcher, ça peut tomber. Quoi qu'il arrive, ce sera une bonne histoire ! J'ajouterai un lien ici lorsque nous aurons quelque chose d'écrit sur AR/VR Digital Twin.
Services OCI — Au centre de chaque projet se trouve l'infrastructure cloud
Dans mon garage, le Pi Cluster est configuré en tant que serveur "sur site". J'ai créé un sous-réseau isolé sur mon Ubiquity Dream Machine Pro, configuré un VPN site à site vers OCI à l'aide d'un Bastion et utilisé une boîte de jonction locale dotée de deux interfaces réseau (une pour le sous-réseau Pi Cluster et une pour le Pi Cluster ) . Ainsi, le cluster Pi apparaît au monde extérieur comme une adresse IP. Présentez-vous, branchez l'alimentation réseau, et tout va bien. J'aimerais que la configuration soit aussi simple et que je n'aie pas eu à tout tester - en m'assurant que les câbles ne rebondissent pas hors de leur position - mais disons simplement que c'est aussi simple que cela parce que cela semble plus amusant.
Nous n'aurons pas le contrôle du réseau chez CloudWorld, donc le cluster Pi est un "dispositif de périphérie". Il utilise des services cloud tels que Services Gateway , Load Balancer et Domain Management . Oui, nous avons un domaine. J'y reviendrai dans la section suivante.
Le réseau ressemble à ceci :
Si vous avez des questions à ce sujet, rendez-vous sur la chaîne publique Slack d'Oracle pour les développeurs. Posez toutes les questions que vous voulez. Comment le configurer, quels services utiliser. Vous y trouverez vos réponses !
IoT - Tâches légères spécifiques avec de petits microcontrôleurs peu coûteux
Nous avons également une paire d'Arduinos fonctionnant sur le cluster. Le premier Arduino est un Arduino Mega avec un HAT Ethernet. Le code d'origine peut être trouvé ici . Il exécute un service Web et active deux solénoïdes pour un accès à distance aux boutons de réinitialisation physique et d'alimentation du serveur. J'ai un peu modifié le logiciel par rapport au référentiel et je n'ai pas encore publié, j'ai donc laissé cette ancienne version en place. La version que je n'ai pas publiée s'enregistre et attend une simple commande de démarrage lorsqu'un développeur se connecte en SSH au Bastion.
Le deuxième Arduino est le même matériel mais exécute un serveur REST à l'écoute d'une charge utile JSON et est connecté à une douzaine de NeoPixels à la lumière en haut du boîtier de police.
Warble - Un langage de programmation personnalisé conçu pour le cluster Pi
Nous hébergeons le domainehttps://warble.withoracle.cloudsur OCI, soutenu par Domain Management , un Load Balancer et une Compute Instance . L'instance de calcul exécute le même logiciel qui s'exécute sur le cluster Pi : un conteneur Docker avec GraalPython et un service Web. Ce n'est pas tout à fait prêt pour les heures de grande écoute, mais revenez ici ou sur Twitter du 18 au 20 octobre, car ce sera en direct pendant CloudWorld, et je pense que ce sera très amusant.
Nous avons créé un langage de programmation conçu pour que Twitter soit exécuté sur le cluster Pi appelé Warble . Warble n'est pas un langage de programmation complet et j'ai pris beaucoup de raccourcis. Il est conçu pour utiliser le moins de caractères possible afin que vous puissiez publier un Warble sur Twitter et le faire fonctionner sur le cluster Pi. J'ai un script Python en cours d'exécution sur une instance d'ordinateur utilisant l'API Twitter pour rechercher le hashtag #pi . Si le caractère suivant est une accolade ouverte et que le dernier caractère est une accolade fermée, alors nous avons un Warble et il est stocké dans une base de données. Par exemple:
> #pi{PRINT(“hello cluster”)}
< hello cluster
Ne serait-il pas cool de voir qui peut calculer Pi avec le plus de chiffres sur l'un des plus grands clusters Raspberry Pi au monde ?
> #pi{PRINT(2*ROUND(ACOS(0.0),3))}
< 3.142
Twitter sera très amusant, bien qu'il limite l'API et c'est pourquoi nous avons le domaine hébergé. Je fournirai un point de terminaison REST pour publier Warbles. Peut-être que quelqu'un trouvera comment calculer Pi avec Bailey – Borwein – Plouffe_formula en utilisant Warble ou d'une autre manière.
Je ne vais pas écrire une grammaire syntaxique mais je vais donner quelques exemples.
Warble prend en charge les variables :
> #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
De plus, vous pouvez enregistrer des valeurs et les charger à nouveau. Ils sont spécifiques à l'utilisateur :
> #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)}}
<
Sur Ubiquity Dream Machine Pro, avec l'aide de Tim Clegg , j'ai créé un nouveau sous-réseau. Voici un aperçu des étapes que nous avons suivies. Je ne vais pas fournir de captures d'écran spécifiques ni de vidéo car les options sur Ubiquity et Oracle Cloud vont changer. Au lieu de cela, voici quelques points saillants de ce dont vous avez besoin et de ce qu'il faut faire :
Sous réseaux créer un nouveau réseau avec un nom, je choisis "pi".
ID VLAN : 3
Type de réseau : Standard
Créer un réseau VPN de site à site
Nom : pivpn Clé
pré-partagée : ***********************
Adresse du serveur : <Adresse IP du routeur> ( la valeur par défaut devrait convenir)
Passerelle/sous-réseaux distants : 10.0.0.0/24
Adresse IP distante : <Adresse IP du VPN distant>
Avancé :
Profil IPsec manuel :
Distance de route personnalisée : 30
Version d'échange de clé : Chiffrement IKEv1
: AES-256
Hachage : SHA1
Groupe IKE DH : 5 Groupe
ESP DH : 5
Perfect Forward Secrecy : activé
Routage dynamique : activé
J'ai créé trois règles de pare-feu :
1. bloc pi 192.168.3.1 (passerelle)
Type : Action locale LAN :
Source de suppression, Type de source : Source réseau , Réseau : Destination
pi , Type de source : Destination réseau, Réseau : Destination pi , Type de réseau : Adresse IP de la passerelle
2. Accepter par défaut à pi
Type : LAN en
action : accepter
la source, type de source :
source réseau, réseau : destination par défaut
, type de source :
destination réseau, réseau : pi
3. bloc pi par défaut
Type : LAN Out
Action : Drop
Source, Type de source : Network
Destination, Network : pi
Destination, Source Type : Network
Source, Network : Default
Advanced : Manual
Check Match State New
Check Match State Invalid
4. Dans OCI, accédez à Réseau et VPN site à site
Créer une connexion IPSec.
Donne lui un nom.
Vous voudrez cela pour obtenir votre adresse IP publique.
dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com
Vous aurez besoin de créer deux tunnels, j'ai donc configuré les deux pour pointer vers le même VPN car OCI en nécessite deux et je n'en ai exposé qu'un sur mon réseau. Vous allez l'ajouter au VPN.
5. Configurez une passerelle de routage dynamique
6. Configurez un VCN, ajoutez une règle d'entrée avec le CIDR qui est votre sous-réseau local, par exemple le mien est 192.168.3.0/24.
L'avenir
Après avoir parcouru le rythme de DevNucleus chez Oracle CloudWorld, le cluster Pi se dirige vers Oracle Labs où… eh bien, la prochaine partie est un peu secrète pour l'instant. Les utilisations potentielles incluent :
1. Exécution de tests supplémentaires pour GraalVM et Java
2. Projets d'informatique de pointe
3. Robots et traitement parallèle (c'est-à-dire réseaux de neurones)
5. Activités que vous nous avez suggérées, le développeur
Avec le Pi Day 2023 qui approche à grands pas, vous voudrez certainement rester à l'écoute pour la prochaine étape de l'évolution de cette incroyable technologie. Qui sait? Quelques-uns des Pi peuvent même trouver leur chemin hors du cluster et entre vos mains.
Je tiens à remercier tous ceux qui ont contribué au projet. Lisez Une histoire temporelle du plus grand cluster Raspberry Pi au monde pour savoir comment ce projet incroyable et fou a vu le jour.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































