În următoarele săptămâni voi posta câteva videoclipuri în care voi discuta despre calculul în clustere cu Raspberry Pi și voi posta videoclipul + transcrierea pe blogul meu, astfel încât să puteți urmări chiar dacă nu vă place să stați în fața unui videoclip 🙂

Acesta este un Raspberry Pi Compute Module.

Și aceasta este o stivă de 7 Raspberry Pi Compute Modules.

Este același lucru ca un Raspberry Pi model B, dar renunță la toate porturile IO pentru a obține un factor de formă mai flexibil, despre care Fundația Rasbperry Pi spune că este „potrivit pentru aplicații industriale”. Dar, în cazul meu, sunt interesat să o folosesc pentru a construi un cluster de Raspberry Pis.

Vreau să explorez conceptul de calcul în cluster folosind Raspberry Pis și sunt încântat să fiu în posesia unei plăci de cluster bazate pe Raspberry-Pi, Turing Pi, care schimbă jocul.

În curând voi ajunge la Turing Pi, dar în acest prim episod, am vrut să abordez de ce îmi place să folosesc Raspberry Pis pentru clustere.

Dar, mai întâi, ce este un cluster?

Cluarea în clustere

Mulți oameni încearcă să rezolve probleme complexe cu ajutorul calculatoarelor. Uneori ei fac lucruri cum ar fi să servească o pagină web unui număr mare de vizitatori. Acest lucru necesită o mare lățime de bandă și o mulțime de calculatoare „backend” pentru a gestiona fiecare dintre milioanele de cereri. Unii oameni, cum ar fi meteorologii, trebuie să găsească rezultatele a miliarde de calcule mici.

Există două modalități de a accelera aceste tipuri de operațiuni:

  1. Prin scalare pe verticală, unde aveți un singur server și puneți un CPU mai rapid, mai multă memorie RAM și conexiuni mai rapide.
  2. Prin scalare pe orizontală, unde împărțiți sarcinile și folosiți mai multe calculatoare.

La început, sisteme precum supercalculatoarele Cray au dus scalarea pe verticală la extrem. Un calculator masiv care a costat milioane de dolari a fost cel mai rapid calculator pentru o perioadă de timp. Dar această abordare are unele limite, iar faptul de a avea totul investit într-o singură mașină înseamnă timp de nefuncționare atunci când are nevoie de întreținere și actualizări limitate (adesea dureros de costisitoare).

În cele mai multe cazuri, este mai accesibil – și uneori, singura modalitate posibilă – să se scaleze pe orizontală, folosind mai multe calculatoare pentru a gestiona calcule mari sau mult trafic web.

Clusterizarea a devenit mai ușoară odată cu apariția clusterelor de tip Beowulf în anii ’90 și a unui software mai nou, cum ar fi Kubernetes, care distribuie fără probleme aplicațiile pe mai multe computere, în loc să plaseze manual aplicațiile pe diferite computere.

Chiar și cu acest software, există două mari probleme cu scalarea pe orizontală – mai ales dacă aveți un buget limitat:

  1. Care calculator costă ceva bani și necesită putere și rețea individuală. Pentru câteva calculatoare, aceasta nu este o mare problemă, dar când începeți să aveți cinci sau mai multe calculatoare, este greu să păstrați lucrurile ordonate și răcoroase.
  2. Gestionarea calculatoarelor, sau a „nodurilor” în limbajul de cluster, este ușoară atunci când sunt unul sau două. Dar la scară de cinci sau zece, chiar și pentru a face lucruri simple, cum ar fi repornirea serverelor sau demararea unui nou loc de muncă, este nevoie de un software care să coordoneze totul.

The Raspberry Pi Dramble

În 2015, am decis să înființez primul meu ‘bramble’. Un bramble este un cluster de servere Raspberry Pi. „De ce se numește bramble?”, ați putea întreba? Ei bine, pentru că un cluster natural de zmeură pe care ai putea să îl mănânci se numește „bramble”.

Așa că am început să construiesc un bramble folosind un software numit Ansible pentru a instala o stivă comună de software pe servere pentru a rula Drupal. Am configurat Linux, Apache, MySQL și PHP, care este cunoscut în mod obișnuit sub numele de stiva ‘LAMP’.

Din moment ce bramble-ul meu a rulat Drupal, am inventat portmanteau ‘dramble’, și astfel s-a născut Raspberry Pi Dramble.

Prima versiune a clusterului avea șase noduri, iar eu aveam o grămadă de cabluri micro USB conectate la un adaptor de alimentare USB, plus o grămadă de cabluri Ethernet conectate la un switch ethernet cu 8 porturi.

Când a apărut modelul Raspberry Pi 3, l-am redus la 5 noduri.

Apoi, când a fost introdus Raspberry Pi Zero, care este de mărimea unui baton de gumă de mestecat, am cumpărat cinci dintre ele și am făcut un cluster micuț folosind adaptoare WiFi USB, dar mi-am dat seama rapid că vechiul procesor de pe Zero era extrem de slab alimentat și am renunțat la acel cluster.

În 2017, am decis să încep să folosesc Kubernetes pentru a gestiona Drupal și stiva LAMP, deși am folosit în continuare Ansible pentru a configura Pis-urile individuale și pentru a obține Kubernetes instalat pe ele.

