V příštích několika týdnech zveřejním několik videí, ve kterých budu probírat výpočetní clustery s Raspberry Pi, a video + přepis zveřejním na svém blogu, abyste ho mohli sledovat, i když vás nebaví sedět u videa 🙂
Toto je výpočetní modul Raspberry Pi.
A tohle je stoh 7 výpočetních modulů Raspberry Pi.
Je to totéž co Raspberry Pi model B, ale odpadají všechny vstupně-výstupní porty, aby se dosáhlo flexibilnějšího tvaru, který je podle Rasbperry Pi Foundation „vhodný pro průmyslové aplikace“. V mém případě mě však zajímá jeho použití k sestavení clusteru Raspberry Pis.
Chystám se prozkoumat koncept clusterových výpočtů pomocí Raspberry Pis a jsem nadšený, že mám v držení clusterovou desku založenou na Raspberry-Pi, Turing Pi, která mění pravidla hry.
K Turing Pi se dostanu brzy, ale v tomto prvním díle jsem se chtěl věnovat tomu, proč rád používám Raspberry Pis pro clustery.
Ale nejprve, co je to cluster?
Cluster Computing
Mnoho lidí se snaží řešit složité problémy pomocí počítačů. Někdy dělají takové věci, jako je obsluha webové stránky pro obrovské množství návštěvníků. To vyžaduje velkou šířku pásma a spoustu „backendových“ počítačů, které zpracovávají každý z milionů požadavků. Někteří lidé, jako například meteorologové, potřebují zjistit výsledky miliard malých výpočtů.
Existují dva způsoby, jak tyto druhy operací zrychlit:
- Vertikálním škálováním, kdy máte jeden server a vložíte do něj rychlejší procesor, více paměti RAM a rychlejší připojení.
- Horizontálním škálováním, kdy úlohy rozdělíte a použijete více počítačů.
Především systémy jako superpočítače Cray dovedly vertikální škálování do extrému. Jeden obrovský počítač, který stál miliony dolarů, byl po určitou dobu nejrychlejším počítačem. Tento přístup má však určité limity a mít vše investováno do jednoho stroje znamená prostoje, když potřebuje údržbu, a omezené (často bolestivě drahé) upgrady.
Ve většině případů je cenově dostupnější – a někdy i jediný možný způsob – škálovat horizontálně, tedy pomocí mnoha počítačů zpracovávat velké výpočty nebo velký webový provoz.
Klastrování se stalo jednodušším s příchodem clusterů ve stylu Beowulf v 90. letech a novějšího softwaru, jako je Kubernetes, který bezproblémově distribuuje aplikace na mnoho počítačů, namísto ručního umisťování aplikací na různé počítače.
I s tímto softwarem existují dva velké problémy s horizontálním škálováním – zejména pokud máte omezený rozpočet:
- Každý počítač stojí trochu peněz a vyžaduje individuální napájení a síť. Pro několik počítačů to není velký problém, ale když začnete mít pět nebo více počítačů, je těžké udržet pořádek a chlad.
- Správa počítačů, neboli „uzlů“ v řeči clusterů, je snadná, když je jeden nebo dva. Ale při zvětšení na pět nebo deset i provádění jednoduchých věcí, jako je restartování serverů nebo spuštění nové úlohy, vyžaduje software, který vše koordinuje.
The Raspberry Pi Dramble
V roce 2015 jsem se rozhodl založit svůj první „bramble“. Bramble je cluster serverů Raspberry Pi. „Proč se tomu říká bramble?“ ptáte se možná? Inu, protože přírodnímu shluku malin, který byste mohli sníst, se říká „bramble“.
Začal jsem tedy budovat bramble pomocí softwaru Ansible, který slouží k instalaci společného softwarového zásobníku napříč servery pro provoz systému Drupal. Nastavil jsem Linux, Apache, MySQL a PHP, což je obecně známé jako stack ‚LAMP‘.
Protože na mém bramble běžel Drupal, vymyslel jsem portmanteau ‚dramble‘, a tak vzniklo Raspberry Pi Dramble.
První verze clusteru měla šest uzlů a měl jsem hromadu kabelů micro USB zapojených do napájecího adaptéru USB a hromadu ethernetových kabelů zapojených do osmiportového ethernetového přepínače.
Když vyšel Raspberry Pi model 3, zkrátil jsem to na 5 uzlů.
Poté, když byl představen Raspberry Pi Zero, který je velký jako žvýkačka, koupil jsem jich pět a vytvořil malinký cluster pomocí USB WiFi adaptérů, ale rychle jsem zjistil, že starý procesor v Zero je extrémně málo výkonný, a od tohoto clusteru jsem upustil.
V roce 2017 jsem se rozhodl začít používat Kubernetes pro správu Drupalu a stacku LAMP, i když jsem stále používal Ansible pro konfiguraci jednotlivých Pis a instalaci Kubernetes na ně.
A dnešní Dramble, který se skládá ze čtyř desek Raspberry Pi model 4, používá oficiální desku Power-over-Ethernet (PoE), což mi umožnilo upustit od změti napájecích kabelů USB, ale vyžaduje dražší přepínač PoE.
Dramble Pi však není jen vážný. Užil jsem si s ním trochu legrace, včetně natočení pocty starému filmu, který se mi líbil:
V průběhu celé této zkušenosti jsem zdokumentoval každý aspekt sestavení, včetně všech playbooků Ansible, jako open source projekt, na který je odkaz z pidramble.com, a mnoho dalších lidí tyto plány následovalo a sestavilo Pi Dramble na vlastní pěst!
Proč Raspberry Pi?“
Tímto chci říct, že jsem strávil spoustu času správou clusteru Raspberry Pis a první otázka, kterou mi obvykle kladou, zní: „Proč jste si pro svůj cluster vybrali právě Raspberry Pis?“
To je velmi dobrá otázka.
Jednotlivé Raspberry Pi není tak rychlé jako většina moderních počítačů. A má omezenou paměť RAM (i nejnovější model Pi 4 má nanejvýš 4 GB RAM). A není ani skvělý pro rychlý a spolehlivý přístup k diskům.
Je o něco úspornější a obvykle i energeticky úspornější postavit nebo koupit malý počítač NUC („Next Unit of Computing“), který má vyšší hrubý výkon procesoru, více paměti RAM, rychlý disk SSD a více možností rozšíření.
Je ale sestavení několika virtuálních počítačů pro simulaci clusteru na počítači NUC zábavné? Tedy ne tolik jako budování clusteru Raspberry Pis!
A správa „holých“ serverů namísto virtuálních strojů také vyžaduje větší disciplínu pro provisioning, síťování a orchestraci. Tyto tři dovednosti jsou v mnoha moderních IT zaměstnáních velmi užitečné!
Také zatímco můžete chtít optimalizovat čistě pro výkon, jsou situace, jako například při budování clusterů Kubernetes, kdy chcete optimalizovat pro počet jader procesoru. Pokud byste chtěli postavit jeden počítač s 32 jádry CPU, mohli byste zvážit AMD ThreadRipper 3970x, který má 32 jader. Problém je, že procesor stojí téměř 2 000 dolarů, a to je jen procesor – zbytek komponent počítače by vás celkem vyšel na více než 3 000 dolarů za tuto sestavu.
Pro Raspberry Pi má každá výpočetní deska 4jádrový procesor a sestavením 7 desek Pis získáte 28 jader. Téměř stejný počet jader, ale stojí celkem méně než 300 dolarů. I s přidanými náklady na Turing Pi a napájecí zdroj je to stejný počet jader CPU za 1/4 ceny!“
Ano, vím, že 1 jádro ThreadRipper ≠ 1 jádro Pi CM; ale v mnoha aplikacích K8s je jádro jako jádro, a čím více, tím lépe. Ne všechny operace jsou vázané na CPU a prospělo by jim mít 4-8x vyšší hrubou propustnost nebo mnoho dalších drobných vychytávek, které ThreadRipper nabízí (např. více cache).
Nakonec, jedna z nejdůležitějších lekcí, kterou jsem se naučil při práci s Arduiny a Raspberry Pis, je tato: práce s omezenými zdroji, jako je omezená RAM nebo pomalé IO, zvýrazní neefektivitu vašeho kódu způsobem, kterého byste si nikdy nevšimli, kdybyste vždy stavěli a pracovali na nejnovějším procesoru Core i9 nebo ThreadRipper s hromadou RAM a statisíci IOPS!
Pokud se vám nedaří něco dobře rozběhnout na Raspberry Pi, zvažte následující: mnoho chytrých telefonů a low-endových počítačů má podobná omezení a lidé používající tato zařízení by měli stejnou zkušenost.
Navíc i v rychlých instancích cloud computingu čas od času narazíte na úzká hrdla sítě a IO, a pokud vaše aplikace v těchto situacích selže, může vás čekat svět bolesti. Jejich zprovoznění na počítači Raspberry Pi vám pomůže tyto problémy rychle odhalit.
Proč Turing Pi?
Takže zpět k počítači Turing Pi: v čem je lepší než cluster standardních počítačů Raspberry Pis, jako je Pi Dramble?
No, přihlaste se k odběru mého kanálu YouTube – v příštím videu prozkoumám, v čem spočívá Turing Pi a jak nastavit nový cluster! Pokud se vám tento obsah líbil a chcete vidět další, zvažte, zda mě podpořit na GitHubu nebo Patreonu.