Raspberry Pi Super Computer di Java One 2022
oleh Chris Bensen
Jika mau, Anda dapat membaca postingan blog ini di GitHub di sini .
Raspberry Pi Super Computer awalnya dibangun untuk Oracle Open World pada Oktober 2019. Ada 1050 Raspberry Pi 3b+ di empat rak server yang dikonfigurasi dalam kotak persegi besar yang mengingatkan pada kotak polisi Inggris yang dipopulerkan dalam serial TV BBC tertentu. Maju cepat ke hari ini, dan Komputer Super Raspberry Pi (Pi Cluster) dikirim ke limbah elektronik, beberapa bagian dilepas, dan tidak aktif selama dua tahun hingga Mei tahun ini, ketika ia menemukan jalan ke garasi saya untuk a perombakan total.
Untuk sejarah sementara tentang bagaimana 1050 Raspberry Pi muncul, Anda dapat membaca A Temporal History of The World's Largest Raspberry Pi Cluster .
Ini dimulai dengan Gerald Venzl di Oracle Swiss membawa klaster 12-simpul ke perhatian saya, lalu kami melakukan brainstorming sebuah klaster besar dengan Stephen Chin. Pelajari bagaimana Pi Cluster menjadi limbah elektronik selama penguncian COVID dan kebakaran California dan bagaimana Eric Sedlar menyelamatkannya, akhirnya menyimpannya di Oracle Labs. Jika Anda merasa terlalu lama, tonton video build asli dari Kluster Raspberry Pi Terbesar di Dunia yang kami ketahui , Membangun kluster Raspberry Pi terbesar di dunia oleh Gerald Venzl, dan video Kluster Pi Besar di Garasi Saya — Bagian I .
Dan omong-omong, jika Anda membaca ini, kemungkinan besar Anda akan menjadi Luminary yang hebat. Apa itu Luminaria? Ini adalah grup pengembang kami yang baru saja diluncurkan yang menghubungkan pengembang seperti Anda ke konten teknis eksklusif, swag gratis, dan komunitas untuk membantu Anda membangun sesuatu sekeren cluster ini, menjadi Luminary hari ini .
Kebangkitan
Ketika CloudWorld diumumkan, kami segera mengusulkan untuk menghidupkan kembali Komputer Super Raspberry Pi Terbesar di Dunia (yang kami ketahui) . Siapa yang tidak suka kisah kebangkitan yang bagus? Proposal berjalan seperti ini:
1. Sumbangkan ke Museum Sejarah Komputer sebagai karya seni non-fungsional untuk Pi-Day.
2. Raspberry Pi berharga sekarang. Undian sepotong Pi untuk memenangkan Raspberry Pi 3B+ gratis dari salah satu Kluster Raspberry Pi Terbesar di Dunia.
3. Kami memiliki satu kesempatan untuk membuat sejarah. Kami memperbaikinya untuk CloudWorld, menambahkan kipas agar tidak terlalu panas, dan menjalankannya sebagai perangkat "di lokasi" dan "tepi" yang memamerkan teknologi yang sedang dibuat di lab. Kami akan menyertakan GraalPython , Java dan Oracle Linux 9 yang berjalan di setiap perangkat di Pi Cluster. Semuanya terhubung ke Oracle Cloud Infrastructure (OCI) melalui Site-to-Site (gulir ke bawah untuk petunjuk tentang ini)VPN untuk lokal dan melalui layanan mikro, instans komputasi, Autonomous Database, Services Gateway, dan Load Balancer. Visualisasi AR akan ideal, dan kami dapat menjalankan sesuatu yang keren di atasnya — seperti saat kami menjalankan SETI@home di Raspberry Pi Mini Super Computer, sebuah Cluster 84-Pi. Saya mendapatkan ide untuk menyiapkan layanan sehingga siapa pun di dunia dapat mengirim kode ke kluster untuk menjalankan beban kerja, saat kami memamerkan layanan Digital Twin AR/VR dan membuat blog dan video untuk menginspirasi developer dan siswa. Kami dapat menunjukkan kepada orang-orang mengapa pengembang dan siswa bersenang-senang belajar dan menggunakan Oracle's Free Tier . Plus, kita bisa mendapatkan rekor dunia Guinness Book.
Kami memilih opsi ketiga dan pencarian lab baru dimulai. Saya berbicara dengan pimpinan berbagai tim produk yang disebutkan di atas, serta pimpinan di komunitas Raspberry Pi seperti Jeff Geerling dan Eben Upton, dan menyusun rencana. Saya tidak dapat memberi tahu Anda tentang keseluruhan rencana karena kami baru saja menetapkan fondasinya, tetapi masih banyak lagi yang akan datang. Ini hanyalah kisah mendapatkan Pi Cluster ke DevNucleus di CloudWorld dan penjelasan singkat tentang apa yang terjadi setelahnya. Ternyata ajudikasi Guinness Book sangat mahal!
Langkah pertama adalah mengidentifikasi anggaran dan perkiraan pekerjaan untuk melihat apakah itu layak. Kami tahu kami membutuhkan:
1. Penggemar. Banyak penggemar.
2. Untuk mengganti bagian yang hilang.
3. Untuk menguji semuanya.
4. Untuk menulis perangkat lunak baru.
Setiap jaringan Pi melakukan booting. Pada tahun 2019 saya menjalankan Oracle Linux 7 di seluruh cluster, tetapi apakah masih berfungsi? Apakah kami memiliki semua kode sumber, alamat MAC, dan semua yang diperlukan untuk melakukannya lagi?
Langkah kedua adalah mendapatkan tempat untuk bekerja di Pi Cluster. Cobalah mencari tempat dengan pintu ganda, dekat dengan lift barang, dengan daya dan ruang yang cukup untuk mengerjakannya, dan jaringan yang tidak terkunci rapat — tidak mudah! Saya melihat fasilitas Oracle di seluruh dunia. Logistik untuk mengerjakan sesuatu seperti ini dari jarak jauh dan semua pekerjaan fisik yang harus dilakukan berarti di mana pun di dunia ini hanya akan berfungsi jika persyaratan tertentu dipenuhi. Saya harus pergi ke sana, mengatur semuanya, dan memiliki selusin orang untuk membantu. Kami telah menyiapkannya untuk akses jarak jauh tetapi seseorang harus tersedia secara langsung ketika ada yang tidak berfungsi dengan benar. Setelah makan siang yang menyenangkan dengan istri saya yang luar biasa, kami memutuskan bahwa garasi kami bekerja paling baik, dan di situlah #BigPiClusterInMyGarage dimulai.
Menambahkan Kipas — Mendinginkan Raspberry Pi
Setelah dikirimkan, saya pergi bekerja untuk memastikan anggaran kami akurat, kemudian memperbaiki dan menguji berbagai hal sambil memesan suku cadang pengganti (kebanyakan kipas). Banyak penggemar: tepatnya 250 penggemar baru. Cluster berakhir dengan 257 kipas dan itu belum termasuk kipas yang ada di setiap sakelar, server, atau catu daya. Ini mengharuskan saya membongkar seluruh cluster dan memasangnya kembali. Tidak setiap baut dilepas, tetapi semua bank 21 Pi 2U dibongkar, setiap Pi ke-5 dilepas dan diganti, yang berarti 250 caddie Pi baru dengan braket untuk kipas harus dicetak. Anda dapat mempelajarinya di sini . Victor Agreda menggunakan Ultimaker S5 yang baru dibelinya untuk mencetak beberapa lusin caddie versi kipas. Semua penggemar membutuhkan kekuatan, dan banyak terima kasih kepada Eli Schillinguntuk membuat banyak rangkaian kabel. Selain itu, kami menambahkan beberapa telur paskah. Saya tahu itu bukan telur paskah jika saya memberi tahu dunia tentangnya, tetapi saya akan menjelaskannya lebih detail di bagian Warble di bawah (karena terlalu keren untuk tidak mengatakan apa-apa). Saya memiliki beberapa video yang mendokumentasikan beberapa karya yang dapat ditemukan di A Temporal History of The World's Largest Raspberry Pi Cluster .
Sistem Operasi — Sistem Operasi Terpintar
Saya pikir banyak dari kita meremehkan nilai sistem operasi yang baik saat membangun infrastruktur dan perangkat keras, dan Oracle Linux adalah yang terbaik. Saya membahas lebih detail tentang sistem operasi dalam A Temporal History of The World's Largest Raspberry Pi Cluster (dan saya memiliki beberapa hal lain yang sedang saya kerjakan sehingga Anda dapat mengatur Pi booting jaringan di rumah).Karena kami memiliki semua pekerjaan yang harus dibangun, kami harus memutakhirkan dari Oracle Linux 7 ke Oracle Linux 9. Saya akan memberi tahu Anda sebuah rahasia: tidak sesederhana itu. Namun demikian, tim Oracle Linux sangat luar biasa untuk diajak bekerja sama dan benar-benar pantas mendapatkan semua pujian untuk menyiapkan sistem operasi untuk Pi Cluster. Lihat Oracle Linux 9, ada baiknya menggunakan atau memutakhirkan. Ada beberapa cegukan, seperti lapisan keamanan tambahan yang berarti akun root tidak lagi memiliki akses SSH secara default.
Perlu disebutkan di sini bagaimana kami mem-boot Pi. Setiap Pi di kluster adalah jaringan yang mem-boot dari satu mount NFS yang hanya bisa dibaca di server, dan kami menambahkan layanan sistem untuk menjalankan skrip bash setiap kali server atau Pi melakukan booting. Ini membuat mengonfigurasi apa yang kami jalankan hampir tanpa usaha.
Perangkat Lunak dan Layanan Cloud — GraalVM Berjalan Cepat di Klien atau di Cloud
Semua perangkat lunak adalah open source dan dapat ditemukan di sini di repositori DevRel GitHub kami. Ada beberapa hal yang berasal dari lab dan tidak tersedia bahkan sebagai pratinjau teknologi (saya mencoba, mereka belum siap) jadi itu tidak disertakan. Berhati-hatilah, sebagian besar kode itu ditulis dengan cepat. Apa yang Anda temukan mungkin tidak masuk akal, jadi izinkan saya menjelaskannya.
Pertama, ada perangkat lunak di cluster. Server menjalankan wadah Docker yang terdiri dari GraalPython di atas GraalVM . Dockerfile itu sedang mengalami peningkatan berkelanjutan, jadi saya tidak menyarankan untuk menyalinnya dulu. Saya telah memberikan beberapa laporan bug, tetapi segera setelah variabel lingkungan Graal dan CTRL+C berfungsi (dan mungkin gambar baru untuk GraalPython dibuat) , Anda pasti ingin langsung masuk. Sementara itu, ketahuilah bahwa ini adalah salah satu cara untuk lakukanlah. Saya telah melihat peningkatan kinerja 8x saat menjalankan kode Python murni di bawah GraalVM . Itu cukup mengesankan!
Setiap perangkat di cluster menjalankan layanan web. Server menyiarkan pesan UDP dengan alamat IP dan port untuk perangkat apa pun untuk mendengarkan dan berkomunikasi dengan server untuk penemuan otomatis. Ini baru dari tahun-tahun sebelumnya di mana alamat IP server dimasukkan ke dalam variabel lingkungan. Alamat IP tidak berubah sehingga kami dapat mengkodekannya, tetapi ada dua masalah: Siapa pun yang mengerjakan ini perlu menjalankan sistem pengujian dengan desktop mereka dan simulasi Pi atau beberapa Pi di meja mereka, dan variabel lingkungan hilang setelah Anda sudo. Ini sebenarnya memecahkan banyak masalah! Setelah Pi mem-boot, ia menjalankan server webnya, mendengarkan pesan UDP, mendaftarkan alamat IP dan alamat MAC-nya dengan server, dan mendengarkan pekerjaan. Pada interval,
Setiap lima detik, setiap Pi mengirimkan semua datanya (CPU, memori, suhu, dll.) ke titik akhir REST pada Database Otonomi melalui dukungan ORDS asli. Dokumentasinya dapat ditemukan di sini . Saya menaruh beberapa kode di mana jika Pi gagal mengirim datanya, ia menunggu sedikit lebih lama di lain waktu, menskalakan hingga 60 detik. Ternyata itu adalah segunung data yang ditangani oleh Autonomous Database dengan mudah. Saya mencoba beberapa database lain yang tidak boleh disebutkan namanya dan katakan saja mereka tidak dapat menanganinya, terkadang mengakibatkan penundaan lebih dari lima detik.
Digital Twin dengan AR/VR — Visualisasikan Data Anda
Saya membuat model 3D Pi Cluster yang cukup detail yang dapat ditemukan di sini dan dibuka di program 3D favorit Anda. Pakar AR/VR dan cloud kami Wojciech Pluta , Victor Martin , Bogdan Farca , dan Stuart Coggins mulai bekerja membangun beberapa pengalaman AR dan VR yang menakjubkan. Mereka menyetel basis data, menulis aplikasi APEX, dan menjalankan socket.io untuk streaming. Mereka memanfaatkan cluster Kubernettes yang disebut OCI OKEsehingga pengalaman 3D dapat diskalakan tanpa terjatuh, yang berarti siapa pun dapat menempatkan Digital Twin dari Pi Cluster di ruang keluarga mereka. Kami memiliki iPad untuk AR dan mencetak kode QR sehingga iPad dapat melacak klaster dengan akurasi milimeter, memungkinkan peserta untuk melihat kejadian klaster secara interaktif. Tim juga membuat versi Meta VR, yang detailnya akan segera terungkap. Tidak ada cukup daya untuk menjalankan seluruh cluster di garasi saya, jadi kami akan mengintegrasikan ini dan mengujinya sebelum pintu dibuka di CloudWorld. Mungkin berhasil, mungkin jatuh. Apapun yang terjadi, itu akan menjadi cerita yang bagus! Saya akan menambahkan tautan di sini jika kami memiliki sesuatu yang ditulis di AR/VR Digital Twin.
Layanan OCI — Inti dari Setiap Proyek adalah Infrastruktur Cloud
Di garasi saya, Pi Cluster disiapkan sebagai server "di lokasi". Saya membuat subnet terisolasi di Ubiquity Dream Machine Pro saya, mengonfigurasi VPN situs-ke-situs ke OCI menggunakan Bastion , dan menggunakan kotak lompatan lokal yang memiliki dua antarmuka jaringan (satu untuk subnet Pi Cluster dan satu untuk Pi Cluster ) . Dengan demikian, Gugus Pi muncul ke dunia luar sebagai satu alamat IP. Muncul, pasang daya jaringan, dan Anda baik-baik saja. Saya berharap penyiapannya semudah itu dan saya tidak perlu menguji semuanya — memastikan kabel tidak keluar dari posisinya — tetapi anggap saja semudah itu karena kedengarannya lebih menyenangkan.
Kami tidak akan memiliki kendali atas jaringan di CloudWorld, jadi Pi Cluster adalah "perangkat tepi". Ini menggunakan layanan cloud seperti Services Gateway , Load Balancer , dan Manajemen Domain . Ya, kami memiliki domain. Saya akan membahasnya di bagian selanjutnya.
Jaringan terlihat seperti ini:
Jika Anda memiliki pertanyaan tentang hal ini, pergilah ke saluran Slack publik Oracle untuk pengembang. Ajukan pertanyaan apa pun yang Anda inginkan. Bagaimana mengaturnya, layanan apa yang digunakan. Anda akan menemukan jawaban Anda di sana!
IoT — Tugas Ringan Spesifik dengan Mikrokontroler Kecil dan Murah
Kami juga memiliki sepasang Arduino yang berjalan di cluster. Arduino pertama adalah Arduino Mega dengan HAT Ethernet. Kode asli dapat ditemukan di sini . Ini menjalankan layanan web dan menyalakan dua solenoida untuk akses jarak jauh ke reset fisik dan tombol daya di server. Saya telah mengubah perangkat lunak sedikit dibandingkan dengan repositori dan belum menerbitkannya, jadi saya membiarkan versi yang lebih lama ini. Versi yang belum saya publikasikan mendaftarkan dirinya sendiri dan menunggu perintah startup sederhana saat pengembang SSH masuk ke Bastion.
Arduino kedua adalah perangkat keras yang sama tetapi menjalankan server REST yang mendengarkan muatan JSON dan terhubung ke selusin NeoPixels dalam cahaya di bagian atas kotak polisi.
Warble — Bahasa Pemrograman Kustom yang Dirancang untuk Pi Cluster
Kami menghosting domainhttps://warble.withoracle.clouddi OCI, didukung oleh Domain Management , Load Balancer , dan Compute Instance . Instans komputasi menjalankan perangkat lunak yang sama yang berjalan di Pi Cluster: Wadah Docker dengan GraalPython dan layanan web. Ini belum cukup siap untuk prime time tetapi periksa kembali di sini atau di Twitter 18-20 Oktober karena akan tayang langsung selama CloudWorld, dan saya pikir ini akan sangat menyenangkan.
Kami telah membuat bahasa pemrograman yang dirancang untuk Twitter agar dijalankan di Gugus Pi yang disebut Warble . Warble bukanlah bahasa pemrograman berfitur lengkap dan saya mengambil banyak jalan pintas. Itu dibuat untuk menggunakan karakter sesedikit mungkin sehingga Anda dapat memposting Warble ke Twitter dan menjalankannya di Pi Cluster. Saya memiliki skrip Python yang berjalan di Instans Komputer menggunakan API Twitter untuk mencari tagar #pi . Jika karakter berikutnya adalah kurung kurawal buka dan karakter terakhir adalah kurung kurawal tutup, maka kita memiliki Warble dan disimpan ke dalam database. Misalnya:
> #pi{PRINT(“hello cluster”)}
< hello cluster
Bukankah keren melihat siapa yang dapat menghitung Pi hingga digit terbanyak di salah satu Kluster Raspberry Pi Terbesar di Dunia?
> #pi{PRINT(2*ROUND(ACOS(0.0),3))}
< 3.142
Twitter akan sangat menyenangkan, meskipun menghambat API dan inilah mengapa kami memiliki domain yang dihosting. Saya akan memberikan titik akhir REST untuk memposting Warbles. Mungkin seseorang akan mengetahui cara menghitung Pi dengan Bailey–Borwein–Plouffe_formula menggunakan Warble atau cara lain.
Saya tidak akan menulis tata bahasa sintaks tetapi saya akan memberikan beberapa contoh.
Warble mendukung variabel:
> #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
Selain itu, Anda dapat menyimpan nilai dan memuatnya kembali. Mereka khusus pengguna:
> #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)}}
<
Di Ubiquity Dream Machine Pro, dengan bantuan Tim Clegg , saya membuat subnet baru. Berikut garis besar langkah-langkah yang kami ikuti. Saya tidak akan memberikan tangkapan layar atau video tertentu karena opsi di Ubiquity dan Oracle Cloud akan berubah. Sebagai gantinya, berikut adalah beberapa sorotan tentang apa yang Anda butuhkan dan apa yang harus dilakukan:
Di bawah jaringan, buat jaringan baru dengan nama, saya memilih "pi".
ID VLAN: 3
Jenis Jaringan: Standar
Buat Nama Jaringan VPN Situs-ke-situs
: pivpn
Kunci yang Dibagikan Sebelumnya: *************************
Alamat Server: <Alamat IP Router> ( default seharusnya baik-baik saja)
Gateway/Subnet Jarak Jauh: 10.0.0.0/24
Alamat IP Jarak Jauh: <Alamat IP VPN jarak jauh>
Lanjutan:
Profil IPsec Manual:
Jarak Rute yang Disesuaikan: 30
Versi Pertukaran Kunci: IKEv1
Enkripsi: AES-256
Hash: SHA1
Grup IKE DH: 5 Grup
ESP DH: 5
Kerahasiaan Penerusan Sempurna: diaktifkan
Perutean Dinamis: diaktifkan
Saya membuat tiga aturan firewall:
1. blok pi 192.168.3.1 (gerbang)
Jenis: Tindakan Lokal LAN
: Sumber Jatuhkan
, Jenis Sumber:
Sumber Jaringan, Jaringan: Tujuan pi
, Jenis Sumber:
Tujuan Jaringan, Jaringan: Tujuan pi
, Jenis Jaringan: Alamat IP Gateway
2. Default terima ke pi
Jenis: LAN
Beraksi:
Sumber Terima, Jenis Sumber:
Sumber Jaringan, Jaringan: Tujuan Default
, Jenis Sumber:
Tujuan Jaringan, Jaringan: pi
3. blok pi ke Default
Jenis: LAN Keluar Tindakan: Sumber
Jatuhkan , Jenis Sumber: Tujuan Jaringan, Jaringan: Tujuan pi , Jenis Sumber: Sumber Jaringan, Jaringan: Default Lanjutan: Status Pemeriksaan Manual Pencocokan Baru Status Pencocokan Tidak Valid
4. Di OCI buka Networking and Site-to-Site VPN
Create IPSec Connection.
Beri nama.
Anda akan menginginkan ini untuk mendapatkan alamat IP publik Anda.
dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com
Anda harus membuat dua terowongan, jadi saya menyiapkan keduanya untuk mengarah ke VPN yang sama karena OCI memerlukan dua terowongan dan saya hanya membuka satu di jaringan saya. Anda akan menambahkan ini ke VPN.
5. Siapkan Gateway Perutean Dinamis
6. Siapkan VCN, tambahkan Aturan Masuk dengan CIDR yang merupakan subnet lokal Anda, misalnya milik saya adalah 192.168.3.0/24.
Masa depan
Setelah melalui langkah-langkah untuk DevNucleus di Oracle CloudWorld, Pi Cluster menuju ke Oracle Labs di mana… yah, bagian selanjutnya adalah sedikit rahasia untuk saat ini. Penggunaan potensial meliputi:
1. menjalankan tes tambahan untuk GraalVM dan Java
2. Proyek komputasi tepi
3. Robot & Pemrosesan Paralel (yaitu jaringan saraf)
5. Aktivitas yang disarankan oleh Anda, pengembang
Dengan Pi Day 2023 sudah dekat, Anda pasti ingin menantikan tahap evolusi berikutnya untuk teknologi yang luar biasa ini. Siapa tahu? Beberapa Pi bahkan dapat menemukan jalan keluar dari cluster dan ke tangan Anda.
Saya ingin berterima kasih kepada semua orang yang telah membantu proyek ini. Baca Sejarah Temporal Cluster Raspberry Pi Terbesar di Dunia untuk mengetahui bagaimana proyek luar biasa yang gila ini terjadi.

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