Și Dramble-ul de astăzi, care este alcătuit din patru plăci Raspberry Pi model 4, folosește placa oficială Power-over-Ethernet (PoE), care mi-a permis să renunț la încâlceala de cabluri de alimentare USB, dar care necesită un comutator PoE mai scump.

Dramble-ul Pi nu este, totuși, numai serios. M-am distrat puțin cu el, inclusiv făcând un omagiu unui film vechi care mi-a plăcut:

În toată această experiență, am documentat fiecare aspect al construcției, inclusiv toate playbook-urile Ansible, ca un proiect open source care este legat de pidramble.com, iar mulți alții au urmat aceste planuri și au construit Pi Dramble pe cont propriu!

De ce Raspberry Pi?

Acesta este tot ce vreau să spun, am petrecut mult timp gestionând un cluster de Raspberry Pis, iar prima întrebare care mi se pune de obicei este „de ce ați ales Raspberry Pis pentru clusterul dumneavoastră?”

Este o întrebare foarte bună.

Un Raspberry Pi individual nu este la fel de rapid ca majoritatea computerelor moderne. Și are o memorie RAM limitată (chiar și cel mai recent Pi model 4 are, cel mult, 4 GB de RAM). Și nu este grozav nici pentru accesarea rapidă sau fiabilă a discurilor.

Este puțin mai rentabil și, de obicei, mai eficient din punct de vedere energetic să construiești sau să cumperi o mașină mică NUC („Next Unit of Computing”) care are mai multă performanță brută a procesorului, mai multă memorie RAM, un SSD rapid și mai multe capacități de extindere.

Dar este distractiv să construiești câteva VM-uri pentru a simula un cluster pe un NUC?

Am spune că „Nu”. Ei bine, nu la fel de mult ca și construirea unui cluster de Raspberry Pis!

Și gestionarea serverelor „bare metal” în loc de mașini virtuale necesită, de asemenea, mai multă disciplină pentru provizionare, rețea și orchestrare. Aceste trei abilități sunt foarte utile în multe locuri de muncă IT moderne!

De asemenea, în timp ce este posibil să doriți să optimizați pentru performanța pură, există momente, cum ar fi atunci când construiți clustere Kubernetes, în care doriți să optimizați pentru numărul de nuclee CPU. Dacă ați dori să construiți un singur computer cu 32 de nuclee CPU, ați putea lua în considerare AMD ThreadRipper 3970x, care are 32 de nuclee. Problema este că procesorul costă aproape 2.000 de dolari, iar acesta este doar procesorul – restul componentelor calculatorului v-ar face să depășiți 3.000 de dolari în total pentru această platformă.

Pentru Raspberry Pi, fiecare placă de calcul are un procesor cu 4 nuclee, iar adunarea a 7 Pis vă aduce 28 de nuclee. Aproape același număr de nuclee, dar costă mai puțin de 300 de dolari în total. Chiar și cu costul suplimentar al unui Turing Pi și al unei surse de alimentare, acesta este același număr de nuclee CPU pentru 1/4 din cost!

Da, știu că 1 nucleu ThreadRipper ≠ 1 nucleu Pi CM; dar în multe aplicații K8s, un nucleu este un nucleu, și cu cât mai multe cu atât mai bine. Nu toate operațiunile sunt legate de CPU și ar beneficia de un debit brut de 4-8x mai rapid, sau de multe alte mici facilități pe care le oferă ThreadRipper (cum ar fi mai multă memorie cache).

În cele din urmă, una dintre cele mai importante lecții pe care le-am învățat lucrând cu Arduinos și Raspberry Pis este aceasta: lucrul cu constrângeri de resurse, cum ar fi o memorie RAM limitată sau un IO lent, evidențiază ineficiențele din codul dumneavoastră, într-un mod pe care nu l-ați observa niciodată dacă ați construi și lucra întotdeauna pe cel mai recent procesor Core i9 sau ThreadRipper cu o grămadă de memorie RAM și 100 de mii de IOPS!

Dacă nu reușiți să faceți ceva să funcționeze bine pe un Raspberry Pi, luați în considerare acest lucru: multe smartphone-uri și computere low-end au constrângeri similare, iar oamenii care folosesc aceste dispozitive ar avea același tip de experiență.

În plus, chiar și pe instanțe rapide de cloud computing, veți întâlni din când în când blocaje de rețea și IO, iar dacă aplicația dvs. eșuează în aceste situații, ați putea avea parte de o lume de durere. Făcându-le să ruleze pe un Raspberry Pi vă poate ajuta să identificați rapid aceste probleme.

De ce Turing Pi?

Deci, revenind la Turing Pi: ce îl face mai bun decât un cluster de Raspberry Pis standard, cum ar fi Pi Dramble?

Bine, abonați-vă la canalul meu YouTube – voi explora ce face Turing Pi să funcționeze și cum să configurați un nou cluster în următorul meu videoclip! Dacă v-a plăcut acest conținut și doriți să vedeți mai mult, luați în considerare posibilitatea de a mă susține pe GitHub sau Patreon.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.