A következő hetekben néhány videót fogok közzétenni a Raspberry Pi klaszteres számításairól, és a videót + átiratot a blogomban fogom közzétenni, így akkor is követheted, ha nem szeretsz végigülni egy videót 🙂
Ez egy Raspberry Pi Compute modul.
Az pedig egy 7 darab Raspberry Pi Compute Module-ból álló stack.
Ez ugyanaz, mint a Raspberry Pi B modell, de elhagyja az összes IO portot, hogy rugalmasabb formájú legyen, ami a Rasbperry Pi Foundation szerint “alkalmas ipari alkalmazásokhoz”. Az én esetemben azonban egy Raspberry Piből álló klaszter építésére szeretném használni.
A Raspberry Pik segítségével fogom felfedezni a klaszteres számítástechnika koncepcióját, és izgatottan várom, hogy a Turing Pi, a Raspberry-Pi alapú klaszterlap birtokába kerüljön.
Hamarosan rátérek a Turing Pi-re, de ebben az első epizódban arról akartam beszélni, hogy miért szeretem a Raspberry Pi-ket klaszterekhez használni.
De először is, mi az a klaszter?
Klaszterszámítás
Egy csomó ember próbál komplex problémákat megoldani számítógépekkel. Néha olyan dolgokat csinálnak, mint például egy weboldal kiszolgálása hatalmas mennyiségű látogatónak. Ehhez sok sávszélességre és sok “backend” számítógépre van szükség, hogy a több millió kérés mindegyikét kezeljék. Vannak emberek, például az időjárás-előrejelzők, akiknek több milliárd apró számítás eredményét kell megtalálniuk.
Az ilyen jellegű műveletek felgyorsításának két módja van:
- Vertikális skálázással, ahol egyetlen szerver van, és gyorsabb CPU-t, több RAM-ot és gyorsabb kapcsolatot teszünk bele.
- Horizontális skálázással, ahol a feladatokat felosztjuk, és több számítógépet használunk.
Egykor a Cray szuperszámítógépekhez hasonló rendszerek a vertikális skálázást a végletekig vitték. Egy hatalmas, dollármilliókba kerülő számítógép egy ideig a leggyorsabb számítógép volt. Ennek a megközelítésnek azonban vannak korlátai, és ha mindent egyetlen gépbe fektetünk be, az állásidőt jelent, amikor karbantartásra van szükség, és korlátozott (gyakran fájdalmasan drága) frissítéseket.
A legtöbb esetben megfizethetőbb – és néha az egyetlen lehetséges megoldás – a horizontális skálázás, sok számítógép használata a nagy számítások vagy a nagy internetes forgalom kezelésére.
A klaszterezés könnyebbé vált a Beowulf-stílusú fürtök megjelenésével a 90-es években és az olyan újabb szoftverekkel, mint a Kubernetes, amely zökkenőmentesen osztja el az alkalmazásokat sok számítógép között, ahelyett, hogy manuálisan helyezné el az alkalmazásokat a különböző számítógépeken.
Még ezzel a szoftverrel is két nagy probléma van a horizontális skálázással – különösen, ha kevés pénzből gazdálkodunk:
- Minden számítógép egy kis pénzbe kerül, és egyedi áramellátást és hálózatot igényel. Néhány számítógép esetében ez nem jelent nagy problémát, de amikor már öt vagy több számítógépünk van, nehéz rendben és hűvösen tartani a dolgokat.
- A számítógépek, vagy a klaszternyelven “csomópontok” kezelése egyszerű, ha egy vagy kettő van. De ötre vagy tízre növelve még az olyan egyszerű dolgok elvégzéséhez is, mint a szerverek újraindítása vagy egy új munka elindítása, szoftverre van szükség, hogy mindent koordinálni lehessen.
A Raspberry Pi Dramble
2015-ben úgy döntöttem, hogy felállítom az első “bramble”-t. A bramble egy Raspberry Pi szerverekből álló fürt. “Miért hívják bramble-nek?” – kérdezheted? Nos, mert egy természetes málnafürtöt, amelyet meg lehet enni, “bramble”-nek hívnak.”
Szóval elkezdtem egy bramble-t építeni az Ansible nevű szoftver segítségével, hogy egy közös szoftvercsomagot telepítsek a szerverekre a Drupal futtatásához. Beállítottam a Linuxot, az Apache-ot, a MySQL-t és a PHP-t, amit általában “LAMP” veremként ismernek.
Mivel a bramble-omban Drupal futott, kitaláltam a “dramble” szóösszetételt, és így született meg a Raspberry Pi Dramble.
A fürt első verziója hat csomópontból állt, és egy csomó mikro-USB-kábelt dugtam egy USB-s hálózati adapterbe, valamint egy csomó Ethernet-kábelt egy 8 portos ethernet-kapcsolóba.
Amikor megjelent a Raspberry Pi 3-as modell, lecsökkentettem 5 csomópontra.
Aztán, amikor megjelent a Raspberry Pi Zero, ami akkora, mint egy rágógumi, vettem belőle ötöt, és készítettem egy apró fürtöt USB-s WiFi adapterek segítségével, de hamar rájöttem, hogy a Zero régi processzora rendkívül alulteljesít, és feladtam a fürtöt.
2017-ben úgy döntöttem, hogy elkezdem használni a Kubernetes-t a Drupal és a LAMP stack kezelésére, bár továbbra is az Ansible-t használtam az egyes Pisek konfigurálásához és a Kubernetes telepítéséhez.
A mai Dramble, amely négy Raspberry Pi Model 4 lapból áll, a hivatalos Power-over-Ethernet (PoE) lapot használja, ami lehetővé tette számomra, hogy elhagyjam az USB tápkábelek kuszaságát, de egy drágább PoE kapcsolót igényel.
A Pi Dramble azonban nem csak komoly. Jól szórakoztam vele, többek között egy régi, általam kedvelt film előtt tisztelegtem:
Az egész tapasztalat során dokumentáltam az építés minden aspektusát, beleértve az összes Ansible playbookot, mint nyílt forráskódú projektet, amely a pidramble.com oldalról van linkelve, és sokan mások is követték ezeket a terveket, és saját maguk építették meg a Pi Dramble-t!
Miért Raspberry Pi?
Ezzel csak annyit akarok mondani, hogy sok időt töltöttem Raspberry Pikből álló fürtök kezelésével, és az első kérdés, amit általában feltesznek nekem, az, hogy “miért választottál Raspberry Piket a fürtödhöz?”
Ez nagyon jó kérdés.
Egy egyedi Raspberry Pi nem olyan gyors, mint a legtöbb modern számítógép. És korlátozott RAM-mal rendelkezik (még a legújabb Pi 4-es modell is legfeljebb 4 GB RAM-mal rendelkezik). És a gyors vagy megbízható lemezhozzáférésre sem jó.
Egy kicsit költséghatékonyabb és általában energiatakarékosabb egy kis NUC (“Next Unit of Computing”) gépet építeni vagy vásárolni, amely több nyers CPU-teljesítménnyel, több RAM-mal, gyors SSD-vel és több bővítési lehetőséggel rendelkezik.
De szórakoztató-e néhány VM-et építeni egy NUC-on egy fürt szimulálására?
Azt mondanám, “nem”. Nos, nem annyira, mint egy Raspberry Piből álló fürt építése!
És a virtuális gépek helyett a “csupasz fém” szerverek kezelése is több fegyelmet igényel a rendelkezésre bocsátás, a hálózatépítés és az orchestrálás terén. Ez a három készség nagyon hasznos sok modern informatikai munkakörben!
Az is előfordulhat, hogy a tiszta teljesítményre akarsz optimalizálni, de vannak olyan esetek, például Kubernetes-klaszterek építésénél, amikor a CPU-magok számára akarsz optimalizálni. Ha egyetlen számítógépet szeretne építeni 32 CPU-maggal, akkor érdemes megfontolni az AMD ThreadRipper 3970x-et, amely 32 maggal rendelkezik. A probléma az, hogy a processzor közel 2000 dollárba kerül, és ez csak a processzor – a számítógép többi összetevője összesen több mint 3000 dollárba kerülne ezért a berendezésért.
A Raspberry Pi esetében minden egyes számítási kártya 4 magos CPU-val rendelkezik, és 7 Pi-vel együtt 28 magot kapunk. Majdnem ugyanannyi mag, de kevesebb mint 300 dollárba kerül összesen. Még a Turing Pi és a tápegység többletköltségeivel együtt is ugyanannyi CPU-magot kapunk 1/4-ért!
Igen, tudom, hogy 1 ThreadRipper mag ≠ 1 Pi CM mag; de sok K8s alkalmazásban a mag az mag, és minél több, annál jobb. Nem minden művelet CPU-függő, és előnyös lenne a 4-8x gyorsabb nyers átviteli sebesség, vagy a sok más apró finomság, amit a ThreadRipper kínál (pl. több cache).
Végezetül, az egyik legfontosabb lecke, amit az Arduinókkal és Raspberry Pi-vel dolgozva megtanultam, ez: az erőforrás-korlátozásokkal, például a korlátozott RAM-mal vagy a lassú IO-val való munka rávilágít a kódod hatékonyságának hiányosságaira, olyan módon, amit soha nem veszel észre, ha mindig a legújabb Core i9 vagy ThreadRipper CPU-t építed és dolgozol, rengeteg RAM-mal és több százezer IOPS-mal!
Ha valamit nem tudsz jól futtatni egy Raspberry Pi-n, gondolj erre: sok okostelefon és alacsony kategóriájú számítógép hasonló korlátozásokkal rendelkezik, és az ezeket az eszközöket használó emberek ugyanilyen tapasztalatokkal szembesülnének.
Emellett még a gyors felhőalapú számítástechnikai példányokon is időről időre hálózati és IO szűk keresztmetszetekbe ütközöl, és ha az alkalmazásod ilyen helyzetekben meghibásodik, nagy bajba kerülhetsz. Ha egy Raspberry Pi-n futtatod őket, akkor gyorsan felismerheted ezeket a problémákat.
Miért a Turing Pi?
Szóval, visszatérve a Turing Pihez: mitől jobb ez, mint egy hagyományos Raspberry Pi-ből álló fürt, például a Pi Dramble?
Nos, iratkozz fel a YouTube csatornámra – a következő videómban feltárom, mitől működik a Turing Pi, és hogyan állíthatsz fel egy új fürtöt! Ha tetszett ez a tartalom, és szeretnél még többet látni, fontold meg, hogy támogatsz engem a GitHubon vagy a Patreonon.