Mini ITX Cluster Turing Pi 2 cu 32 GB RAM

Mini ITX Cluster Turing Pi 2 cu 32 GB RAM

Salutări comunității Habr! Am scris recent despre prima noastră versiune a plăcii de cluster [V1]. Și astăzi vreau să vă spun cum am lucrat la versiune Turing V2 cu 32 GB memorie cu acces aleator.

Suntem pasionați de mini servere care pot fi folosite atât pentru dezvoltare locală, cât și pentru găzduire locală. Spre deosebire de computerele desktop sau laptopurile, serverele noastre sunt proiectate să funcționeze 24/7; ele pot fi conectate rapid la o federație, de exemplu, erau 4 procesoare într-un cluster, iar după 5 minute erau 16 procesoare (fără echipamente de rețea suplimentare) și toate acestea într-un factor de formă compact, silentios și eficient din punct de vedere energetic.

Arhitectura serverelor noastre se bazează pe principiul construcției cluster, adică. Facem plăci cluster care conectează mai multe module de calcul (procesoare) folosind o rețea ethernet de pe placă. Pentru a simplifica lucrurile, încă nu ne facem propriile module de calcul, ci utilizăm module de calcul Raspberry Pi și speram cu adevărat la noul modul CM4. Dar totul a mers împotriva planurilor cu noul lor factor de formă și cred că mulți sunt dezamăgiți.

Mai jos este cum am trecut de la V1 la V2 și cum a trebuit să facem față noului factor de formă al Raspberry Pi CM4.

Deci, după crearea unui cluster cu 7 noduri, întrebările sunt: ​​ce urmează? Cum să crești valoarea unui produs? 8, 10 sau 16 noduri? Ce producători de module? Gândindu-ne la produs în ansamblu, ne-am dat seama că principalul lucru aici nu este numărul de noduri sau cine este producătorul, ci însăși esența clusterelor ca bloc de construcție. Trebuie să căutăm blocul minim de construcție care

Prima, va fi un cluster și, în același timp, va avea capacitatea de a conecta discuri și carduri de expansiune. Unitatea de cluster trebuie să fie un nod de bază autosuficient, cu capabilități largi de extindere.

Doilea, astfel încât blocurile de cluster minime să poată fi conectate între ele prin construirea de clustere mai mari și astfel încât acest lucru să fie eficient în ceea ce privește bugetul și viteza de scalare. Viteza de scalare ar trebui să fie mai mare decât conectarea computerelor obișnuite la o rețea și mult mai ieftină decât echipamentul server.

treilea, unitățile de cluster minime trebuie să fie destul de compacte, mobile, eficiente din punct de vedere energetic, rentabile și să nu solicite condițiile de funcționare. Aceasta este una dintre diferențele cheie față de rafturile de server și tot ceea ce este legat de acestea.

Am început prin a determina numărul de noduri.

Numărul de noduri

Folosind judecăți logice simple, ne-am dat seama că 4 noduri sunt cea mai bună opțiune pentru un bloc minim de cluster. 1 nod nu este un cluster, 2 noduri nu sunt suficiente (1 master 1 worker, nu există posibilitatea de scalare în cadrul unui bloc, mai ales pentru opțiuni eterogene), 3 noduri arată ok, dar nu un multiplu de puteri de 2 și scalare în cadrul un bloc este limitat, 6 noduri vin la un preț aproape ca 7 noduri (din experiența noastră acesta este deja un cost ridicat), 8 este mult, nu se încadrează în factorul de formă mini ITX și o soluție și mai scumpă pentru PoC.

Considerăm că patru noduri per bloc sunt media de aur:

  • mai puține materiale pe placă cluster, prin urmare producție mai ieftină
  • divizibil cu 4, doar 4 blocuri dau 16 procesoare fizice
  • schema stabila 1 maestru si 3 muncitori
  • variații mai eterogene, module de calcul general + calcul accelerat
  • factor de formă mini ITX cu unități SSD și plăci de expansiune

Module de calcul

A doua versiune se bazează pe CM4, ne-am gândit că va fi lansată în format SODIMM. Dar…
Am decis să facem o placă fiică SODIMM și să asamblam CM4 direct în module, astfel încât utilizatorii să nu se gândească la CM4.

Mini ITX Cluster Turing Pi 2 cu 32 GB RAM
Modulul de calcul Turing Pi care acceptă Raspberry Pi CM4

