Mini ITX Cluster Turing Pi 2 med 32 GB RAM

Mini ITX Cluster Turing Pi 2 med 32 GB RAM

Hälsningar till Habr-gemenskapen! Jag skrev nyligen om vår första version av klusterbräda [V1]. Och idag vill jag berätta hur vi arbetade med versionen Turing V2 med 32 GB slumpmässigt åtkomstminne.

Vi är förtjusta i miniservrar som kan användas för både lokal utveckling och lokal hosting. Till skillnad från stationära datorer eller bärbara datorer är våra servrar designade för att fungera 24/7, de kan snabbt federeras, till exempel fanns det 4 processorer i ett kluster, och efter 5 minuter fanns det 16 processorer (ingen extra nätverksutrustning) och allt detta i en kompakt formfaktor tyst och energieffektiv.

Arkitekturen på våra servrar bygger på klusterprincipen för konstruktion, d.v.s. vi gör klusterkort som med hjälp av Ethernet-nätverket på kortet kopplar ihop flera datormoduler (processorer). För att förenkla så gör vi inga egna beräkningsmoduler än, utan använder Raspberry Pi Compute Modules och vi hoppades verkligen på den nya CM4-modulen. Men, allt gick emot planerna med deras nya formfaktor och jag tror att många är besvikna.

Under skärningen hur vi gick från V1 till V2 och hur vi var tvungna att ta oss ut med den nya Raspberry Pi CM4-formfaktorn.

Så efter att ha skapat ett kluster för 7 noder är frågorna - vad är nästa? Hur ökar man värdet på en produkt? 8, 10 eller 16 noder? Vilka modultillverkare? När vi tänker på produkten som helhet insåg vi att det viktigaste här inte är antalet noder eller vem tillverkaren är, utan själva essensen av kluster som byggsten. Vi måste leta efter den minsta byggstenen som

Den första, kommer att vara ett kluster och samtidigt kunna ansluta diskar och expansionskort. Klusterblocket bör vara en självförsörjande basnod och med ett brett utbud av expansionsmöjligheter.

andra, så att de minsta klusterblocken kan kopplas till varandra genom att bygga kluster av större storlek och så att det blir effektivt vad gäller budget och skalningshastighet. Skalningshastigheten måste vara snabbare än att ansluta vanliga datorer till ett nätverk och mycket billigare än serverhårdvara.

tredje, bör de minsta klusterenheterna vara tillräckligt kompakta, mobila, energieffektiva, kostnadseffektiva och inte krävande på driftsförhållandena. Detta är en av de viktigaste skillnaderna från serverrack och allt som är kopplat till dem.

Vi började med att bestämma antalet noder.

Antal noder

Med enkla logiska bedömningar insåg vi att 4 noder är det bästa alternativet för det minsta klusterblocket. 1 nod är inte ett kluster, 2 noder räcker inte (1 master 1 arbetare, det finns ingen möjlighet att skala inom ett block, speciellt för heterogena alternativ), 3 noder ser ok ut, men inte en multipel av potenser av 2 och skalning inom ett block är begränsat, 6 noder har ett pris nästan som 7 noder (av vår erfarenhet är detta redan ett stort självkostnadspris), 8 är mycket, passar inte i mini ITX-formfaktorn och en ännu dyrare PoC-lösning.

Fyra noder per block anses vara den gyllene medelvägen:

  • mindre material per klusterbräda, därav billigare att tillverka
  • multipel av 4, totalt 4 block ger 16 fysiska processorer
  • stabil krets 1 master och 3 arbetare
  • mer heterogena variationer, moduler för generell beräkning + accelererad beräkning
  • mini ITX formfaktor med SSD-enheter och expansionskort

Beräkna moduler

Den andra versionen är baserad på CM4, vi trodde att den skulle släppas i SODIMM-formfaktor. Men…
Vi tog ett beslut att göra ett SODIMM dotterkort och montera CM4 direkt till moduler så att användarna inte behöver tänka på CM4.

Mini ITX Cluster Turing Pi 2 med 32 GB RAM
Turing Pi Compute Module som stöder Raspberry Pi CM4

