История одного домашнего дата-центра
unit7.cloud/
unit7.cloud/accounts/register/
MVP дата-центра
История началась осенью 2021 года с посадочной страницы (разумеется, на jquery, яжбэкендер). На ней предлагалось «собрать» компьютер с GPU, чтобы затем взять его в аренду. Я выводил различные комплектующие (GPU, CPU, RAM, SSD), доступные в ритейле, кое-как высчитывал цену аренды и далее вёл потенциальных клиентов в Телеграм для обсуждения деталей. К началу 2022 года была проверена масса различных гипотез о том, какие комплектующие «ок», какие нет.
Сборка на AMD Threadripper 3970X
Например, был клиент, запросивший 32-ядерный AMD Threadripper 3970X, мы договорились о сборке в течение месяца, я закупил комплектующих на 250К₽, комп был собран, поставлена Windows Server 2019, адаптированы некоторые драйверы, которые поддерживали Windows 10, не 2019 и так далее… А клиент перестал выходить на связь. Конечно, стало понятно, что аренда таких конфигураций слишком дорогое удовольствие и под конкретные задачи их обычно просто покупают. Примерно через 4 месяца после этого мне удалось продать эту сборку на авито по себестоимости человеку, который приехал специально за ней из Минска с пачкой наличности. И уже затем картинка того, какие конфигурации действительно берут в аренду стала вырисовываться. Теперь уже без предоплаты мы не предоставляем серверы в аренду и даже не начинаем закупать комплектующие, если сборка какая-то особенная.
Стали появляться первые реальные клиенты, поэтому была сделана интеграция с банком, онлайн-кассой и ОФД (по одному API от банка), посадочная переписана на ReactJS, на нём же с теми компонентами написан зачаток личного кабинета клиента с пополнением баланса и выводом его клиенту, плюс некий список арендуемых компьютеров.
В качестве помещения была выбрана пустующая ипотечная квартира с ремонтом от застройщика (стены, ламинат и ванная комната — это всё, что там было). Был собран стеллаж, в который я поместил первые пару компьютеров. Интернет куплен у местного провайдера на физлицо под названием «800 Мбит/с».
Бизнес-идея была такая: десктопное железо (а-ля Kimsufi) + дискретные GPU = экономия клиента в 3-4 раза по сравнению с серверными аналогами. Все машины были спрятаны за роутером с 1 статическим IP и port forwarding'ом до конкретного компьютера. Да, всё верно, задачи клиентов не лежали в области хостинга веб-сайтов или даже работы 1C. В основном это были дата-сатанистыdata scientists, обучающие свои нейронки. Именно поэтому им не подходили решения от Селектела и прочих, где видеокарта с ОЗУ не меньше 24 Гб стоила от 80К₽, а в случае падения или недоступности я компенсировал 100% простоя округлённого до суток (т.е. обычно это было 2400% компенсации) для компенсации не-такой-высокой-отказоустойчивости. На втором месте по численности были рабочие места (VDI, только не виртуальные, а на физических компьютерах) под Photoshop, DaVinci Resolve, hashcat, GTA 6 и т.п.
По мере заселения новостройки, в течении полугода обслуживания нескольких клиентов, от интернета в «800 Мбит/с» осталась только вторая часть «Мбит/с», клиенты скидывали speedtest'ы, где мог быть 4 Мбит/с и потери пакетов в 8-10%. Меня такой расклад не устраивал и клиентов тоже.
Поэтому до подключения заготовленных тушек (платформ) дело не дошло — нужно было поработать над качеством самой локации, переходить от MVP и проверки гипотез спроса и ценности к созданию чего-то более качественного. Как минимум, с т.з. интернет-канала. Плюс, иногда отключали электричество, самый длинный отрезок составил 40 минут. У каждого компьютера была своя UPS, что спасло ситуацию в целом. Однако, интернет отключался вместе с э/э во всём доме, поэтому для многих клиентов это было равнозначно отключению э/э (хотя даже это для некоторых было не критично). Решено было собрать принципиально новую схему работы, сменив локацию. В том числе с целью увеличить кол-во киловатт (в квартире было 13 кВт), так как расчётное макс.потребление 1 компьютера было от 450 до 750 Вт, то кол-во компьютеров было в районе 15-17, чтобы можно было ещё и свет включить с чайником без риска вылететь.
Новая локация
Помещение было найдено на территории завода с двумя вводами (2 независимые подстанции) и пока арендодатель расчищал завалы, мы приступили к проектированию.
Были арендованы 2 помещения общей площадью ~50 кв. м, одно ~22 кв.м под сборочную, второе ~28 кв.м под серверную, оборудовано металлической дверью и 50 кВт э/э.
Размеры выбранных стеллажей были 2000 мм в высоту и ширину, 600 мм в глубину. Поэтому по проекту влезало 9 таких стеллажей по 12-14 серверов и 3 UPS'ки у стены. Итого максимальная ёмкость, которую можно было достичь была 126 компьютеров формата Mid Tower (плюс, предусмотрели, чтобы в каждом стеллаже была полка под Full Tower, т.е. 4 Full Tower на 1 стеллаж), что было избыточно, учитывая кол-во киловатт. тем не менее, мы договорились с арендодателем, что при желании (и за доп. деньги) они смогу подвести ещё 50 кВт в будущем в течении полугода. Что я посчитал приемлемым.
Разведение электропроводки от байпасов до стеллажей
Сразу же было заложено 3 UPS'ки по 40 kVA каждая (~36 кВт). На территорию завода 2 независимых ввода, при этом весь корпус переключается между ними вручную в случае плановых работ или аварий арендодателем. Поэтому 1 UPS'ка подключается к 1 электрощиту, плюс 1 UPS резервная. Через систему байпасов и автоматов электрощитках, мы с командой заложили возможность выводить из эксплуатацию любую UPS, переключая нагрузку на UPS №1, она физически подключена ко всем электрощиткам и всем нагрузкам, на байпасах прописано какой вентиль за что отвечает, в электрощитках приклеены схемы подключений.
Как только грязные работы были проведены, мы начали перевозить компьютеры по мере возможности и подключать их через времянки в один из электрощитков, защищая теми же индивидуальными UPS'ами, что в предыдущей локации. Это спасало от перепадов напряжения (производство всё таки), которые пришли на смену отключениям э/э.
Мы переезжали с февраля по март 2023. До этого мне казалось, что если сотрудник чего-то не может, то это сделаю я. Однако, в процессе я научился нанимать фрилансеров на разовые работы — этот урок стоил мне сорванной спины (стал нанимать грузчиков) и расплавившегося в руках болтачуть не стоил жизни во время подключения аккумуляторов в одну из UPS (стал нанимать электриков). Теперь перед действиями я советуюсь с релевантными специалистами: с меня эскиз задачи, с них возражения, корректировки и конечное решение, когда задача детализирована и экономически целесообразна. Так получилось мини-КБ, в котором стали появляться различные решения, например, стойки для десктопного железа.
Линейка выделенных серверов (без дискретной GPU)
Появился клиент, которой симпатизировал моему подходу в создании и развитии дата-центра, и ему было интересно работать только на своём железе и в своём ЦОДе. Подход, о котором я пишу, можно охарактеризовать как проверка гипотез и переизобретение тех вещей, которые можно сделать дешевле без существенной потери в отказоустойчивости. Так появилась идея продать мой дата-центр и себя в рабствотоп-менеджеры с KPI привязанными к успешности проекта на рынке. Мы договорились об испытательном сроке, цели запустить 100+ серверов, продаже бизнеса через 3 месяца и ударили по рукам.
Проект заключается в том, чтобы запустить сервера на десктопном железе, поэтому можно было забыть про дискретные видеокарты. Плюс, помахать рукой уходящим в закат Hetzner и другим европейским дата-центрам с выделенными серверами на AMD Ryzen и Intel Core. Если убрать из уравнения дискретные видеокарты, то минимальный занимаемый компьютером объём можно резко сократить без потери в эффективности охлаждения. Поэтому я достал свои старые эскизы стойки для десктопного железа — проект не пошедший в работу из-за экономической нецелесообразности, для GPU-серверов дешевле было найти б/у корпус на авито, чем делать металлический каркас самостоятельно.
У моего клиента-покупателя-бизнеса были в аренде и требовали миграции из Европы в РФ десятки серверов с конкретными характеристиками и имелись хотелки по их изменению в лучшую сторону. Поэтому мы выбрали Ryzen'ы последнего поколения (Zen 4) с DDR5 и сформировали конфигурации под стать AX-52 и AX-102 от Hetzner. А чтобы разметить 100+ серверов в нашем небольшом помещении максимально бюджетно, спроектировали стойки под десктопное железо.
Стойки для десктопного железа
Напомню, что габариты стеллажей для GPU-серверов (читай «произвольной конфигурации») 2000х2000х600 мм. Поэтому высота стоек для нормального функционирования холодной комнаты должна была быть 2000 мм, а глубина позволяет быть до 600 мм. Следующим шагом был расчёт минимальной высоты для 1 компьютера. Оптимистичные 4 см превратились в 5, затем в 7.5, в итоге, после обнаружения достойных CPU кулеров, оказалось, что высота полки должна быть 10 см.
Нужно поддерживать размеры материнских плат от microATX до E-ATX, плюс корпусный вентилятор для охлаждения, плюс возможные диски 2.5", плюс допуски по бокам, итого 400х400 мм под полочку для сервера, плюс выносная планка для кабель менеджмента (например, разводки витой пары) на 20 см (тесты показали, что удобен именно такой размер). Чтобы сэкономить на блоках питания, решено было поставить 1 мощный блок (на ~3 кВт) на всю стойку и сделать разводку 12 В до каждой полки. Позже я узнал, что бигтехи в OpenComputeProject пришли примерно к такому же решению многими годами раньше меня. Далее скучные расчёты сечения проводов, создание специальных переходников на EPS8 + PCIE на PicoPSU для каждой материнки и так далее. Затем изготовление полочек из старых компьютерных корпусов с помощью смекалки, болгарки и молотка. А так же тестирование результата на каждом этапе. Например, фото ниже показывает одно из первых тестирований. Из него мы узнали как страшно крепить материнку близко к краю и что сборка каркаса гайками вовнутрь при выдвижении полки без салазок подстраховывает администратора от падения полки.
В итоге было сформировано понимание того, что удобно, а что может быть опасным (у нас же нет слазок, например). Методом проверки различных гипотез мы пришли к определённому формату металлического каркаса, пластин в полки с защитой от провисания, креплениями для материнской платы и отверстиями для кабелей и крепления 2.5" дисков. И затем заказали производство полок по своему эскизу в компании, занимающейся металлопрокатом, с лазерной резкой и ЧПУ.
Ограниченность пространства в нашей локации внесла свои коррективы — холодная комната оказалась необитаемойнепроходимой, поэтому стойки сделаны так, чтобы полки доставались из горячей комнаты, а кабели не сильно мешали этому процессу. Однако, новые стойки делаются по-другому. Их конструкция даёт возможность доставать пластину с сервером с обеих сторон стойки. На фото слева вы можете видеть первую MVP стойку, запущенную в эксплуатацию. Большинство решений тестируются на ней, поэтому она такая страшная в том числе, IP KVM и 2U кулеры под сокет AM5 (фото ниже) для охлаждения CPU с TDP до 150 Вт (если поварпроизводитель нам не врёт) вместо 125 Вт у классических кулеров…
Следующее поколение стоек
Практика показала, что у подхода собственных стоек для десктопного железа большая экономия средств и места в сравнении с использованием стеллажей и корпусов. Однако, имеются недостатки:
Для корпоративного клиента, управлять питанием на уровне стоек, вместо управления питанием на уровне сервера — это «ок», но нужен аналог PDU с удаленным управлением (такие стоят от 120К₽). У нас уже есть решение, которое интегрируется прямо в стойки нашего формата, сейчас оно проходит тестирование в бою для нескольких полок. За основу взяты девайсы умного дома, перепрошиты, подключены к нашему серверу и управляются по API из личного кабинета. В зависимости от требований к стойкам, это может быть как управление power button, так и управление электропитанием полки с физической кнопкой в стойке.
В десктопном железе отсутствует IPMI. Поэтому прямо сейчас мы проектируем решение в своём духе бюджетно и с достаточной отказоустойчивостью. Оно претендует скорее на звание IP KVM (аналоги стоят в районе 400К₽), так как IPMI PCIe-платы должны стоить так же как материнская плата ATX. В принципе, для клиента это может быть «ок» ставить IPMI плату ценой в 1/3 от управляемого железа. Но ещё неизвестно, есть ли программная совместимость между, например, ASPEED AST 2500 BMC и мат.платой от MSI на чипсете AMD B650 или <любое другое сочетание IPMI чипа и мат платы с сокетом AM5>. Мы же решили пойти путём удалённого KVM, совмещённого с управлением питанием полки и power button сервера. А задачи мониторинга остальных параметров системы (которые есть в IPMI) решить программным путём, пусть и не так круто, как это сделано в распаянных в материнской плате IPMI, главное, чтобы оказалось достаточно круто для наших клиентов.
unit7.cloud/
unit7.cloud/accounts/register/