Игровые серверы на Cozystack: не первоапрельская шутка
Автор: Timur Tukaev (Ænix)
привет, мир! Мы — команда, стоящая за Cozystack, платформой с открытым исходным кодом для построения облаков на собственном оборудовании. Мы хотим рассказать, почему решили нацелиться на нишу игровых серверов и что из этого вышло.

Что такое Cozystack
Cozystack — это платформа, которая превращает обычные серверы в полноценное облако. Проект входит в CNCF Sandbox, распространяется под лицензией Apache 2.0 и разворачивается на серверах bare-metal.
Из коробки платформа предоставляет более 20 управляемых сервисов: базы данных (PostgreSQL, MariaDB, MongoDB и другие), очереди сообщений (Kafka, RabbitMQ), кеширование (Redis), хранилище S3, виртуальные машины, кластеры Kubernetes, сеть и балансировщики нагрузки. Всё работает непосредственно на оборудовании, без дополнительных слоёв виртуализации.
Почему игровые серверы
Мы провели исследование и увидели устойчивый спрос: хостинг-провайдеры и игровые сообщества ищут альтернативы с предсказуемой производительностью, без привязки к конкретному провайдеру и без сложного лицензирования.
Игровые серверы — одна из самых требовательных рабочих нагрузок: задержки должны быть минимальными, нагрузка непредсказуемо колеблется, а серверы должны быть надёжно изолированы друг от друга. Именно для такого сценария Cozystack хорошо подходит.
Каждый, кто размещал игровые серверы в облаке, знает эту проблему: шумные соседи, непредсказуемый джиттер и всплески задержек. Виртуализация добавляет слой, незаметный в бизнес-приложениях, но сразу ощутимый в играх. Cozystack работает на bare metal: сервер получает выделенные ресурсы, сетевые пакеты обрабатываются максимально близко к оборудованию, а данные реплицируются между узлами, поэтому потеря одного сервера не означает потерю игрового мира.
Мы посмотрели, что уже есть в платформе, и поняли, что большая часть инфраструктуры готова. S3 для карт и ассетов. Базы данных для данных игроков и статистики. Redis для сессий. Очереди сообщений для взаимодействия между серверами. Балансировщики нагрузки, VPN, резервное копирование по расписанию. Оставалось только добавить сами игры.
Как это работает
В Cozystack есть механизм external-apps для подключения внешних репозиториев приложений. После
релиза v1.0 он был существенно переработан: платформа перешла на архитектуру на основе пакетов с ресурсами Package и PackageSource, которыми управляет cozystack-operator. По сути, это работает как apt в Debian, но для Kubernetes:
- Приложения упаковываются в Helm-чарты и публикуются как OCI-артефакты.
- Каждое приложение описывается через
ApplicationDefinition— CRD, который автоматически появляется в панели управления. - Пользователи разворачивают сервер через UI или API, как любой другой управляемый сервис.
- Платформа управляет жизненным циклом: обновления, резервные копии и мониторинг.
Любой может собрать собственный каталог приложений и подключить его к Cozystack, не затрагивая ядро.
Cozylex: первая реализация
Первым шагом стал репозиторий cozylex, подготовленный нашим разработчиком Aleksei Sviridkin, который реализует управляемый Minecraft-сервер:
MinecraftServer— CRD для серверов PaperMC с автоматическими обновлениями, резервными копиями и ограничениями ресурсов.MinecraftPlugin— CRD для установки плагинов из Hangar с автоматическими обновлениями.- Плагины подключаются к серверам через селекторы меток, декларативно.
Подключение к кластеру занимает пару минут, после чего Minecraft появляется в маркетплейсе рядом с PostgreSQL и Redis.
Что дальше
Мы планируем развивать этот подход и превратить его в отдельное направление — Game Server Edition. В ближайшее время мы планируем принять Minecraft-сервер как официальный пример подключаемого приложения и обновить документацию. Далее — Counter-Strike, Rust, FiveM, Factorio и другие.
Итог
Игровые серверы — хороший стресс-тест для платформы. Если она надёжно справляется с рабочей нагрузкой со строгими требованиями к задержкам и I/O, она справится с чем угодно.
Архитектура Cozystack позволяет добавлять новые типы сервисов, не изобретая инфраструктуру заново. Всё необходимое для работы — резервные копии, мониторинг, сеть и хранилище — предоставляется из коробки.
Мы приветствуем контрибьюторов. Механизм external-apps позволяет добавлять приложения, не разбираясь в ядре платформы; достаточно знать Helm и Kubernetes.