
Zdravím komunitu Habra! Nedávno jsem psal o naší první verzi klastrové desky []. A dnes bych chtěl vyprávět, jak jsme pracovali na verzi operační paměti.
Zabýváme se mini servery, které lze používat jak pro místní vývoj, tak pro lokální hosting. Na rozdíl od stolních počítačů nebo notebooků jsou naše servery navrženy pro práci 24/7, rychle se dají spojit do federace; například bylo 4 procesory v clustru, a za 5 minut jich bylo 16 (bez dodatečných síťových zařízení) a to vše v kompaktním formátu, tiše a energeticky efektivně.
Základem architektury našich serverů je klastrový princip, tj. vyrábíme klastrové desky, které pomocí ethernetové sítě na desce spojují několik výpočetních modulů (procesorů). Pro zjednodušení zatím nevyrábíme vlastní výpočetní moduly, ale používáme modul Raspberry Pi Compute a velmi jsme doufali v nový modul CM4. Avšak vše se vymklo plánům s jejich novým formátem a myslím, že mnozí jsou zklamáni.
Pod katem si můžete přečíst, jak jsme přešli od V1 k V2 a jak jsme se museli vyrovnat s novým formátem Raspberry Pi CM4.
Takže po vytvoření clustru o 7 uzlech, otázka zní — co dál? Jak zvýšit hodnotu produktu? 8, 10 nebo 16 uzlů? Kteří výrobci modulů? Při uvažování o produktu jako celku jsme si uvědomili, že zde nejde o počet uzlů nebo výrobce, ale o samotný princip klastrů jako stavebního bloku. Je třeba hledat minimální stavební blok, který
První, bude tvořit klastr a zároveň bude mít možnost připojení disků a rozšiřujících desek. Klastr blok by měl být samostatným základním uzlem s širokými možnostmi rozšíření.
Druhé, aby se minimální klastr bloky daly spojovat mezi sebou a vytvářet větší klastr, a aby to bylo efektivní z hlediska rozpočtu a rychlosti škálování. Rychlost škálování by měla být vyšší než spojení běžných počítačů do sítě a mnohem levnější než serverové vybavení.
Třetí, minimální klastr bloky by měly být dostatečně kompaktní, mobilní, energeticky efektivní, cenově dostupné a neměly by vyžadovat specifické podmínky provozu. To je jedno z klíčových rozdílů od serverových racků a všeho, co s nimi souvisí.
Začali jsme s určením počtu uzlů.
Počet uzlů
Jednoduchými logickými úvahami jsme dospěli k závěru, že 4 uzly jsou nejlepší variantou pro minimální clusterový blok. 1 uzel není cluster, 2 uzly je málo (1 master a 1 worker, není možnost škálování v rámci bloku, zejména pro heterogenní varianty), 3 uzly vypadají v pořádku, ale není to násobek mocnin 2 a škálování v rámci bloku je omezené, 6 uzlů vyjde cenově téměř jako 7 uzlů (z našich zkušeností to už znamená vysoké náklady), 8 je příliš mnoho, nevejde se do formátu mini ITX a je to ještě dražší řešení pro PoC.
Čtyři uzly na blok považujeme za zlatou střední cestu:
- méně materiálů na clusterovou desku, a tudíž levnější výroba
- násobek 4, celkem 4 bloky dávají 16 fyzických procesorů
- stabilní schéma 1 master a 3 workery
- více heterogenních variant, general-compute + accelerated-compute moduly
- mini ITX form-factor se SSD disky a rozšiřujícími deskami
Výpočetní moduly
Druhá verze je založena na CM4, mysleli jsme, že ji vydají v SODIMM formátu. Ale...
Rozhodli jsme se vytvořit dceřinou desku SODIMM a sbírat CM4 přímo do modulů, aby se uživatelé nemuseli starat o CM4.

