Turing Pi — кластерна плата для self-hosted додатків та сервісів

Turing Pi — кластерна плата для self-hosted додатків та сервісів

Turing Pi це рішення для self-hosted додатків побудоване за принципом rack стійок у дата центрі, тільки на компактній материнській платі. Рішення спрямоване на побудову локальної інфраструктури для локальної розробки та хостингу додатків та сервісів. Вообщем це як AWS EC2 тільки для edge.

Ми невелика команда розробників вирішили створити рішення для побудови bare-metal кластерів у edge та назвали проект Turing Pi. Продукт розпочався на «колінці», проте зараз для перевірок своїх концепцій його замовили відділи розробок Red Hat, Rancher (SUSE), Toyota Connected, Sony, Electrolux, Facebook, і набирається аудиторія розробників під 10К.

Але все почалося з відкриття.

Відкриття продукту

Колись для себе зробив відкриття, що ми нічого не вигадуємо. Всі речі, що існують у цьому світі, ми відкриваємо. Ми відкриваємо якісь частини можна комбінувати разом, отримуючи нові властивості продуктів або відкриваємо закони і потім знову комбінуємо. Вигадати нічого не можна, але можна відкрити під час дослідження. На мій погляд винахід це результат постійних спостережень, експерименти та пошук + комбінація знань.

Протягом останнього десятиліття я спостерігав як набирає обертів аматорський рух homelab (ресурс subreddit), self-hosted (ресурси subreddit и awesome-selfhosted), одноплатні комп'ютери, як зростає інтерес до запуску контейнерів на одноплатних комп'ютерах типу Raspberry Pi, зростає рух збирає кластери з одноплатних комп'ютерів. Поступово туди тягнеться ідея Kubernetes. Вже з'явилася його легка версія k3s, орієнтована на Edge/IoT. Велика мережа ресторанів швидкого харчування Chick-fil-A одні з перших у світі розмістили кластери Kubernetes на своїх кухнях kubectl make me a sandwich.

Я це бачу як снігова куля, як одна технологія обертається навколо іншої, створюючи більш комплексну систему. При цьому немає жодного хаосу, більше схоже на фрактал із технологій. В один із досить складних для мене моментів у моєму житті я побачив цінність у кластерах, які збираються з одноплатних комп'ютерів розробниками аматорами та почав працювати над створенням кластерної плати.

Сьогодні наша кластерна плата дуже проста і в першу чергу орієнтована на тих, хто любить cloud native технології, вивчати нове, експериментувати.

Будівельні блоки (Building Blocks)

Отже, що ж собою представляє рішення, в чому суть. Суть у тому щоб дати конструктор, будівельні блоки (Building Blocks) з яких можна зібрати edge інфраструктуру дешевше ніж на класичних серверах, мобільну без громіздких металевих ящиків, не вимогливу до особливих умов експлуатації типу серверних, енергоефективну, стандартизовану в плані модулів та з можливістю швидкого масштабування на десятки та сотні обчислювальних вузлів (процесори).

Кластерна плата (Clusterboard)

Mini ITX плата об'єднує кілька обчислювальних модулів за допомогою мережі на платі, дає периферійні інтерфейси та контроль над модулями.

Обчислювальний модуль (Compute Module)

Плата в SO-DIMM форм-факторі містить процесор та оперативну пам'ять, опціонально флеш-пам'ять для зберігання операційної системи

Turing Pi — кластерна плата для self-hosted додатків та сервісів
Одна з проектованих конфігурацій версії Turing V2

Turing Pi — кластерна плата для self-hosted додатків та сервісів

Комбінуючи кластерну плату та обчислювальні модулі легко створити інфраструктуру наприклад на 20+ процесорів (приклади нижче), безшумну та з низьким енергоспоживанням. Сама кластерна плата збільшує ефективність обсягу, що використовується. Приклади кластерів для порівняння

SBC заснований*
Turing Pi — кластерна плата для self-hosted додатків та сервісів
24 CPU's
Автор Afkham Azeez

Turing Pi based
Turing Pi — кластерна плата для self-hosted додатків та сервісів
21 CPU's
Автор th3st0rmtr00p3r

* SBC - Single Board Computer

Співзасновника Rancher Labs та автора k3s такий підхід не залишив байдужим

Turing Pi — кластерна плата для self-hosted додатків та сервісів

Далі докладніше про будівельні блоки.

