Java One 2022 での Raspberry Pi スーパーコンピューター
クリス・ベンセン
必要に応じて、こちらの GitHub でこのブログ投稿を読むことができます。
Raspberry Pi Super Computer は、もともと 2019 年 10 月に Oracle Open World のために構築されました。ある BBC TV シリーズで人気を博した英国の交番を連想させる大きな正方形のボックスに構成された 4 つのサーバー ラックに 1050 台の Raspberry Pi 3b+ が配置されています。今日まで早送りすると、Raspberry Pi スーパー コンピューター(Pi クラスター)は電子廃棄物に送られ、いくつかの部品が取り除かれ、今年の 5 月まで 2 年間休止状態でした。完全なオーバーホール。
1050 Raspberry Pi がどのように誕生したかの歴史については、A Temporal History of The World's Largest Raspberry Pi Clusterを参照してください。
まず、Oracle Switzerland の Gerald Venzl が 12 ノード クラスタに注目し、Stephen Chin と大きなクラスタについてブレインストーミングを行いました。COVID のロックダウンやカリフォルニアの火災の際に Pi Cluster がどのように電子廃棄物になったのか、Eric Sedlar がどのようにそれを救出し、最終的に Oracle Labs に保管したかを学びましょう。それが長すぎる場合は、私たちが知っている世界最大の Raspberry Pi クラスターの元のビルド ビデオ、Gerald Venzlによる世界最大の Raspberry Pi クラスターの構築、および私のガレージでの Big Pi クラスターのこのビデオをご覧ください — パート I .
ところで、これを読んでいるあなたは、「偉大なルミナリー」になる可能性が高いです。ルミナリーとは?最近立ち上げられた開発者グループであり、あなたのような開発者を独占的な技術コンテンツ、無料のグッズ、コミュニティに結び付けて、このクラスターと同じくらいクールなものを構築し、今日ルミナリーになるのを支援します.
復活
CloudWorld が発表されたとき、私たちはすぐに(私たちが知っている)世界最大の Raspberry Pi スーパー コンピューターを復活させることを提案しました。良い復活物語が嫌いな人はいますか? 提案は次のようになりました。
1. コンピューター歴史博物館に、Pi-Day の非機能的なアート作品として寄付します。
2. Raspberry Pi は今では価値があります。世界最大の Raspberry Pi クラスターの 1 つから無料の Raspberry Pi 3B+ を獲得するために、Pi をくじ引きで獲得してください。
3. 歴史を作るチャンスは 1 回だけです。CloudWorld 用に修正し、過熱しないようにファンを追加し、「オンプレミス」および「エッジ」デバイスとして実行して、ラボで構築されている技術を披露します。Pi クラスターのすべてのデバイスで実行されるGraalPython、Java、およびOracle Linux 9が含まれます。すべてがSite-to-Siteを介してOracle Cloud Infrastructure (OCI)に接続されています(これに関する指示については一番下までスクロールしてください)オンプレミスおよびマイクロサービス経由の VPN、コンピューティング インスタンス、自律型データベース、サービス ゲートウェイ、およびロード バランサー。AR ビジュアライゼーションが理想的で、84 Pi クラスターである Raspberry Pi Mini スーパー コンピューターでSETI@homeを実行したときのように、その上で何かクールなものを実行できます。デジタル ツイン AR/VR サービスを紹介し、ブログやビデオを作成して開発者や学生に刺激を与えるため、世界中の誰もがコードをクラスターに送信してワークロードを実行できるようにするサービスをセットアップするというアイデアを思いつきました。開発者や学生が、 Oracle の Free Tierを楽しく学習し、使用している理由を人々に示すことができます。さらに、ギネスブックの世界記録を取得できます。
オプション 3 を選択すると、新しいラボの検索が開始されます。上記のさまざまな製品チームのリーダーや、 Jeff Geerlingや Eben Upton などの Raspberry Pi コミュニティのリーダーと話をして、計画を立てました。基礎を固めたばかりなので、計画全体についてお話しすることはできませんが、まだまだこれからです。これは、Pi Cluster を CloudWorld の DevNucleus に届けるまでの話であり、その後何が起こるかについて簡単に言及しています。ギネスブックの審査は本当に高価であることが判明しました!
最初のステップは、予算と作業の見積もりを特定して、それが実現可能かどうかを確認することでした。次のものが必要であることはわかっていました。
1. ファン。多くのファン。
2. 不足している部品を交換する。
3. すべてをテストする。
4. 新しいソフトウェアを書くこと。
すべての Pi ネットワークが起動します。2019 年に、クラスター全体で Oracle Linux 7 を実行していましたが、それでも機能しましたか? すべてのソース コード、MAC アドレス、および再実行に必要なすべてのものを入手できましたか?
2 番目のステップは、Pi クラスターで作業する場所を確保することでした。両開きドアがあり、貨物用エレベーターの近くにあり、作業に十分な電力とスペースがあり、ネットワークがしっかりとロックされていない場所を探してみてください。簡単ではありません。世界中のオラクルの施設を見てきました。このようなリモートでの作業のロジスティクスとそれに投入する必要のあるすべての物理的な作業は、特定の要件が満たされた場合にのみ、世界中のどこでも機能することを意味していました. 私はそこに行って、すべてをセットアップし、十数人の人に手伝ってもらう必要がありました。リモートアクセス用にセットアップしましたが、うまくいかないときは誰かが直接対応する必要がありました。素晴らしい妻と素敵なランチを食べた後、私たちは自分のガレージが一番うまく機能すると判断し、そこから#BigPiClusterInMyGarageが始まりました。
ファンを追加する — Raspberry Pi を冷却する
納品後、予算が正確であることを確認し、交換部品 (主にファン) を注文しながら修正とテストを行いました。多くのファン: 正確には 250 人の新しいファン。クラスタには最終的に 257 個のファンがありましたが、これには、各スイッチ、サーバー、または電源装置にあるファンは含まれていません。これには、クラスター全体を分解して再組み立てする必要がありました。すべてのボルトが取り外されたわけではありませんが、21 個の Pi 2U バンクすべてが分解され、5 個ごとに Pi が取り外されて交換されました。つまり、ファン用のブラケットを備えた 250 個の新しい Pi キャディを印刷する必要がありました。それについてはここで学ぶことができます。Victor Agredaは、新しく購入した Ultimaker S5 を使用して、キャディのファン バージョンを数十個印刷しました。ファンはすべて電力を必要としていました。Eli Schillingに感謝します。多くのワイヤーハーネスを作成するため。さらに、イースターエッグをいくつか追加しました。私がそれについて世界に話してもイースターエッグではないことはわかっていますが、以下のウォーブルのセクションで詳しく説明します (クールすぎて何も言わないため)。A Temporal History of The World's Largest Raspberry Pi Clusterで見つけることができる作業の一部を記録したビデオがいくつかあります。
オペレーティング システム — 最もスマートなオペレーティング システム
私たちの多くは、インフラストラクチャとハードウェアを構築する際に優れたオペレーティング システムの価値を過小評価していると思いますが、Oracle Linux は一流です。オペレーティング システムの詳細については、世界最大の Raspberry Pi クラスターの時間史を参照 してください (また、自宅で Pi を起動するネットワークをセットアップできるように、他にも取り組んでいる作業があります)。構築するすべての作業があったため、Oracle Linux 7 から Oracle Linux 9 にアップグレードする必要がありました。秘密を教えましょう。それはそれほど単純ではありませんでした。それにもかかわらず、Oracle Linux チームは協力して素晴らしい仕事をしており、Pi Cluster 用のオペレーティング システムをセットアップしたことは本当に称賛に値します。Oracle Linux 9 を調べてみてください。使用またはアップグレードする価値があります。root アカウントがデフォルトで SSH アクセスできなくなったことを意味する追加のセキュリティ層など、いくつかの問題がありました。
ここで、Pi を起動する方法について言及する価値があります。クラスター内のすべての Pi は、サーバー上の単一の読み取り専用 NFS マウントからネットワーク ブートします。また、サーバーまたは Pi が起動するたびに bash スクリプトを実行する systemd サービスを追加しました。これにより、実行するものをほとんど簡単に構成できます。
ソフトウェアとクラウド サービス — GraalVM はクライアントまたはクラウドで高速に実行されます
すべてのソフトウェアはオープン ソースであり、DevRel GitHub リポジトリで見つけることができます。ラボから提供されているものもあり、技術プレビューとしても利用できません(試してみましたが、準備ができていませんでした)。そのため、それらは含まれていません。そのコードのほとんどはすぐに書かれたことに注意してください。あなたが見つけたものはあまり意味をなさないかもしれないので、説明させてください.
まず、クラスター上にソフトウェアがあります。サーバーは、GraalVM 上で GraalPython で構成される Docker コンテナーを実行します。そのDockerfileは継続的に改善されているため、まだコピーすることはお勧めしません。私はいくつかのバグレポートを提供しましたが、Graal 環境変数と CTRL+C が機能する (そしておそらく GraalPython の新しいイメージが作成される)とすぐに、すぐに飛び込みたくなるでしょう。している。GraalVM で純粋な Python コードを実行すると、パフォーマンスが約8 倍向上しました。それはかなり印象的です!
クラスタ上のすべてのデバイスが Web サービスを実行します。サーバーは、任意のデバイスがリッスンし、自動検出のためにサーバーと通信するために、その IP アドレスとポートを使用して UDP メッセージをブロードキャストします。これは、サーバーの IP アドレスが環境変数に入れられた以前の年からの新しいものです。IP アドレスは変更されないので、ハード コードすることはできましたが、2 つの問題がありました。 sudo を実行すると、環境変数は失われます。これは実際に多くの問題を解決します!Pi が起動すると、Web サーバーを実行し、UDP メッセージをリッスンし、IP アドレスと MAC アドレスをサーバーに登録し、作業をリッスンします。間隔を置いて、
各 Pi は 5 秒ごとに、すべてのデータ(CPU、メモリ、温度など)を、ネイティブ ORDS サポートを介して自律型データベースの REST エンドポイントに送信します。ドキュメントはここにあります。Pi がデータの送信に失敗した場合に、次回は少し長く待機し、60 秒までスケールアップするコードを追加しました。それは、Autonomous Database が簡単に処理できるデータの山であることが判明しました。名前を付けない他のいくつかのデータベースを試してみましたが、それらが処理できず、5 秒を超える遅延が発生することもありました。
AR/VR を使用したデジタル ツイン — データを視覚化する
Pi Cluster のかなり詳細な 3D モデルを作成しました。ここにあり、お気に入りの 3D プログラムで開くことができます。AR/VR とクラウドの専門家であるWojciech Pluta、Victor Martin、Bogdan Farca、Stuart Cogginsは、素晴らしい AR と VR 体験の構築に取り組みました。彼らはデータベースを調整し、APEX アプリを作成し、ストリーミング用に socket.io を実行しました。彼らはOCI OKEと呼ばれる Kubernettes クラスターを活用しました。そのため、3D エクスペリエンスは転倒することなくスケーリングできます。つまり、誰もが Pi クラスターのデジタル ツインをリビング ルームに置くことができます。AR 用の iPad と印刷された QR コードがあるため、iPad はミリ単位の精度でクラスターを追跡でき、参加者はクラスターの進行状況をインタラクティブに見ることができます。チームは Meta VR バージョンも作成しました。詳細は間もなく明らかになります。ガレージでクラスター全体を実行するのに十分な電力がなかったため、これを統合して、CloudWorld でドアが開く前にテストします. うまくいくかもしれないし、転ぶかもしれない。どうなってもいい話になる!AR/VR Digital Twin について何か書かれたら、ここにリンクを追加します。
OCI サービス — すべてのプロジェクトの中心にあるのはクラウド インフラストラクチャです
私のガレージでは、Pi Cluster は「オンプレミス」サーバーとしてセットアップされています。Ubiquity Dream Machine Pro に分離されたサブネットを作成し、 Bastionを使用してサイト間 VPN を OCI に構成し、 2 つのネットワーク インターフェイス(1 つは Pi クラスター サブネット用、もう 1 つは Pi クラスター用)を持つローカル ジャンプ ボックスを使用しました。 )。したがって、Pi クラスターは外部からは 1 つの IP アドレスとして認識されます。現れて、ネットワーク電源を接続すれば、問題ありません。セットアップが簡単で、すべてをテストする必要がなかったらいいのにと思います。
CloudWorld ではネットワークを制御できないため、Pi クラスターは「エッジ デバイス」です。サービス ゲートウェイ、ロード バランサー、ドメイン管理などのクラウド サービスを使用します。はい、ドメインがあります。それについては、次のセクションで説明します。
ネットワークは次のようになります。
これについて質問がある場合は、Oracle の開発者向け公開Slack チャネルにアクセスしてください。何でも質問してください。設定方法、使用するサービス。そこにあなたの答えが見つかります!
IoT — 小型で安価なマイクロコントローラを使用した特定の軽量タスク
また、クラスターで実行されている Arduino のペアもあります。最初の Arduino は、Ethernet HAT を備えた Arduino Mega です。元のコードはここにあります。Web サービスを実行し、サーバーの物理的なリセット ボタンと電源ボタンへのリモート アクセス用に 2 つのソレノイドをオンにします。リポジトリと比較してソフトウェアを少し変更し、まだ公開していないため、この古いバージョンをそのまま残しました。私が公開していないバージョンは、それ自体を登録し、開発者が Bastion に SSH で接続すると、単純な起動コマンドを待機します。
2 番目の Arduino は同じハードウェアですが、JSON ペイロードをリッスンする REST サーバーを実行し、交番の上部の照明で多数のNeoPixelに接続されています。
Warble — Pi クラスター用に設計されたカスタム プログラミング言語
ドメインをホスティングしていますhttps://warble.withoracle.cloudDomain Management、Load Balancer、およびCompute Instanceに支えられたOCI上。コンピューティング インスタンスは、Pi クラスターで実行されているのと同じソフトウェアを実行しています。GraalPython と Web サービスを備えた Docker コンテナーです。これはゴールデン タイムにはまだ準備が整っていませんが、10 月 18 ~ 20 日に CloudWorld でライブ配信されるので、こちらまたは Twitter をチェックしてください。とても楽しいものになると思います。
Twitter が Pi クラスター上で実行されるように設計された、 Warbleと呼ばれるプログラミング言語を作成しました。Warble はフル機能のプログラミング言語ではないため、多くのショートカットを使用しました。Twitter に Warble を投稿して、Pi Cluster で実行できるように、できるだけ少ない文字を使用するように作られています。Twitter API を使用してハッシュタグ#piを検索する Python スクリプトをコンピューター インスタンスで実行しています。次の文字が開き中かっこで、最後の文字が閉じ中かっこの場合、Warble があり、データベースに格納されます。例えば:
> #pi{PRINT(“hello cluster”)}
< hello cluster
世界最大の Raspberry Pi クラスターの 1 つで、Pi を最も多くの桁数で計算できるのは誰なのか見てみたいと思いませんか?
> #pi{PRINT(2*ROUND(ACOS(0.0),3))}
< 3.142
Twitter は非常に楽しいものですが、API が抑制されます。これが、ホストされたドメインを使用する理由です。Warbles を投稿するための REST エンドポイントを提供します。誰かが、ワーブルまたは他の方法を使用して、 Bailey–Borwein–Plouffe_formula でPi を計算する方法を理解するでしょう。
構文文法を書くつもりはありませんが、いくつかの例を示します。
Warble は変数をサポートしています:
> #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
さらに、値を保存して再度読み込むことができます。それらはユーザー固有です。
> #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)}}
<
Ubiquity Dream Machine Pro で、Tim Cleggの助けを借りて、新しいサブネットを作成しました。以下は、私たちが行った手順の概要です。Ubiquity と Oracle Cloud のオプションが変更されるため、特定のスクリーン キャプチャやビデオを提供するつもりはありません。代わりに、必要なものと何をすべきかのハイライトを以下に示します。
[ネットワーク] の下で、名前を付けて新しいネットワークを作成します。「pi」を選択します。
VLAN ID: 3
ネットワークタイプ: 標準
サイト間 VPN の作成
ネットワーク名: pivpn
事前共有キー: ************************
サーバー アドレス: <ルーターの IP アドレス> (デフォルトで問題ありません)
リモート ゲートウェイ/サブネット: 10.0.0.0/24
リモート IP アドレス: <リモート VPN の IP アドレス>
詳細: 手動
IPsec プロファイル: カスタマイズされた
ルート距離: 30
鍵交換バージョン: IKEv1
暗号化: AES-256
ハッシュ: SHA1
IKE DH グループ: 5
ESP DH グループ: 5
Perfect Forward Secrecy: 有効
動的ルーティング: 有効
3 つのファイアウォール ルールを作成しました。
1. pi ブロック 192.168.3.1 (ゲートウェイ)
タイプ: LAN ローカル
アクション: ドロップ
ソース、ソース タイプ: ネットワーク
ソース、ネットワーク: pi
宛先、ソース タイプ: ネットワーク
宛先、ネットワーク: pi
宛先、ネットワーク タイプ: ゲートウェイ IP アドレス
2. デフォルトで pi を受け入れる
タイプ: LAN
アクション中:
ソースを受け入れる、ソース タイプ: ネットワーク
ソース、ネットワーク: デフォルト
の宛先、ソース タイプ: ネットワーク
宛先、ネットワーク: pi
3. pi ブロックをデフォルトに
タイプ: LAN Out
アクション: Drop
Source, Source Type: Network
Destination, Network: pi
Destination, Source Type: Network
Source, Network: Default
Advanced: Manual
Check Match State New
Check Match State Invalid
4. OCI で Networking と Site-to-Site VPN
Create IPSec Connection に移動します。
名前を付けます。
これでパブリック IP アドレスを取得する必要があります。
dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com
2 つのトンネルを作成する必要があるため、OCI には 2 つのトンネルが必要であるため、同じ VPN を指すように両方を設定し、ネットワーク上に 1 つだけ公開しました。これを VPN に追加します。
5. 動的ルーティング ゲートウェイを
セットアップします。 6. VCN をセットアップし、ローカル サブネットである CIDR を使用してイングレス ルールを追加します。たとえば、私の場合は 192.168.3.0/24 です。
未来
Oracle CloudWorld で DevNucleus のペースを経験した後、Pi Cluster は Oracle Labs に向かいます。そこで、次の部分は今のところ少し秘密です。潜在的な用途は次のとおり
です。 1. GraalVM および Java の追加テストの実行
2. エッジ コンピューティング プロジェクト
3. ロボットおよび並列処理 (つまりニューラル ネットワーク)
5. 開発者であるあなたから提案された活動
Pi Day 2023 が間近に迫っていますが、この信じられないほどの技術の進化の次の段階に注目してください。知るか?いくつかの Pi は、クラスターから抜け出し、あなたの手に渡ることさえあるかもしれません。
プロジェクトに関わってくれたすべての人に感謝したい。世界最大の Raspberry Pi クラスターの一時的な歴史を読んで、このクレイジーで素晴らしいプロジェクトがどのように生まれたかを確認してください。

![とにかく、リンクリストとは何ですか?[パート1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































