Superkomputer Raspberry Pi na Java One 2022
autorstwa Chrisa Bensena
Jeśli wolisz, możesz przeczytać ten wpis na blogu na GitHub tutaj .
Raspberry Pi Super Computer został pierwotnie zbudowany dla Oracle Open World w październiku 2019 r. Znajduje się tam 1050 Raspberry Pi 3b+ w czterech szafach serwerowych skonfigurowanych w dużym kwadratowym pudełku przypominającym brytyjską skrzynkę policyjną spopularyzowaną w pewnym serialu telewizyjnym BBC. Szybko do przodu, a Raspberry Pi Super Computer (Pi Cluster) został wysłany do odpadów elektronicznych, niektóre części zostały z niego zdjęte i pozostawał uśpiony przez dwa lata, aż do maja tego roku, kiedy trafił do mojego garażu na kompletny remont.
Aby zapoznać się z chwilową historią powstania 1050 Raspberry Pi, przeczytaj A Temporal History of the World's Largest Raspberry Pi Cluster .
Zaczęło się od Geralda Venzla z Oracle w Szwajcarii, który zwrócił mi uwagę na 12-węzłowy klaster, a następnie przeprowadziliśmy burzę mózgów na temat dużego klastra ze Stephenem Chinem. Dowiedz się, w jaki sposób klaster Pi trafił do e-odpadów podczas blokad spowodowanych przez COVID i pożarów w Kalifornii oraz jak uratował go Eric Sedlar, który ostatecznie przechował w laboratoriach Oracle Labs. Jeśli uważasz, że to za długo, obejrzyj oryginalny film o tworzeniu największego na świecie klastra Raspberry Pi, o którym wiemy , ten film Budowanie największego na świecie klastra Raspberry Pi autorstwa Geralda Venzla oraz ten film o klastrze Big Pi w moim garażu — część I .
A tak przy okazji, jeśli to czytasz, istnieje duże prawdopodobieństwo, że będziesz „wielkim Luminarzem”. Co to jest luminarz? To nasza niedawno uruchomiona grupa programistów, która łączy programistów takich jak Ty z ekskluzywnymi treściami technicznymi, darmowymi gadżetami i społecznością, aby pomóc Ci stworzyć coś tak fajnego jak ten klaster i zostać Luminary już dziś .
Wskrzeszenie
Kiedy ogłoszono CloudWorld, natychmiast zaproponowaliśmy wskrzeszenie największego na świecie superkomputera Raspberry Pi (o którym wiemy) . Kto nie lubi dobrej historii o zmartwychwstaniu? Propozycje wyglądały mniej więcej tak:
1. Przekaż go do Muzeum Historii Komputerów jako niefunkcjonalne dzieło sztuki na Dzień Liczby Pi.
2. Raspberry Pi są teraz cenne. Wylosuj kawałek Pi, aby wygrać darmowe Raspberry Pi 3B+ z jednego z największych na świecie klastrów Raspberry Pi.
3. Mamy jedną szansę, aby tworzyć historię. Naprawiamy go dla CloudWorld, dodajemy wentylatory, aby się nie przegrzewał, i uruchamiamy jako urządzenie „on prem” i „edge”, pokazujące technologię, która jest budowana w laboratoriach. Dołączymy GraalPython , Java i Oracle Linux 9 działające na każdym urządzeniu w klastrze Pi. Wszystko jest połączone z Oracle Cloud Infrastructure (OCI) za pośrednictwem Site-to-Site (przewiń w dół, aby uzyskać wskazówki na ten temat)VPN na miejscu i za pośrednictwem mikrousług, instancji obliczeniowych, Autonomous Database, Services Gateway i Load Balancer. Wizualizacje AR byłyby idealne i moglibyśmy uruchomić na nich coś fajnego — na przykład uruchomiliśmy SETI@home na mini superkomputerze Raspberry Pi, klastrze 84-Pi. Wpadłem na pomysł stworzenia usługi, dzięki której każdy na świecie mógłby wysłać kod do klastra w celu uruchomienia obciążenia, podczas gdy my prezentujemy nasze usługi Digital Twin AR/VR oraz tworzymy blogi i filmy, aby inspirować programistów i studentów. Możemy pokazać ludziom, dlaczego programiści i studenci świetnie się bawią, ucząc się i korzystając z bezpłatnej warstwy Oracle . Dodatkowo możemy zdobyć rekord świata w Księdze Guinnessa.
Wybieramy opcję trzecią i rozpoczęło się poszukiwanie nowego laboratorium. Rozmawiałem z kierownictwem różnych wyżej wymienionych zespołów produktowych, a także liderami społeczności Raspberry Pi, takimi jak Jeff Geerling i Eben Upton, i przedstawiłem plan. Nie mogę opowiedzieć o całym planie, ponieważ dopiero stworzyliśmy jego podstawy, ale czeka nas znacznie więcej. To tylko historia przeniesienia klastra Pi do DevNucleus w CloudWorld i krótka wzmianka o tym, co dzieje się później. Okazuje się, że orzeczenie w Księdze Guinnessa jest naprawdę drogie!
Pierwszym krokiem było określenie budżetu i oszacowanie prac, aby sprawdzić, czy jest to wykonalne. Wiedzieliśmy, że potrzebujemy:
1. Fani. Mnóstwo fanów.
2. Aby wymienić brakujące części.
3. Aby przetestować wszystko.
4. Pisanie nowego oprogramowania.
Każda sieć Pi uruchamia się. W 2019 roku miałem Oracle Linux 7 działający na całym klastrze, ale czy nadal działał? Czy mieliśmy cały kod źródłowy, adresy MAC i wszystko, co potrzebne, aby zrobić to ponownie?
Drugim krokiem było znalezienie miejsca do pracy w Gromadzie Pi. Spróbuj znaleźć miejsce z podwójnymi drzwiami, w pobliżu windy towarowej, z wystarczającą mocą i przestrzenią do pracy oraz siecią, która nie jest szczelnie zablokowana — nie jest to łatwe! Przyjrzałem się obiektom Oracle na całym świecie. Logistyka pracy zdalnej nad czymś takim jak to i cała praca fizyczna, którą należałoby w to włożyć, oznaczała, że gdziekolwiek na świecie zadziałałoby tylko wtedy, gdyby spełnione zostały określone wymagania. Musiałbym tam pojechać, wszystko zorganizować i mieć tuzin ludzi do pomocy. Skonfigurowalibyśmy go do zdalnego dostępu, ale ktoś musiałby być dostępny osobiście, gdy coś nie działałoby dobrze. Po miłym obiedzie z moją niesamowitą żoną zdecydowaliśmy, że nasz garaż działa najlepiej i tak zaczął się #BigPiClusterInMyGarage .
Dodawanie wentylatorów — Chłodzenie Raspberry Pi
Po dostarczeniu zabrałem się do pracy, upewniając się, że nasz budżet jest dokładny, a następnie poprawiałem i testowałem rzeczy podczas zamawiania części zamiennych (głównie wentylatorów). Mnóstwo fanów: dokładnie 250 nowych fanów. Klaster zakończył się z 257 wentylatorami i to nie liczy wentylatorów, które są w każdym z przełączników, serwera lub zasilaczy. Wymagało to rozebrania całego zestawu i ponownego złożenia. Nie wszystkie śruby zostały usunięte, ale wszystkie 21 banków Pi 2U zostało zdemontowanych, co piąte Pi zostało usunięte i zastąpione, co oznaczało, że trzeba było wydrukować 250 nowych uchwytów Pi ze wspornikami do wentylatorów. Możesz się o tym dowiedzieć tutaj . Victor Agreda użył swojego nowo zakupionego Ultimakera S5 do wydrukowania kilkudziesięciu fanowskich wersji caddies. Wszyscy fani potrzebowali mocy i wielkie dzięki dla Eli Schillingado tworzenia wielu wiązek przewodów. Dodatkowo dodaliśmy kilka easter eggów. Wiem, że nie jest to zbyt wielkanocne jajko, jeśli powiem o tym światu, ale wyjaśnię to bardziej szczegółowo w sekcji Warble poniżej (ponieważ jest zbyt fajnie, żeby nic nie mówić). Mam kilka filmów dokumentujących niektóre prace, które można znaleźć w A Temporal History of the World's Largest Raspberry Pi Cluster .
System operacyjny — najinteligentniejszy system operacyjny na świecie
Myślę, że wielu z nas nie docenia wartości dobrego systemu operacyjnego podczas budowania infrastruktury i sprzętu, a Oracle Linux jest na najwyższym poziomie. Bardziej szczegółowo omówię system operacyjny w A Temporal History of the World's Largest Raspberry Pi Cluster (i mam kilka innych rzeczy, nad którymi pracuję, abyś mógł skonfigurować uruchamianie sieciowe Pi w domu).Ponieważ mieliśmy tyle pracy do wykorzystania, musieliśmy dokonać aktualizacji z Oracle Linux 7 do Oracle Linux 9. Zdradzę ci sekret: nie było to takie proste. Niemniej jednak praca z zespołem Oracle Linux była niesamowita i naprawdę zasługuje na uznanie za skonfigurowanie systemu operacyjnego dla klastra Pi. Sprawdź Oracle Linux 9, warto go używać lub uaktualniać. Było kilka problemów, takich jak dodatkowa warstwa zabezpieczeń, która oznaczała, że konto root domyślnie nie miało już dostępu SSH.
Warto tutaj wspomnieć, jak uruchamiamy Pi. Każde Pi w klastrze uruchamia się z sieci z pojedynczego montowania NFS tylko do odczytu na serwerze, a my dodaliśmy usługę systemd, aby uruchamiać skrypt bash za każdym razem, gdy serwer lub Pi uruchamiają się. To sprawia, że konfigurowanie tego, co uruchamiamy, jest prawie bezproblemowe.
Oprogramowanie i usługi w chmurze — GraalVM szybko działa na kliencie lub w chmurze
Całe oprogramowanie jest open source i można je znaleźć tutaj w naszym repozytorium DevRel GitHub. Niektóre rzeczy pochodzą z laboratoriów i nie są dostępne nawet jako podgląd techniczny (próbowałem, po prostu nie były gotowe) , więc nie są one uwzględnione. Ostrzegam, większość tego kodu została napisana szybko. To, co znajdziesz, może nie mieć większego sensu, więc pozwól, że wyjaśnię.
Po pierwsze, w klastrze znajduje się oprogramowanie. Serwer obsługuje kontener Docker składający się z GraalPython na GraalVM . Ten plik Dockerfile jest ciągle ulepszany, więc nie polecam go jeszcze kopiować. Dostarczyłem kilka raportów o błędach, ale gdy tylko zmienne środowiskowe Graala i CTRL+C zadziałają (i być może zostanie utworzony nowy obraz dla GraalPython) , będziesz chciał od razu się zagłębić. Tymczasem wiedz, że jest to jeden ze sposobów robić to. Widziałem około 8- krotny wzrost wydajności podczas uruchamiania czystego kodu Pythona pod GraalVM . To imponujące!
Każde urządzenie w klastrze uruchamia usługę internetową. Serwer rozgłasza komunikat UDP ze swoim adresem IP i portem, aby każde urządzenie mogło nasłuchiwać i komunikuje się z serwerem w celu automatycznego wykrywania. Jest to nowość w stosunku do poprzednich lat, w których adres IP serwera był umieszczany w zmiennej środowiskowej. Adres IP się nie zmienia, więc mogliśmy go zakodować na stałe, ale były dwa problemy: każdy, kto nad tym pracuje, musi uruchomić system testowy na swoim pulpicie i symulację Pi lub kilku Pis na swoim biurku, a zmienne środowiskowe są tracone po sudo. To naprawdę rozwiązuje wiele problemów! Po uruchomieniu Pi uruchamia swój serwer WWW, nasłuchuje komunikatu UDP, rejestruje swój adres IP i adres MAC na serwerze i nasłuchuje pracy. W przerwach,
Co pięć sekund każde Pi wysyła wszystkie swoje dane (procesor, pamięć, temperaturę itp.) do punktu końcowego REST w autonomicznej bazie danych za pośrednictwem natywnej obsługi ORDS. Dokumentację można znaleźć tutaj . Umieściłem trochę kodu, w którym jeśli Pi nie wyśle swoich danych, następnym razem czeka trochę dłużej, skalując się do 60 sekund. Okazuje się, że jest to góra danych, z którą Autonomous Database radzi sobie bez wysiłku. Wypróbowałem kilka innych baz danych, których nazwy nie wymienię i powiedzmy, że nie mogły sobie z tym poradzić, czasami powodując opóźnienia większe niż pięć sekund.
Cyfrowy bliźniak z AR/VR — Wizualizuj swoje dane
Stworzyłem dość szczegółowy model 3D Gromady Pi, który można znaleźć tutaj i otworzyć w ulubionym programie 3D. Nasi eksperci AR/VR i chmury Wojciech Pluta , Victor Martin , Bogdan Farca i Stuart Coggins zabrali się do pracy, tworząc niesamowite wrażenia AR i VR. Dostroili bazy danych, napisali aplikacje APEX i uruchomili socket.io do przesyłania strumieniowego. Wykorzystali klaster Kubernettes o nazwie OCI OKEwięc wrażenia 3D można skalować bez przewracania się, co oznacza, że każdy może umieścić Cyfrowego Bliźniaka Pi Cluster w swoim salonie. Mamy iPady do AR i wydrukowane kody QR, dzięki czemu iPad może śledzić klaster z milimetrową dokładnością, umożliwiając uczestnikom interaktywne przeglądanie tego, co dzieje się w klastrze. Zespół zbudował też wersję Meta VR, której szczegóły poznamy wkrótce. Nie było wystarczającej mocy, aby uruchomić cały klaster w moim garażu, więc zintegrujemy to i przetestujemy, zanim drzwi otworzą się w CloudWorld. Może zadziałać, może spaść. Cokolwiek się stanie, będzie to dobra historia! Dodam tutaj link, gdy będziemy mieli coś napisanego na temat AR/VR Digital Twin.
Usługi OCI — w centrum każdego projektu znajduje się infrastruktura chmurowa
W moim garażu Pi Cluster jest skonfigurowany jako serwer „on premium”. Stworzyłem izolowaną podsieć na moim Ubiquity Dream Machine Pro, skonfigurowałem VPN typu site-to-site do OCI za pomocą Bastion i użyłem lokalnego jump boxa, który ma dwa interfejsy sieciowe (jeden dla podsieci Pi Cluster i jeden dla Pi Cluster ) . W ten sposób klaster Pi wydaje się światu zewnętrznemu jako jeden adres IP. Pokaż się, podłącz zasilanie sieciowe i gotowe. Chciałbym, żeby konfiguracja była taka łatwa i nie musiałem wszystkiego testować – upewniając się, że kable nie odbijają się od pozycji – ale powiedzmy, że to takie proste, ponieważ brzmi zabawniej.
Nie będziemy mieć kontroli nad siecią w CloudWorld, więc Pi Cluster jest „urządzeniem brzegowym”. Korzysta z usług w chmurze, takich jak Services Gateway , Load Balancer i Domain Management . Tak, mamy domenę. Przejdę do tego w następnym rozdziale.
Sieć wygląda tak:
Jeśli masz jakieś pytania na ten temat, przejdź do publicznego kanału Slack firmy Oracle dla programistów. Zadaj dowolne pytanie. Jak to skonfigurować, z jakich usług korzystać. Znajdziesz tam swoje odpowiedzi!
IoT — specyficzne, lekkie zadania z małymi, niedrogimi mikrokontrolerami
Mamy również parę Arduino działających w klastrze. Pierwszym Arduino jest Arduino Mega z nakładką Ethernet HAT. Oryginalny kod można znaleźć tutaj . Uruchamia usługę sieciową i włącza dwa solenoidy umożliwiające zdalny dostęp do fizycznych przycisków resetowania i zasilania na serwerze. Zmieniłem trochę oprogramowanie w porównaniu do repozytorium i jeszcze nie publikowałem, więc zostawiłem tę starszą wersję. Wersja, której nie opublikowałem, rejestruje się sama i czeka na proste polecenie uruchamiania, gdy programista łączy się przez SSH z Bastionem.
Drugi Arduino to ten sam sprzęt, ale uruchamia serwer REST nasłuchujący ładunku JSON i jest podłączony do tuzina NeoPixels w świetle na górze skrzynki policyjnej.
Warble — niestandardowy język programowania zaprojektowany dla klastra Pi
Zajmujemy się hostingiem domenyhttps://warble.withoracle.cloudna OCI, wspierany przez zarządzanie domeną , Load Balancer i instancję obliczeniową . W instancji obliczeniowej działa to samo oprogramowanie, które jest uruchomione w klastrze Pi: kontener platformy Docker z GraalPython i usługą internetową. To nie jest jeszcze gotowe na najlepszy czas, ale sprawdź tutaj lub na Twitterze 18-20 października, ponieważ będzie na żywo podczas CloudWorld i myślę, że będzie dużo zabawy.
Stworzyliśmy język programowania przeznaczony dla Twittera do uruchamiania w klastrze Pi o nazwie Warble . Warble nie jest w pełni funkcjonalnym językiem programowania i wybrałem wiele skrótów. Został stworzony z myślą o użyciu jak najmniejszej liczby znaków, dzięki czemu możesz opublikować Warble na Twitterze i uruchomić go w klastrze Pi. Mam skrypt Pythona uruchomiony na instancji komputera przy użyciu interfejsu API Twittera do wyszukiwania hashtagu #pi . Jeśli następny znak to otwarty nawias klamrowy, a ostatni znak to zamknięty nawias klamrowy, to mamy Warble i jest on przechowywany w bazie danych. Na przykład:
> #pi{PRINT(“hello cluster”)}
< hello cluster
Czy nie byłoby fajnie zobaczyć, kto potrafi obliczyć Pi z największą liczbą cyfr w jednym z największych na świecie klastrów Raspberry Pi?
> #pi{PRINT(2*ROUND(ACOS(0.0),3))}
< 3.142
Twitter będzie świetną zabawą, chociaż ogranicza interfejs API i dlatego mamy domenę hostowaną. Dostarczę punkt końcowy REST, aby opublikować Warbles. Może ktoś wymyśli, jak obliczyć Pi za pomocą formuły Baileya-Borweina-Plouffe'a, używając Warble'a lub w inny sposób.
Nie zamierzam pisać gramatyki składni, ale podam kilka przykładów.
Warble obsługuje zmienne:
> #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
Ponadto możesz zapisać wartości i załadować je ponownie. Są specyficzne dla użytkownika:
> #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)}}
<
Na Ubiquity Dream Machine Pro z pomocą Tima Clegga stworzyłem nową podsieć. Oto zarys kroków, które wykonaliśmy. Nie zamierzam dostarczać konkretnych zrzutów ekranu ani wideo, ponieważ opcje Ubiquity i Oracle Cloud ulegną zmianie. Zamiast tego, oto kilka najważniejszych informacji o tym, czego potrzebujesz i co należy zrobić:
W sieciach utwórz nową sieć o nazwie, wybieram „pi”.
VLAN ID: 3
Typ sieci: Standard
Utwórz sieć VPN typu lokacja-lokacja
Nazwa sieci: pivpn Klucz
wstępny: ************************
Adres serwera: <Adres IP routera> ( domyślnie powinno być dobrze)
Zdalna brama/podsieci: 10.0.0.0/24
Zdalny adres IP: <Adres IP zdalnej sieci VPN>
Zaawansowane: Ręczny
Profil IPsec: Dostosowana
odległość trasy: 30
Wersja wymiany klucza: IKEv1
Szyfrowanie: AES-256
Hash: SHA1
IKE DH Group: 5
ESP DH Group: 5
Perfect Forward Secrecy: włączony
Routing dynamiczny: włączony
Stworzyłem trzy reguły zapory:
1. blok pi 192.168.3.1 (brama)
Typ: LAN
Działanie lokalne:
Źródło upuszczenia, Typ źródła: Źródło sieci , Sieć: miejsce docelowe
pi , Typ źródła: Miejsce docelowe sieci, Sieć: miejsce docelowe pi , Typ sieci: Adres IP bramy
2. Domyślnie zaakceptuj pi
Typ: LAN W
akcji: Zaakceptuj
źródło, Typ źródła:
Źródło sieciowe, Sieć: Domyślne
miejsce docelowe, Typ źródła:
Miejsce docelowe sieci, Sieć: pi
3. blok pi do domyślnego
Typ: LAN Out
Akcja:
Źródło upuszczenia, Typ źródła: Sieć docelowa
, Sieć: Miejsce docelowe pi
, Typ źródła:
Źródło sieci, Sieć: Domyślne
Zaawansowane: Ręczne
Sprawdź stan dopasowania Nowe
Sprawdź stan dopasowania Nieprawidłowy
4. W OCI przejdź do Networking i Site-to-Site VPN
Utwórz połączenie IPSec.
Daj temu imię.
Będziesz chciał, aby uzyskać twój publiczny adres IP.
dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com
Będziesz musiał utworzyć dwa tunele, więc skonfigurowałem oba tak, aby wskazywały tę samą sieć VPN, ponieważ OCI wymaga dwóch, a ja udostępniłem tylko jeden w mojej sieci. Dodasz to do VPN.
5. Skonfiguruj bramę routingu dynamicznego
6. Skonfiguruj sieć VCN, dodaj regułę ruchu przychodzącego z CIDR, która jest lokalną podsiecią, na przykład moja to 192.168.3.0/24.
Przyszłość
Po przejściu przez etapy DevNucleus w Oracle CloudWorld, Pi Cluster zmierza do Oracle Labs, gdzie… cóż, następna część jest na razie trochę tajemnicą. Potencjalne zastosowania obejmują:
1. przeprowadzanie dodatkowych testów dla GraalVM i Java
2. Projekty przetwarzania brzegowego
3. Roboty i przetwarzanie równoległe (tj. sieci neuronowe)
5. Działania sugerowane nam przez Ciebie, programistę
Ponieważ Dzień Pi 2023 jest tuż za rogiem, na pewno będziesz chciał być na bieżąco z kolejnym etapem ewolucji tej niesamowitej technologii. Kto wie? Kilka Pi może nawet znaleźć wyjście z gromady i dostać się w twoje ręce.
Chcę podziękować wszystkim, którzy przyłożyli rękę do projektu. Przeczytaj Tymczasową historię największego na świecie klastra Raspberry Pi , aby dowiedzieć się, jak powstał ten szalony, niesamowity projekt.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