Turing Pi Compute Module s podporou Raspberry Pi CM4
Ve skutečnosti byl při hledání modulů objeven celý trh výpočetních modulů od malých modulů s 128 MB RAM po 8 GB RAM. V budoucnu očekáváme moduly s 16 GB RAM a více. Pro edge hosting aplikací založených na cloud native technologiích je 1 GB RAM již málo, a nedávné objevování modulů s 2, 4 a dokonce 8 GB RAM nabízí dobré možnosti pro růst. Zvažovali jsme i možnosti s FPGA moduly pro aplikace strojového učení, ale jejich podpora byla odložena, protože softwarová ekosystém není rozvinutý. Při zkoumání trhu modulů jsme přišli na myšlenku vytvoření univerzálního rozhraní pro moduly a ve V2 začínáme unifikaci rozhraní výpočetních modulů. To umožní majitelům verze V2 připojit moduly od jiných výrobců a kombinovat je pro konkrétní úkoly.
V2 podporuje celou řadu Raspberry Pi 4 Compute Module (CM4), včetně Lite verzí a modulů na 8 GB RAM

Periferie
Po určení dodavatele modulů a počtu uzlů jsme se dostali k PCI sběrnici, na které se nachází periferní zařízení. PCI sběrnice je standardem pro periferní zařízení a téměř ve všech výpočetních modulech. Máme několik uzlů a ideálně by každý uzel mohl sdílet PCI zařízení v režimu konkurenčních požadavků. Například pokud se jedná o disk připojený k sběrnici, je dostupný všem uzlům. Začali jsme hledat PCI switche s možností podpory multi-host a zjistili jsme, že žádný z nich nevyhovuje našim požadavkům. Všechna tato řešení byla většinou omezena na 1 hostitele nebo multi-hosty, ale bez režimu konkurenčních požadavků k endpointům. Druhým problémem byla vysoká cena od 50 USD a více za čip. Ve V2 jsme se rozhodli odložit experimenty s PCI switche (k nim se vrátíme později, jak se vyvíjíme) a šli jsme cestou přiřazení role každému uzlu: první dva uzly měly expose mini PCI express port na uzel, třetí uzel expose 2-portový 6 Gbps SATA řadič. Pro přístup k diskům z dalších uzlů lze použít síťový souborový systém v rámci klastru. Proč ne?
Sneakpeek
Rozhodli jsme se podělit o některé nákresy, jak se vyvíjel minimální klastrový blok v průběhu času během diskuzí a úvah.



Nakonec jsme dospěli k klastrovému bloku se 4 uzly, 260-pin, 2 mini PCIe (Gen 2) porty, 2 SATA (Gen 3) porty. Na desce je nainstalovaný Layer-2 Managed Switch s podporou VLAN. Z prvního uzlu je vyveden mini PCIe port, do kterého lze nainstalovat síťovou kartu a získat další Ethernet port nebo 5G modem a udělat z prvního uzlu router pro síť v klastru a Ethernet porty.

Klastrová sběrnice má více funkcí, včetně možnosti flashování modulů přímo přes všechny sloty a samozřejmě FAN konektory na každém uzlu s kontrolou rychlosti.
Použití
Edge infrastruktura pro samo-hostované aplikace a služby
Navrhli jsme V2 s cílem využít ji jako minimální stavební blok pro řešení edge infrastruktury na úrovni spotřebitelů a komerční. S V2 je levné začít ověřovat koncept a škálovat s růstem, postupně přesouvat aplikace, které je ekonomicky a prakticky rozumnější hostovat na edge. Klastrové bloky lze spojovat dohromady a vytvářet větší klastry. To lze dělat postupně bez zvláštních rizik pro zavedené systémy.
procesů. Již dnes existuje obrovské množství aplikací pro podnikání, .
ARM Workstation
S operační pamětí až 32 GB RAM na cluster, první uzel lze použít pro desktopovou verzi OS (například Ubuntu Desktop 20.04 LTS) a zbývající 3 uzly pro úkoly kompilace, testování a ladění, vývoj cloud native řešení pro ARM clustery. Jako uzel pro CI/CD v ARM periferní infrastruktury v produkci.
Turing V2 cluster s CM4 moduly je architektonicky téměř identický (rozdíl v minor verzích ARMv8) clusteru na základě instancí AWS Graviton. V procesoru CM4 modulů se používá architektura ARMv8, takže můžete sestavovat obrazy a aplikace pro AWS instance Graviton 1 a 2, které jsou, jak známo, mnohem levnější než instance x86.
Zdroj: habr.com