Обчислювальний модуль (Compute Module)

Для перевірки концепції ми вибрали Raspberry Pi Compute Module - це ідеальна конфігурація для старту. Комуніті RPi активно, немає проблем із софтом, сам модуль у форматі SO-DIMM (6 x 3 см), доступний за ціною, містить на борту 4-core CPU, 1 GB RAM та опціонально флеш-пам'ять 8, 16 або 32 GB для ОС та інших системних потреб. Подібний форм-фактор часто використовують у індустріальних IoT рішеннях.

Raspberry Pi 1/3/3+ Compute Module

Turing Pi — кластерна плата для self-hosted додатків та сервісів

Але модель CM3 має серйозні обмеження — max. 1 GB RAM та Ethernet через USB HUB з максимальною швидкістю до 100 Mbps. Тому друга версія Turing підтримуватиме Raspberry Pi 4 і до 8 GB оперативної пам'яті на модуль. Нижче приклад Nvidia Jetson модулів для Accelerated Computing завдань. Можливо, буде їхня підтримка у другій версії, якщо ми вирішимо деякі технічні завдання, тоді можна міксувати модулі.

Nvidia Jetson Compute Modules

Turing Pi — кластерна плата для self-hosted додатків та сервісів

У модулях криється найголовніша можливість, яка, на перший погляд, не очевидна. Можливість створення інших модулів у подібному форм-факторі з різним набором CPU, RAM та eMMC під різні типи завдань від general-computing до machine learning інтенсивних обчислень. Це дуже схоже на інстанси AWS EC2, але для edge. При цьому кластерна плата залишається незмінною або з мінорними змінами.

Кластерна плата (Clusterboard)

Ще її можна назвати материнською платою або базовою платою, досить новий напрямок і виробників подібних рішень сьогодні небагато і досі досить на початковому рівні, серед них Pine64, MiniNodes, Clover Pi, Bitscope Blade, PicoCluster (SBC кластери). Кластерна плата поєднує модулі мережею, забезпечує живленням і дає шину управління кластером (Cluster Management Bus), принаймні ми цю шину вирішили додати і вона начебто прижилася.

передній
Turing Pi — кластерна плата для self-hosted додатків та сервісів

Назад
Turing Pi — кластерна плата для self-hosted додатків та сервісів

Backplane Bandwidth 12 Gbps
SD слоти для модулів без eMMC, наприклад, можна тримати пару модулів з SD для швидкого доступу до даних ноди

В основі кластерної плати лежить мікросхема switch для забезпечення мережного з'єднання модулів та виходу у зовнішню мережу. У поточній версії ми використовуємо unmanaged switch т.к. не було часу проводити повноцінний R&D, але до другої версії ми вибрали непоганий managed switch. Можлива конфігурація в режимі 'майстер нода як роутер' для роздачі мережі на плату, якщо потрібно більш високий рівень безпеки та ізоляції воркерів від доступу ззовні, в такому випадку на майстер ноді необхідно також тримати DHCP сервер.

Застосування

Поточна версія є експериментальною і ми позиціонуємо її як рішення початкового рівня вивчити що таке кластери, попрацювати із софтом або як перевірка гіпотез в організаціях, пошук нових ідей, взагалі така Lite версія.

Щоб почати ми рекомендуємо серію від чудового Джефа Гірлінга, який прочитав про нас на Y Combinator, він автор бестселера Ansible for DevOps. Він так надихнувся, що зробив 6-ти серійний огляд, починаючи від ідеї кластеризації в цілому до практичних прикладів роботи з платою, вивчення Kubernetes і який софт можна встановлювати.

Серія про встановлення k3s на кластер

Відтворити відео

А взагалі рекомендую дивитися з першою, там загалом про кластеризацію та Kubernetes доступною мовою. І трохи картинок від ком'юніті

Turing Pi — кластерна плата для self-hosted додатків та сервісів

Що далі?

По-перше, я дуже сподіваюся, що було цікаво. Це абсолютно авторський контент, спроба заглянути за обрій. По-друге, планую написати другу частину для проектування Turing V2. Як відбувався пошук продукту, логічні міркування, пошук основних властивостей, які важливі. Стаття міститиме ескізи продукту від ранніх до фінальних. Друга стаття буде особливо цікава продуктологам, хто відповідає за продукти та їх розвиток у компаніях.

І найімовірніше там буде реально long read.

Джерело: habr.com