Вітаю супольнасць Хабра! Нядаўна я пісаў пра наш кластарны поплатак першай версіі [
Мы захапляемся міні серверамі, якія можна выкарыстоўваць як для лакальнай распрацоўкі так і для хостынгу лакальна. У адрозненні ад настольных кампутараў ці лэптопаў нашы серверы створаны для працы 24/7 іх хутка можна злучаць у федэрацыю, напрыклад было 4 працэсара ў кластары, а праз 5 хвілін стала 16 працэсараў (без дадатковага сеткавага абсталявання) і ўсё гэта ў кампактным формаў-фактары , бясшумна і энергаэфектыўна.
У аснове архітэктуры нашых сервераў - кластарны прынцып пабудовы г.зн. мы робім кластарныя платы якія з дапамогай ethernet сеткі на плаце злучаюць некалькі вылічальных модуляў (працэсараў). Для спрашчэння мы пакуль не які робіцца свае вылічальныя модулі, а выкарыстаны Raspberry Pi Compute Modules і мы вельмі спадзяваліся на новы модуль CM4. Але, усё пайшло насуперак планам з іх новым формаў-фактарам і думаю многія расчараваныя.
Пад катам як мы ішлі ад V1 да V2 і як нам прыйшлося выкручвацца з новым формаў-фактарам Raspberry Pi CM4.
Такім чынам, пасля стварэння кластара на 7 нод, пытанні - што далей? Як павялічыць каштоўнасць прадукта? 8, 10 ці 16 нод? Якія вытворцы модуляў? Думаючы над прадуктам у комплексе мы зразумелі што асноўнае тут не колькасць нод ці хто вытворца, а сама сутнасць кластараў як будаўнічага блока. Трэба шукаць мінімальны будаўнічы блок, якія
Першае, будзе з'яўляцца кластарам і пры гэтым мець магчымасць падлучэння дыскаў і поплаткаў пашырэнняў. Кластарны блок павінен быць самадастатковым базавым вузлом і з шырокімі магчымасцямі па пашырэнні.
Другое, Каб мінімальныя кластарныя блокі можна было злучаць паміж сабой выбудоўваючы кластары большага памеру і каб гэта было эфектыўна з пункту гледжання бюджэту і хуткасці маштабавання. Хуткасць маштабавання павінна быць вышэй чым злучэнне звычайных кампутараў у сетку і нашмат танней сервернага абсталявання.
трэцяе, мінімальныя кластарныя блокі павінны быць дастаткова кампактныя, мабільныя, энергаэфектыўныя, cost-effective і не патрабавальныя да ўмоў эксплуатацыі. Гэта адно з ключавых адрозненняў ад server racks і ўсяго, што з імі звязана.
Мы пачалі з вызначэння колькасці нод.
Колькасць нод
Простымі лагічнымі меркаваннямі мы зразумелі, што 4 ноды лепшы варыянт для мінімальнага кластарнага блока. 1 нода гэта не кластар, 2 ноды мала (1 майстар 1 воркер, няма магчымасці маштабавання ў рамках блока, асабліва для гетэрагенных варыянтаў), 3 ноды выглядае ок, але не кратна ступенях 2 і лімітавана маштабаванне ў рамках блока, 6 нод выходзіць па кошце амаль як 7 нод (з нашага вопыту гэта ўжо вялікі сабекошт), 8 шмат, не змяшчаецца ў mini ITX формаў фактары і яшчэ больш дарагое рашэнне для PoC.
Чатыры ноды на блок лічым залатой сярэдзінай:
- менш матэрыялаў на кластарную плату, такім чынам танней вытворчасць
- кратна 4, усяго 4 блокі даюць 16 фізічных працэсараў
- стабільная схема 1 майстар і 3 воркера
- больш гетэрагенных варыяцый, general-compute + accelerated-compute модулі
- міні ITX формаў-фактар з SSD дыскамі і плата пашырэння
Вылічальныя модулі
Другая версія грунтуецца на CM4 мы думалі што яе выпусцяць у SODIMM формаў-фактары. Але...
Мы прынялі рашэнне зрабіць даччыную плату SODIMM і збіраць CM4 адразу ў модулі каб карыстачы не думалі аб CM4.
Turing Pi Compute Module з падтрымкай Raspberry Pi CM4
Наогул у пошуках модуляў быў адчынены цэлы рынак вылічальных модуляў ад невялікіх модуляў на 128 MB RAM да 8 GB RAM. Наперадзе модулі на 16 GB RAM і больш. Для edge хостынгу прыкладанняў якія базуюцца на cloud native тэхналогіях 1 GB RAM ужо мала, а нядаўняе з'яўленне модуляў на 2, 4 і нават 8 GB RAM дае добрую прастору для росту. Нават разглядалі і варыянты з FPGA модулямі для прыкладанняў машыннага навучання, але іх падтрымка адкладзена таму што не развітая софтверная экасістэма. Падчас вывучэння рынка модуляў дашлі да ідэі стварэння ўніверсальнага інтэрфейсу для модуляў і ў V2 пачынаем уніфікацыю інтэрфейсу вылічальных модуляў. Гэта дазволіць уладальнікам версіі V2 падлучаць модулі іншых вытворцаў і змешваць іх пад пэўныя задачы.
V2 падтрымлівае ўсю лінейку Raspberry Pi 4 Compute Module (CM4), у тым ліку Lite версіі і модулі на 8 GB RAM
перыферыя
Пасля вызначэння вендара модуляў і колькасці нод мы падышлі да PCI шыны, на якой знаходзіцца перыферыя. PCI шына з'яўляецца стандартам для перыферыйных прылад і яна ёсць амаль ва ўсіх вылічальных модулях. У нас некалькі нод і ў ідэале, каб кожная нода магла шарыць PCI прылады ў рэжыме канкурэнтных запытаў. Напрыклад, калі гэта кружэлка падлучаны да шыны, то ён даступны ўсім нодам. Мы пачалі шукаць PCI свічы з магчымасцю падтрымкі мульціхост і выявілі што ні адзін з іх не падыходзіць пад нашы патрабаванні. Усе гэтыя рашэнні ў асноўным абмяжоўваліся 1 хастом ці мульты хастамі, але без рэжыму канкурэнтных запытаў да endpoints. Другая праблема - высокі кошт ад $ 50 і больш за чып. У V2 мы вырашылі адкласці эксперыменты з PCI свічкамі (мы вернемся да іх пазней па меры развіцця) і пайшлі па шляху прызначэння ролі для кожнай ноды: першыя дзве ноды, трэцяя нода exposed 2-ports . Для атрымання доступу да дыскаў з іншых нод можна выкарыстоўваць сеткавую файлавую сістэму ў рамках кластара. Why not?
Sneakpeek
Мы вырашылі падзяліцца некаторымі эскізамі як эвалюцыянаваў мінімальны кластарны блок з цягам часу ў працэсе абмеркавання і абдумвання
У выніку мы прыйшлі да кластарнага блока з чатырма нодамі 4-pin, двума mini PCIe (Gen 260) партамі, двума SATA (Gen 2) партамі. На плаце ўсталяваны Layer-2 Managed Switch з падтрымкай VLAN. З першай ноды выведзены mini PCIe порт, у які можна ўсталяваць сеткавую карту і атрымаць яшчэ адзін Ethernet порт ці 2G мадэм і зрабіць з першай ноды роўтэр для сеткі на кластары і Ethernet партоў.
Кластарная шына мае больш функцый, уключаючы магчымасць прашыўкі модуляў напрамую праз усе слоты і вядома FAN канектары на кожнай нодзе з кантролем хуткасці.
Ужыванне
Edge infrastructure for self-hosted applications & services
Мы праектавалі V2 з мэтай выкарыстоўваць яе як мінімальны будаўнічы блок для consumer/commercial-grade edge інфраструктуры. З V2 танна пачаць праверку канцэпцыі і маштабавацца па меры росту, паступова пераносячы прыкладанні, якія эканамічна і практычна мэтазгодней хосціць у edge. Кластарныя блокі можна злучаць разам, будуючы кластары большага памеру. Гэта можна рабіць паступова без асаблівых рызык для ўстояных.
працэсаў. Ужо сёння ёсць вялікая колькасць прыкладанняў для бізнесу,
ARM Workstation
З аператыўнай памяццю да 32 GB RAM на кластар, першую ноду можна выкарыстоўваць для desktop версіі OS (напрыклад Ubuntu Desktop 20.04/3 LTS) і пакінутыя XNUMX ноды для задач кампіляцыі, тэставанні і адладкі, распрацоўкі cloud native рашэнняў для ARM кластараў. Як вузел для CI/CD на ARM перыферыйную інфраструктуру ў продзе.
Turing V2 кластар з CM4 модулямі архітэктурна амаль ідэнтычны (розніца ў мінорных версіях ARMv8) кластару на базе інстансаў AWS Graviton. У працэсары CM4 модуляў выкарыстоўваецца архітэктура ARMv8 вы можаце збіраць выявы і прыкладанні для AWS інстансаў Graviton 1 і 2, якія як вядома нашмат танней інстансаў x86.
Крыніца: habr.com