Міні ITX кластер Turing Pi 2 c 32 GB RAM

Міні ITX кластер Turing Pi 2 c 32 GB RAM

Вітаю спільноту Хабра! Нещодавно я писав про нашу кластерну плату першої версії [V1]. І сьогодні хочу розповісти, як ми працювали над версією Turing V2 з 32 GB оперативної пам'яті.

Ми захоплюємося міні серверами, які можна використовувати як для локальної розробки так і для хостингу локально. На відміну від настільних комп'ютерів або лептопів, наші сервери створені для роботи 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 багато, не вміщається у міні ITX форм факторі та ще дорожче рішення для PoC.

Чотири ноди на блок вважаємо золотою серединою:

  • менше матеріалів на кластерну плату, отже дешевше виробництво
  • кратно 4, всього 4 блоки дають 16 фізичних процесорів
  • стабільна схема 1 майстер і 3 воркери
  • більше гетерогенних варіацій, general-compute + accelerated-compute модулі
  • міні ITX форм-фактор з SSD дисками та платами розширення

Обчислювальні модулі

Друга версія базується на CM4 ми думали що її випустять у SODIMM форм-факторі. Але...
Ми вирішили зробити дочірню плату SODIMM і збирати CM4 відразу в модулі, щоб користувачі не думали про CM4.

Міні ITX кластер Turing Pi 2 c 32 GB RAM
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

Міні ITX кластер Turing Pi 2 c 32 GB RAM

периферія

Після визначення вендора модулів та кількості нод ми підійшли до PCI шини, на якій знаходиться периферія. PCI шина є стандартом для периферійних пристроїв і є майже у всіх обчислювальних модулях. У нас кілька нод і в ідеалі, щоб кожна нода могла шерити PCI пристрої в режимі конкурентних запитів. Наприклад, якщо це диск підключений до шини, він доступний всім нодам. Ми почали шукати PCI свічі з можливістю підтримки мультихост і виявили, що жоден з них не підходить під наші вимоги. Всі ці рішення здебільшого обмежувалися одним хостом або мульти хостами, але без режиму конкурентних запитів до endpoints. Друга проблема - висока вартість від $1 і більше за чіп. У V50 ми вирішили відкласти експерименти з PCI свічами (ми повернемося до них пізніше у міру розвитку) і пішли шляхом призначення ролі для кожної ноди: перші дві ноди exposed mini PCI express port per node, третя нода exposed 2-ports 2 Gbps SATA контролер . Для доступу до дисків з інших нод можна використовувати мережну файлову систему у межах кластера. Why not?

Sneakpeek

Ми вирішили поділитися деякими ескізами як еволюціонував мінімальний кластерний блок з часом у процесі обговорення та обмірковування

Міні ITX кластер Turing Pi 2 c 32 GB RAMМіні ITX кластер Turing Pi 2 c 32 GB RAMМіні ITX кластер Turing Pi 2 c 32 GB RAM

В результаті ми прийшли до кластерного блоку з 4-ма нодами 260-pin, 2-ма mini PCIe (Gen 2) портами, 2-ма SATA (Gen 3) портами. На платі встановлено Layer-2 Managed Switch із підтримкою VLAN. З першої ноди виведено mini PCIe порт, в який можна встановити мережеву карту та отримати ще один Ethernet порт або 5G модем і зробити з першої ноди роутер для мережі на кластері та Ethernet портах.

Міні ITX кластер Turing Pi 2 c 32 GB RAM

Кластерна шина має більше функцій, включаючи можливість прошивки модулів безпосередньо через всі слоти і, звичайно, 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 LTS) і 3 ноди, що залишилися, для завдань компіляції, тестування та налагодження, розробки cloud native рішень для ARM кластерів. Як вузол для CI/CD ARM периферійну інфраструктуру в проді.

Turing V2 кластер із CM4 модулями архітектурно майже ідентичний (різниця в мінорних версіях ARMv8) кластеру на базі інстансів AWS Graviton. У процесорі CM4 модулів використовується архітектура ARMv8 ви можете збирати образи та програми для AWS інстансів Graviton 1 і 2, які як відомо набагато дешевші за інстанси x86.

Джерело: habr.com

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster