Блог shadowchain

Re:Zero. Хоумлаба с нуля в другой стране

Read this post in English

Что такое хоумлаба? Хоумлаба — это домашняя песочница, где IT-специалисты или просто энтузиасты развлекаются и экспериментируют с различным ПО и железом. При этом могут преследоваться совершенно разные цели: от простого желания использовать локальные сервисы типа Nextcloud до обучения и подготовки к экзамену на какой-нибудь сертификат.

Была у меня замечательная хоумлаба, но она занимала много места и жрала много электричества. После переезда в другую страну она стояла без дела, да и привезти её удалось только чудом и наличием сухопутной границы. И вот мне снова нужно переезжать, уже в другую страну. В этот раз, увы, самолётом. Пришлось продать довольно много железок. Тут до меня дошло, что этот переезд далеко не последний, и я захотел сделать всё по уму и написать об этом цикл статей.

Дисклеймер: Есть миллионы способов сделать хоумлабу у себя дома. Этим это занятие и прекрасно, что не будет двух одинаковых хоумлаб. Эта серия статей не претендует на единственно верную истину в последней инстанции, это всего лишь моё видение моей хоумлабы. И вообще буду писать больше про планирование, архитектуру и приключения. Я, конечно, буду периодически предоставлять сниппеты и некоторые проекты буду лить на GitHub/GitLab, но данный цикл статей не будет пошаговым руководством. Это что-то среднее между гайдом и художественной литературой. Для повторения за мной в любом случае нужны какие-то предварительные знания или собственные исследования, иначе вам будет крайне тяжело поддерживать свою лабу. Но если будут вопросы, не стесняйтесь задавать их в комментариях. Замечания, конструктивная критика и прочий фидбек тоже приветствуются.

Требования к новой хоумлабе

Вот примерный список моих требований к следующей хоумлабе:

  1. Хоумлаба должна быть, в первую очередь, гибкой и модульной. Сейчас мне нужна компактность на случай переезда. Однажды я могу закрепиться на одном месте, и тогда хоумлаба может вырасти в размерах, но всё равно должна оставаться возможность снова ужаться. И вообще требования по ходу дела могут меняться. Отсюда вывод: лаба должна быть модульной, а модули — относительно компактные.
  2. В идеале основные железки должны перевозиться за один авиаперелёт в багаже. Чтобы на новом месте быть сразу с хоумлабой (хотя бы частично рабочей) или прилететь за хоумлабой во второй раз. Я, конечно, надеюсь переезжать сухопутно, но рандом жизни не всегда спрашивает, чего я хочу.
  3. Также хоумлаба должна быть весёлой и интересной с софтверной и хардверной точки зрения, а уже потом — эффективной. Поэтому я хочу HA кластер и софт, более близкий к типичному проду.
  4. Я не сетевик, но мне эпизодически интересно играться с сетью, и хочется огромной пропускной способности.

И вот, как мне кажется, это всё можно решить:

  1. Старые железки я почти распродал, оставил в основном сеть и диски. Новые железки, во всяком случае основные устройства (где находятся самые критически важные сервисы), должны быть крайне компактными, чтобы модули было легко перевозить. В идеале — USFF форм-фактор, например Lenovo P3 Tiny или Dell OptiPlex. Раз основные железки будут компактными, основной тип хранилища — NVMe SSD. Тем не менее это не отменяет того, что позже может захотеться чего-то габаритного, например HDD или GPU сервера. Лишь бы на это не были жёстко завязаны важные сервисы вроде Vaultwarden или Nextcloud.
  2. Начать можно с однонодового исполнения. Многонодовость не очень вяжется с компактностью, даже с USFF PC. Хардварно склоняюсь к Minisforum MS-A2. Это реально маленький ПК и при этом очень навороченный. Туда лезет два 22110 NVMe M.2 и один U.2 7mm диск (или ещё один 2280 M.2 вместо него). Также RAM до 96 GB DDR5 SO-DIMM официально и до 128 GB неофициально. Есть один PCIe x16 (логически x8) с поддержкой бифуркации (разделение линий на отдельные устройства). То есть туда можно докинуть ещё два NVMe-диска или поставить ещё одну хорошую сетевуху — ещё одну, потому что из коробки уже есть Intel X710 с двумя SFP+ разъёмами (оптоволокно на 10 Gbps каждый) и ещё две другие сетевухи с 2.5 Gbps 8P8C разъёмом каждая. Проц — AMD Ryzen 9 9955HX. Короче: мощи много, I/O великолепный. Идеально. Потом можно будет докупить таких же и собрать полноценный кластер. Минус — хреновая поддержка Minisforum. В интернете пишут, что вернуть по браку что-то очень тяжело, обновления UEFI практически отсутствуют с релиза. Я бы рад приглядеться к чему-то другому, но близких по I/O альтернатив не нашёл. Самое близкое — Lenovo Thinkcentre Tiny с нехилым набором модификаций, но всё равно не то.
  3. Более эффективным и практичным решением было бы что-то однонодовое с ZFS/Btrfs, podman-контейнерами и может даже каким-то управляющим софтом вроде Portainer. Но для меня это не так интересно. Так что софтверно выбор падает на OKD (OpenShift) — мне интересно ковырять Kubernetes. Начнём с использования SNO, LVM для локального хранилища (RWO) и NooBaa или Garage в качестве S3 сервера. Когда нод станет несколько, то для кластерного хранилища (RWX) и S3 планирую использовать Rook Ceph. Дополнительно отмечу, что буду стараться везде, где это возможно и целесообразно, придерживаться IaC и DRY и быть ближе к подходу cattle вместо pet. Если здесь было много непонятных слов — не переживай: в следующих статьях мы ближе познакомимся с этими технологиями, и всё станет яснее.
  4. Сеть между нодами — 2 агрегированных SFP+ (они как раз уже есть в MS-A2). А также 2 SFP+ для внутренней сети Ceph, когда он появится. То есть 20 Gbps на каждую сеть. Да, я охуел. Ну а что вы мне сделаете? Внутренняя сеть Ceph в основном нужна для повышения производительности репликации и восстановления, а ещё это ближе к реальному сетапу и потому интереснее. Две SFP+ несложно докидываются, подходящие Intel XL710 карты продаются на Amazon. Подключать всё это планирую в Mikrotik CRS326-24S+2Q+RM. 24 SFP+ позволят подключить до шести нод. А два QSFP+ разъёма пригодятся для потенциального расширения сети, но об этом позже.