I allmänhet, på jakt efter moduler, öppnades en hel marknad av datormoduler från små moduler med 128 MB RAM till 8 GB RAM. Moduler med 16 GB RAM och mer är framme. För avancerad applikationshosting baserad på molnbaserad teknik är 1 GB RAM redan inte tillräckligt, och den senaste tidens uppkomst av moduler för 2, 4 och till och med 8 GB RAM ger bra utrymme för tillväxt. De övervägde till och med alternativ med FPGA-moduler för maskininlärningsapplikationer, men deras stöd har försenats eftersom mjukvaruekosystemet inte är utvecklat. När vi studerade modulmarknaden kom vi på idén att skapa ett universellt gränssnitt för moduler, och i V2 börjar vi förena gränssnittet för datormoduler. Detta gör det möjligt för ägare av V2-versionen att ansluta moduler från andra tillverkare och blanda dem för specifika uppgifter.

V2 stöder hela linjen Raspberry Pi 4 Compute Module (CM4), inklusive Lite-versioner och 8 GB RAM-moduler

Mini ITX Cluster Turing Pi 2 med 32 GB RAM

Periferi

Efter att ha bestämt leverantören av modulerna och antalet noder, närmade vi oss PCI-bussen där kringutrustningen är placerad. PCI-bussen är standarden för kringutrustning och finns i nästan alla datormoduler. Vi har flera noder, och helst bör varje nod kunna dela PCI-enheter i samtidig begärandeläge. Till exempel, om det är en disk som är ansluten till bussen, är den tillgänglig för alla noder. Vi började leta efter PCI-switchar med stöd för flera värdar och fann att ingen av dem passade våra krav. Alla dessa lösningar var mestadels begränsade till en värd eller flera värdar, men utan läget för samtidiga förfrågningar till slutpunkter. Det andra problemet är den höga kostnaden på $1 eller mer per chip. I V50 beslutade vi att skjuta upp experiment med PCI-switchar (vi återkommer till dem senare när vi utvecklar) och gick längs vägen för att tilldela en roll för varje nod: de två första noderna exponerade mini-PCI-expressporten per nod, den tredje noden exponerad 2-portar 2 Gbps SATA-kontroller. För att komma åt diskar från andra noder kan du använda nätverksfilsystemet i klustret. Varför inte?

Sneakpeek

Vi bestämde oss för att dela med oss ​​av några skisser av hur det minsta klusterblocket har utvecklats över tid genom diskussion och reflektion.

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

Som ett resultat kom vi till en klusterenhet med 4 260-stifts noder, 2 mini PCIe (Gen 2) portar, 2 SATA (Gen 3) portar. Kortet har en Layer-2 Managed Switch med VLAN-stöd. En mini PCIe-port har tagits bort från den första noden, i vilken du kan installera ett nätverkskort och skaffa en annan Ethernet-port eller 5G-modem och göra en router för nätverket på klustret och Ethernet-portar från den första noden.

Mini ITX Cluster Turing Pi 2 med 32 GB RAM

Klusterbussen har fler funktioner, inklusive möjligheten att flasha moduler direkt genom alla slots och givetvis FAN-kontakter på varje nod med hastighetskontroll.

Ansökan

Edge-infrastruktur för egenvärdiga applikationer och tjänster

Vi designade V2 för att vara den minsta byggstenen för en konsument-/kommersiell infrastruktur. Med V2 är det billigt att börja proof-of-concept och skala allt eftersom du växer, och gradvis portera applikationer som är mer kostnadseffektiva och praktiska att hosta på kanten. Klusterblock kan kopplas samman för att bygga större kluster. Detta kan göras gradvis utan större risk att etableras
processer. Redan idag finns det ett stort antal ansökningar för företag, som kan vara värd lokalt.

ARM arbetsstation

Med upp till 32 GB RAM per kluster kan den första noden användas för skrivbordsversionen av operativsystemet (till exempel Ubuntu Desktop 20.04 LTS) och de återstående 3 noderna för kompilering, testning och felsökningsuppgifter, utveckling av molnbaserade lösningar för ARM kluster. Som en nod för CI / CD på ARM edge infrastruktur i prod.

Turing V2-kluster med CM4-moduler är nästan identisk arkitektoniskt (skillnad i mindre versioner av ARMv8) till kluster baserat på AWS Graviton-instanser. CM4-modulprocessorn använder ARMv8-arkitekturen så att du kan bygga bilder och applikationer för AWS Graviton 1 och 2-instanser, som är kända för att vara mycket billigare än x86-instanser.

Källa: will.com