Będę publikował kilka filmów omawiających obliczenia klastrowe z Raspberry Pi w ciągu najbliższych kilku tygodni, a ja zamierzam opublikować wideo + transkrypt na moim blogu, więc można śledzić, nawet jeśli nie lubisz siedzieć przez wideo 🙂
To jest Raspberry Pi Compute Module.
A to jest stos 7 Raspberry Pi Compute Modules.
To jest to samo, co Raspberry Pi model B, ale porzuca wszystkie porty IO, aby bardziej elastyczny współczynnik kształtu, który Rasbperry Pi Foundation mówi, że jest „odpowiedni do zastosowań przemysłowych”. Ale w moim przypadku, jestem zainteresowany w użyciu go do budowania klastra Raspberry Pis.
Mam zamiar zbadać koncepcję obliczeń klastrowych przy użyciu Raspberry Pis, i jestem podekscytowany, aby być w posiadaniu gry-zmiana Raspberry-Pi oparte pokładzie klastra, Turing Pi.
Dojdę do Turing Pi wkrótce, ale w tym pierwszym odcinku, chciałem pokryć dlaczego kocham używać Raspberry Pis dla klastrów.
Ale po pierwsze, co to jest klaster?
Obliczanie klastrów
Wiele osób próbuje rozwiązać złożone problemy z komputerami. Czasami robią takie rzeczy, jak obsługa strony internetowej dla ogromnej liczby odwiedzających. Wymaga to dużej przepustowości i wielu komputerów 'backend’ do obsługi każdego z milionów żądań. Niektórzy ludzie, jak prognozujący pogodę, muszą znaleźć wyniki miliardów małych obliczeń.
Istnieją dwa sposoby na przyspieszenie tego rodzaju operacji:
- Poprzez skalowanie pionowe, gdzie masz pojedynczy serwer i umieszczasz w nim szybszy procesor, więcej pamięci RAM i szybsze połączenia.
- Poprzez skalowanie poziome, gdzie rozdzielasz zadania i używasz wielu komputerów.
Wcześniej systemy takie jak superkomputery Cray doprowadziły skalowanie pionowe do ekstremum. Jeden masywny komputer, który kosztował miliony dolarów, był przez pewien czas najszybszym komputerem. Ale to podejście ma pewne ograniczenia, a mając wszystko zainwestowane w jednej maszynie oznacza przestoje, gdy wymaga konserwacji, i ograniczone (często boleśnie drogie) aktualizacje.
W większości przypadków, to jest bardziej przystępne – a czasami, jedynym sposobem możliwe – skalować poziomo, przy użyciu wielu komputerów do obsługi dużych obliczeń lub dużo ruchu internetowego.
Klastrowanie stało się łatwiejsze wraz z pojawieniem się klastrów w stylu Beowulf w latach 90. i nowszego oprogramowania, takiego jak Kubernetes, które płynnie dystrybuuje aplikacje na wiele komputerów, zamiast ręcznego umieszczania aplikacji na różnych komputerach.
Nawet z tym oprogramowaniem istnieją dwa duże problemy ze skalowaniem poziomym – zwłaszcza jeśli masz ograniczony budżet:
- Każdy komputer kosztuje trochę pieniędzy i wymaga indywidualnego zasilania i sieci. Dla kilku komputerów nie jest to duży problem, ale kiedy zaczynasz mieć pięć lub więcej komputerów, trudno jest utrzymać porządek i chłód.
- Zarządzanie komputerami, lub „węzłami” w języku klastrów, jest łatwe, gdy jest ich jeden lub dwa. Ale skalowany do pięciu lub dziesięciu, nawet robi proste rzeczy, takie jak restartowanie serwerów lub kick off nowej pracy wymaga oprogramowania do koordynowania wszystko.
The Raspberry Pi Dramble
W 2015 roku, postanowiłem ustawić mój pierwszy „bramble”. Bramble to klaster serwerów Raspberry Pi. „Dlaczego to się nazywa bramble?” możecie zapytać? Cóż, ponieważ naturalne skupisko malin, które można zjeść nazywa się 'bramble’.
Zacząłem więc budować bramble używając oprogramowania zwanego Ansible, aby zainstalować wspólny stos oprogramowania na wszystkich serwerach, aby uruchomić Drupala. Skonfigurowałem Linuksa, Apache, MySQL i PHP, co jest powszechnie znane jako stos 'LAMP’.
Ponieważ moja bramka uruchomiła Drupala, wymyśliłem portmanteau 'dramble’, i tak narodziła się Raspberry Pi Dramble.
Pierwsza wersja klastra miała sześć węzłów, a ja miałem kilka kabli micro USB podłączonych do zasilacza USB, plus kilka kabli Ethernet podłączonych do 8 portowego przełącznika ethernetowego.
Kiedy Raspberry Pi model 3 wyszedł, I przyciął go w dół do 5 nodes.
Then, kiedy Raspberry Pi Zero został wprowadzony, który jest wielkości kij gumy balonowej, kupiłem pięć z nich i wykonane malutkie klaster za pomocą adapterów USB WiFi, ale zdał sobie sprawę szybko stary procesor na Zero był bardzo underpowered, i zrezygnowałem z tego klastra.
W 2017 roku zdecydowałem się zacząć używać Kubernetes do zarządzania Drupalem i stosem LAMP, choć nadal używałem Ansible do konfigurowania poszczególnych Pis i uzyskania Kubernetes zainstalowanego na nich.
And today’s Dramble, which is made up of four Raspberry Pi model 4 boards, uses the official Power-over-Ethernet (PoE) board, which allowed me to drop the tangle of USB power cables, but requires a more expensive PoE switch.
The Pi Dramble isn’t all serious, though. Miałem z nim trochę zabawy, w tym tworzenie hołdu dla starego filmu, który mi się podobał:
Przez całe to doświadczenie udokumentowałem każdy aspekt budowy, w tym wszystkie podręczniki Ansible playbooks, jako projekt open source, który jest połączony z pidramble.com, a wielu innych podążyło za tymi planami i zbudowało Pi Dramble na własną rękę!
Why Raspberry Pi?
To wszystko, aby powiedzieć, spędziłem dużo czasu zarządzania klastra Raspberry Pis, a pierwsze pytanie jestem zazwyczaj zadawane jest „dlaczego wybrałeś Raspberry Pis dla klastra?”
To bardzo dobre pytanie.
Pojedynczy Raspberry Pi nie jest tak szybki jak większość nowoczesnych komputerów. I ma ograniczoną ilość pamięci RAM (nawet najnowszy model Pi 4 ma, co najwyżej, 4 GB pamięci RAM). I to nie jest wielki dla szybkiego lub niezawodnego dostępu do dysku, albo.
Jest nieco bardziej opłacalne i zazwyczaj bardziej energooszczędne, aby zbudować lub kupić mały NUC („Next Unit of Computing”) maszyny, która ma więcej surowego wydajność procesora, więcej pamięci RAM, szybki dysk SSD, i więcej expansion capabilities.
Ale jest budowanie niektórych maszyn wirtualnych do symulacji klastra na NUC zabawy?
Powiedziałbym, „Nie”. Cóż, nie tak bardzo jak budowanie klastra Raspberry Pis!
A zarządzanie serwerami „bare metal” zamiast maszyn wirtualnych wymaga również więcej dyscypliny w zakresie dostarczania, sieci i orkiestracji. Te trzy umiejętności są bardzo pomocne w wielu nowoczesnych zawodach IT!
Ponadto, podczas gdy możesz chcieć zoptymalizować pod kątem czystej wydajności, zdarzają się sytuacje, jak podczas budowania klastrów Kubernetes, gdzie chcesz zoptymalizować pod kątem liczby rdzeni procesora. Jeśli chciałbyś zbudować pojedynczy komputer z 32 rdzeniami CPU, mógłbyś rozważyć AMD ThreadRipper 3970x, który ma 32 rdzenie. Problem w tym, że procesor kosztuje prawie 2000 dolarów, a to tylko procesor – reszta komponentów komputera wyniesie Cię ponad 3000 dolarów za ten zestaw.
W przypadku Raspberry Pi, każda płyta obliczeniowa ma 4-rdzeniowy procesor, a złożenie razem 7 komputerów Pis daje 28 rdzeni. Prawie taka sama liczba rdzeni, ale kosztuje mniej niż 300 dolarów ogółem. Nawet z dodatkowym kosztem Turing Pi i zasilacza, to ta sama liczba rdzeni CPU za 1/4 ceny!
Tak, wiem, że 1 rdzeń ThreadRipper ≠ 1 rdzeń Pi CM; ale w wielu aplikacjach K8s, rdzeń to rdzeń, a im więcej tym lepiej. Nie wszystkie operacje są związane z procesorem i skorzystałyby z 4-8x szybszej surowej przepustowości lub wielu innych małych przyjemności, które oferuje ThreadRipper (jak więcej pamięci podręcznej).
Na koniec, jedną z najważniejszych lekcji, których uczę się pracując z Arduinos i Raspberry Pis jest to: praca z ograniczeniami zasobów, takimi jak ograniczona pamięć RAM lub powolne IO podkreśla nieefektywności w kodzie, w sposób, którego nigdy nie zauważysz, jeśli zawsze budujesz i pracujesz na najnowszym Core i9 lub ThreadRipper CPU z ogromnymi ilościami pamięci RAM i 100s tysięcy IOPS!
Jeśli nie można uzyskać coś do uruchomienia dobrze na Raspberry Pi, rozważ to: wiele smartfonów i komputerów low-end mają podobne ograniczenia, a ludzie korzystający z tych urządzeń będzie miał ten sam rodzaj doświadczenia.
Dodatkowo, nawet na szybkich instancjach cloud computing, będziesz natknąć się na sieci i IO wąskie gardła od czasu do czasu, a jeśli aplikacja nie powiedzie się w tych sytuacjach, może być w świecie bólu. Uruchomienie ich na Raspberry Pi może pomóc szybko zidentyfikować te problemy.
Why Turing Pi?
Więc, wracając do Turing Pi: co sprawia, że jest to lepsze niż klaster standardowych Raspberry Pis, takich jak Pi Dramble?
Dobrze, subskrybuj mój kanał YouTube – w moim następnym filmie zbadam, co sprawia, że Turing Pi tick i jak skonfigurować nowy klaster! Jeśli podobała Ci się ta zawartość i chcesz zobaczyć więcej, rozważ wsparcie mnie na GitHub lub Patreon.