Фокус на быстрой сети и модульности навёл меня на одну мысль. По сути я делаю контейнерный/модульный дата-центр[1], только сильно меньше, домашний и из говна и палок. Это как собирать железнодорожные модели: миниатюрно и игрушечно, но модель в целом похожа на свой референс. Есть одна проблема — я понятия не имею, как на самом деле устроен дата-центр: я их не проектировал и не собирал. Но примерное понимание есть. Надеюсь, этого хватит для доморощённого варианта.

Долгосрочный план развития хоумлабы

Попробуем набросать возможную схему сети итогового варианта хоум-датацентра. Путь к ней будет долгим: хоумлаба — это вечный процесс, и планы всегда меняются. Но необходимо знать, к чему я хочу прийти, чтобы правильнее подбирать железо и выбирать и настраивать ПО.

Йоба хоумлаба

Итак, йоба сетап сети и хоумлабы:

  1. Всё начинается с Multi WAN, который в общем-то не очень обязателен, и пока не ясно, на чём его делать — многоквартирный дом, где я живу, подключён всего к одному провайдеру.
  2. Дальше идут мерзкие роутеры от провайдера, и это вполне реалистично, увы. Нынешний провайдер поставил такой роутер, что в бридж его не переделать (большинство настроек залочено, root получить не удалось), а подключён он к провайдеру по GPON. То есть от этого девайса не избавиться. Лишний NAT — сука такая.
  3. Дальше Edge локальной сети в виде виртуализированного бутерброда. Внешний фаерволл фильтрует потенциальные угрозы извне (прямо говоря, в текущем сетапе с CGNAT и NAT на роутере провайдера извне угроз будет минимум). Дальше — ядро сети, вероятно на VyOS. А может и на голом линуксе, не знаю. VyOS выглядит интересно, но они явно говнятся насчёт LTS-сборок для комьюнити, что мне не очень нравится. А мне главное, чтобы на ядре был полноценный линукс: так будет реально быстрый NAT, роутинг и сумасшедшая расширяемость. Завершает бутерброд очередной OPNSense, теперь уже фильтрующий трафик от реверс-прокси и между локальными устройствами в разных подсетях/VLAN. Всё это на двух раздельных коробках с виртуализацией, вторая резервирует первую. Зачем виртуализировать? Так удобнее проводить эксперименты, не ломая сеть — снепшоты и клонирование подстрахуют. Плюс вместо трёх девайсов имеем один. Тот же Minisforum MS-A2 сюда идеально вписывается.
  4. С домашней частью всё проще, и это не так интересно. На точках доступа Wi-Fi будет OpenWrt. Свитч доступа подключён через сегмент хоумлабы (экономим порты на VM-боксах).
  5. И вот начинается часть с хоумлабой. Почти типичная 3-stage Spine-Leaf фабрика с низкой вероятностью блокировки, переподписка 3:1. Edge немного пускает через себя домашний трафик, но через VLANы и строго наверх. Начиная с Edge, все свитчи обязательно должны уметь аппаратный L3 offloading. В андерлее будет только L3, ибо нужен ECMP для одновременной утилизации всех линков. Также порты минимум SFP+ и везде jumbo frames. Поэтому Mikrotik CRS326-24S+2Q+RM показался хорошим решением. В рамках хоумлабы будет разумно использовать одну модель под Spine и Leaf — так можно быстрее заменить вышедший из строя важный свитч (например временно убрав один Spine).
  6. Получается, один модуль хоумлабы состоит примерно из шести мини-ПК с OKD и одного Leaf switch. Из них я планирую использовать под Ceph не больше трёх нод, чтобы не перегружать сеть с переподпиской. Остальные могут быть дешёвыми compute-нодами из б/у Lenovo ThinkStation.
  7. С 80 Gbps каналом между Spine и Leaf на одном Spine место закончится только с четвёртым Leaf. А двух Spine точно хватит для всего. Если совсем ахуеть, можно сделать два Edge-Leaf. Стоит уточнить, что Spine-Leaf нужен только на случай сильного расширения хоумлабы. Вероятно, мой сетап очень долгое время будет довольствоваться одним или двумя свитчами (два можно просто соединить напрямую).
  8. Ужиматься это всё должно примерно до: одного бокса под виртуалки ядра/фаерволов, одного свитча для серверов (вместо целой фабрики), трёх нод OKD, домашнего свитча доступа и одного Wi-Fi роутера. Если иметь много времени на переподготовку, кластер OKD можно ужать до одной машины (SNO). Домашний свитч доступа тоже можно убрать, а компьютеры перевести на Wi-Fi или подключить по витой паре прямо в точку доступа. Вроде бы неплохо.

