Мини 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 много, не умещается в mini 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 свичи с возможностью поддержки мультихост и обнаружили что ни один из них не подходит под наши требования. Все эти решения в основном ограничивались 1 хостом или мульти хостами, но без режима конкурентных запросов к endpoints. Вторая проблема высокая стоимость от $50 и более за чип. В V2 мы решили отложить эксперименты с PCI свичами (мы вернемся к ним позже по мере развития) и пошли по пути назначения роли для каждой ноды: первые две ноды exposed mini PCI express port per node, третья нода exposed 2-ports 6 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