În general, în căutarea modulelor, s-a deschis o întreagă piață de module de calcul, de la module mici cu 128 MB RAM până la 8 GB RAM. În față sunt modulele cu 16 GB RAM sau mai mult. Pentru aplicațiile de găzduire edge bazate pe tehnologii native cloud, 1 GB RAM nu mai este suficient, iar apariția recentă a modulelor cu 2, 4 și chiar 8 GB RAM oferă un loc bun de creștere. Am luat în considerare chiar și opțiuni cu module FPGA pentru aplicațiile de învățare automată, dar suportul acestora a fost amânat deoarece ecosistemul software nu a fost dezvoltat. În timp ce studiam piața modulelor, am venit cu ideea de a crea o interfață universală pentru module, iar în V2 începem să unificăm interfața modulelor de calcul. Acest lucru va permite proprietarilor versiunii V2 să conecteze module de la alți producători și să le amestece pentru sarcini specifice.

V2 acceptă întreaga linie de module de calcul Raspberry Pi 4 (CM4), inclusiv versiuni Lite și module cu 8 GB RAM

Mini ITX Cluster Turing Pi 2 cu 32 GB RAM

periferie

După ce am determinat vânzătorul modulelor și numărul de noduri, am abordat magistrala PCI pe care se află perifericele. Busul PCI este un standard pentru dispozitivele periferice și se găsește în aproape toate modulele de calcul. Avem mai multe noduri și, în mod ideal, fiecare nod poate partaja dispozitive PCI în modul de solicitare competitivă. De exemplu, dacă acesta este un disc conectat la o magistrală, atunci acesta este disponibil pentru toate nodurile. Am început să căutăm switch-uri PCI cu suport multigazdă și am constatat că niciunul dintre ele nu satisface cerințele noastre. Toate aceste soluții au fost limitate în principal la 1 gazdă sau mai multe gazde, dar fără un mod de solicitări concurente către punctele finale. A doua problemă este costul ridicat de 50 USD sau mai mult pe cip. În V2, am decis să amânăm experimentele cu switch-uri PCI (vom reveni la ele mai târziu pe măsură ce ne dezvoltăm) și am luat calea atribuirii unui rol pentru fiecare nod: primele două noduri au expus portul mini PCI Express per nod, al treilea nod expus Controler SATA cu 2 porturi de 6 Gbps. Pentru a accesa discuri de la alte noduri, puteți utiliza un sistem de fișiere de rețea în cadrul clusterului. De ce nu?

Privire pe furiș

Am decis să împărtășim câteva schițe ale modului în care blocul de cluster minimal a evoluat de-a lungul timpului prin discuții și reflecție.

Mini ITX Cluster Turing Pi 2 cu 32 GB RAMMini ITX Cluster Turing Pi 2 cu 32 GB RAMMini ITX Cluster Turing Pi 2 cu 32 GB RAM

Ca rezultat, am ajuns la o unitate de cluster cu 4 noduri de 260 de pini, 2 porturi mini PCIe (Gen 2), 2 porturi SATA (Gen 3). Placa are un comutator administrat Layer-2 cu suport VLAN. Primul nod are un port mini PCIe în care puteți instala o placă de rețea și puteți obține un alt port Ethernet sau un modem 5G și puteți transforma primul nod într-un router pentru o rețea pe un cluster și porturi Ethernet.

Mini ITX Cluster Turing Pi 2 cu 32 GB RAM

Magistrala cluster are mai multe funcții, inclusiv capacitatea de a flash module direct prin toate sloturile și, desigur, conectori FAN de pe fiecare nod cu control al vitezei.

cerere

Infrastructură Edge pentru aplicații și servicii auto-găzduite

Am proiectat V2 cu scopul de a-l folosi ca element de bază minim pentru infrastructura edge de consum/comercial. Cu V2, este ieftin să începeți o dovadă a conceptului și să scalați pe măsură ce creșteți, migrând treptat aplicațiile care au un sens mai economic și mai practic să găzduiți pe margine. Blocurile de clustere pot fi conectate împreună pentru a construi clustere mai mari. Acest lucru se poate face treptat, fără riscuri speciale de stabilit
proceselor. Astăzi există un număr mare de aplicații pentru afaceri, care poate fi găzduit local.

Stație de lucru ARM

Cu până la 32 GB RAM per cluster, primul nod poate fi utilizat pentru versiunea desktop a sistemului de operare (de exemplu, Ubuntu Desktop 20.04 LTS) și celelalte 3 noduri pentru sarcini de compilare, testare și depanare și dezvoltarea cloud native. soluții pentru clustere ARM. Ca nod pentru CI/CD pe infrastructura periferică ARM în producție.

Clusterul Turing V2 cu module CM4 este aproape identic ca arhitectură (diferența este în versiunile minore de ARMv8) cu clusterul bazat pe instanțe AWS Graviton. Procesorul modulului CM4 utilizează arhitectura ARMv8; puteți colecta imagini și aplicații pentru instanțele AWS Graviton 1 și 2, despre care se știe că sunt mult mai ieftine decât instanțele x86.

Sursa: www.habr.com