Поговорим немного про безопасность. Буду придерживаться стратегии defense in depth, т.е. нигде не полагаться на одну меру защиты: если одна мера не сработает, сработает вторая или третья. И даже тут security through obscurity не может быть ключевой мерой безопасности, но как дополнительная мера к реальным мерам безопасности вполне подойдёт. Я, конечно, недостаточно известен в интернетах, чтобы получить таргетированные атаки на свою голову, но всё же немного перестрахуюсь:

Плюс никто не застрахован от попыток китайских/индийских/российских/бразильских ботнетов присоединить вас к себе:

Краткосрочный план

Итак, домашний дата-центр мечты набросали, но с чего начать? Начну с того, что уже есть, добавив только одну машину и свитч:

Хоумлаба на старте

Вот текущий сетап:

  1. Ебучий GPON и роутер от провайдера.
  2. Core прямо на OpenWrt, совмещённый с точкой доступа Wi-Fi. Он уже есть, я вот прямо сейчас через него подключён.
  3. CRS326-24G-2S+IN тоже уже есть, он займётся распределением сети по квартире (с уже готовой разводкой в стенах). В него будут подключены компьютеры других членов семьи.
  4. Разводка в съёмной квартире во многом определяет схему подключения и ширину канала. Надеюсь, в стенах настоящий Cat 5e и 2.5GBASE-T будет работать. По нему соединяем два микрота. Более жирный Mikrotik CRS326-24S+2Q+RM знаменует начало хоумлабы. В него будут воткнуты MS-A2, мой комп и ноут. Будет неплохо, если получится завести Jumbo Frames между компом и сервером. Док-станция моего ноута их не поддерживает, да и незачем с таким каналом.
  5. Как можно заметить, мер безопасности стало на порядок меньше. Ничего, постепенно будем наращивать.

Т.к. мой компьютер будет стоять там же, где и лаба, его можно соединить жирным каналом с лабой. И тем самым это (немного) делает его частью хоумлабы! Будет интересно посмотреть, как с таким каналом справится, например, Nextcloud. Вероятно, плохо, но мы это ещё посмотрим.

Кризис памяти

Напоследок поговорим о проблемах сборки любого компьютера прямо сейчас. Я писал этот текст 2-го ноября, но статья задержалась более чем на месяц, и ситуация усугубилась. В данный момент наблюдается сильное подорожание RAM и SSD из-за бума строительства дата-центров для ИИ. Сначала я думал, что мне кажется и что я сумасшедший, но сомнения отпали, когда я наткнулся на этот пост на r/homelab. При этом дорожают даже потребительские комплектующие. Или производственные линии отдают предпочтение производству более прибыльного серверного железа, или серверное железо заканчивается, и в ход пошло десктопное (вероятно, сразу оба). Вот в такое время мы живём.

График цены на набор DDR5 64GB SO-DIMM

Вот, к примеру, подорожавшая DDR5 SO-DIMM 2x32GB RAM от Crucial, которую я поставил в свой Framework 13.

Цена на Micron MTFDKBG3T8TFR-1BC1ZABYY

Или вот энтерпрайзные SSD, которые два года назад я брал в 4!!! раза дешевле.

График цены на Silicon Power 2TB UD90

А вот цены пошли вверх и на DRAM-less PCIe 4.0 SSD от Silicon Power.

Эх, а ведь только недавно цены на GPU начали хоть немного приближаться к MSRP :C. И у меня есть ощущение, что эти цены с нами ещё до 27-го или даже до 28-го года, когда этот пузырь ИИ дата-центров и сервисов лопнет (предположительно).

Спасибо за прочтение, надеюсь, эта статья была интересной! Старый компьютер я продал, так что следующая статья будет про сборку Micro-ATX ПК для гейминга, работы и взаимодействия с хоумлабой. До встречи!


[1]. Кстати, есть чувак, который буквально сделал хоумлабу в контейнере. Обожаю его сетап!

#homelab #network