
Запуск нескольких серверов Minecraft с CloudNet
"Современное приложение, которое может динамически и легко доставлять ориентированное на Minecraft программное обеспечение"
CloudNetService/CloudNet, github.com
Строительство сети серверов Minecraft отличается от запуска одного сервера для выживания. У вас есть разные группы игроков, подключающиеся в разное время, серверы, которые необходимо запускать и останавливать по требованию, и постоянная головной боль по поддержанию всего в стабильном состоянии, при этом эффективно используя ресурсы. CloudNet - открытая Java-фреймворк, автоматизирующий все это. Вместо ручного управления несколькими экземплярами серверов, вы получаете динамическое развертывание, автоматическое масштабирование и балансировку нагрузки. Он предназначен для администраторов серверов, устали от опеки над консольными окнами.
Что делает CloudNet
CloudNet - это фреймворк управления облачной сетью, который обрабатывает оркестрацию нескольких серверов Minecraft через вашу инфраструктуру. Представьте его как автоматического директора трафика для вашей сети серверов. Когда игроки входят в систему, CloudNet решает, на какой сервер они подключаются, запускает новые экземпляры при необходимости и отключает неиспользуемые, чтобы сэкономить ресурсы. Это не middleware, который вы устанавливаете на ваш сервер Spigot - это полнофункциональный фреймворк, который вы запускаете отдельно для управления всем остальным.
Проект существует уже несколько лет и получает регулярные обновления. Последний релиз (v3.4.5) поддерживает последние версии Minecraft и исправляет проблемы совместимости. С 442 звездами на GitHub, у него есть прочная поддержка сообщества. Фреймворк написан на Java и распространяется под лицензией Apache-2.0, поэтому вы можете использовать и модифицировать его свободно.
По сути, CloudNet автоматизирует скучную работу по инфраструктуре, чтобы вы могли сосредоточиться на реальном управлении сервером и его функциями.
Кому это нужно
Если вы запускаете один сервер vanilla для выживания, CloudNet - это излишек. Вам не нужно это. Но если вы хостите несколько типов серверов (выживание, креатив, мини-игры, PvP), управляете распределением игроков, или хотите, чтобы серверы масштабировались на основе трафика, CloudNet становится действительно полезным.
Общие случаи использования включают:
- Хостинг сетей с разными игровыми режимами, которые делят базу игроков
- Автоматическое создание серверов мини-игр, когда достаточно игроков в очереди
- Балансировка нагрузки через несколько физических серверов или облачных инстансов
- Снижение затрат на ресурсы путем автоматического отключения пустых серверов
- Немедленное развертывание настроек плагинов по всей сети
Посмотрите список настоящих серверов Minecraft, чтобы увидеть примеры сетей, которые обрабатывают такой масштаб. Большинство крупных публичных серверов используют что-то вроде CloudNet под капотом.
Как начать
Вам понадобится JDK 25 для сборки из исходников или вы можете скачать предварительно собранный релиз. CloudNet публикует сборки в Maven Central, что делает интеграцию в вашу сборочную пайплайн простой.
Если вы используете Gradle, добавьте это в свой файл сборки:
repositories {
mavenCentral()
}
dependencies {
compileOnly 'eu.cloudnetservice.cloudnet:driver:3.4.5'
}Пользователи Maven вместо этого добавят:
eu.cloudnetservice.cloudnet
driver
3.4.5
provided
Проект также поставляется с образами Docker на Docker Hub, поэтому если вы контейнеризируете свою инфраструктуру, вы можете запустить узлы CloudNet за секунды. На самом деле, это путь, который выбирают большинство новых пользователей.
Ключевые компоненты и их работа
CloudNet делит свою функциональность на разные артефакты в зависимости от того, что вы строите.
Модуль driver - это то, что вы будете использовать чаще всего. Это базовый API, который запускается на каждом сервере Minecraft в вашей сети, будь то сервер Spigot, пользовательский обертка или форк. Любой плагин, который нуждается в общении с CloudNet, импортирует это.
Если ваш плагин требует более глубокого доступа к тому, что CloudNet делает внутренне, вы бы использовали модуль wrapper-jvm для более детального контроля. Модуль node дает вам доступ к функциям узла, если вы строите что-то, что управляет инфраструктурой сама по себе. А модуль bridge позволяет взаимодействовать с игроками и перехватывать события, независимо от того, на каком физическом сервере они находятся в вашей сети.
Импорт Bill of Materials (BOM) - это просто удобство - он блокирует все зависимости CloudNet под одну и ту же версию, чтобы избежать несоответствий версий в вашей сборке.
Что CloudNet берет на себя
Динамическое обеспечение серверов - это то, где CloudNet сияет. Вы определяете шаблоны для разных типов серверов. Когда игроки входят и собираются в очереди на лобби, CloudNet обнаруживает количество игроков и автоматически запускает новые серверы мини-игр. Когда все уйдут, он их отключает. Вы платите только за ресурсы, которые действительно используете.
Балансировка нагрузки происходит прозрачно. Новые игроки направляются на сервер с наибольшим свободным местом. Если один сервер крахнется, CloudNet может автоматически перезапустить его или перенаправить трафик куда-то еще.
События игроков на уровне сети также возможны. Плагин может подключиться к модулю bridge CloudNet и обработать перемещение игроков между серверами, чат или синхронизацию инвентаря по всей сети. Это полезно для лобби-серверов, которые нуждаются в том, чтобы знать, когда игрок закончил играть.
Общие ошибки и ловушки
Самая большая ошибка, которую делают новые пользователи, - неправильная настройка шаблонов серверов. Если ваш шаблон имеет неправильные аргументы JVM или список плагинов, все созданные серверы наследуют эти ошибки. Тщательно тестируйте шаблоны в изоляции сначала.
Связь в сети может быть капризной. Узлы CloudNet нуждаются в общении друг с другом, и если ваш брандмауэр или перенаправление портов неправильно настроены, узлы просто молчаливо не подключаются. Агрессивно проверяйте логи, когда что-то не работает. Также, если вы запускаете это в Docker, убедитесь, что вы не используете привязки localhost - используйте явные IP-адреса или контейнерную сеть.
Совместимость плагинов - это еще одна вещь. Не каждый плагин Spigot был написан с учетом сети CloudNet. Некоторые плагины кэшируют данные локально и не обрабатывают переход игроков между серверами грациозно. Вам, возможно, придется исправлять плагины или полностью избегать некоторых из них.
И поскольку CloudNet управляет всей вашей инфраструктурой, неправильная настройка может привести к падению всей вашей сети, а не только одного сервера. Тестируйте изменения в тестовой среде сначала.
Снапшоты и версии bleeding edge
Проект строит снапшоты из ночной ветки, которые вы можете загрузить, если хотите получить последние исправления до официальных релизов. Они публикуются в репозиторий Maven снапшотов: https://central.sonatype.com/repository/maven-snapshots/. Просто добавьте -SNAPSHOT к номеру версии.
Если вы не отслеживаете конкретное исправление ошибки, придерживайтесь официальных релизов. Снапшоты могут быть нестабильными.
Альтернативы для рассмотрения
Если вы рассматриваете другие решения, BungeeCord был оригинальным прокси-решением для сетей серверов Minecraft. Он проще и легче, но не делает динамическое управление серверами. Вы просто рутинно направляете игроков.
Velocity - это более современный, ориентированный на производительность прокси. Опять же, это только рутинг - вы все еще управляете серверами вручную.
Kubernetes с контейнеризированными серверами Minecraft - это корпоративный подход. Это излишек для большинства настроек, но дает оркестрацию на уровне инфраструктуры. CloudNet специально разработан для Minecraft, поэтому он проще в понимании и дешевле в эксплуатации на меньших масштабах.
Если вы хотите проявить творчество в генерации серверов, посмотрите генератор текста Minecraft для процедурного контента - хотя это другое применение.
Должны ли вы использовать это?
CloudNet действительно впечатляет в том, что он делает. Если вы управляете сетью, он сохраняет реальную операционную нагрузку. Но это также сложность, и сложность имеет свою цену. Вам нужно понимать Java, сети и операции с серверами. Каждому нужна тестовая среда для безопасных тестов.
Начните с него, если вы уже комфортно чувствуете себя, управляя несколькими серверами и устали от ручной работы. Не начинайте с него, если вы просто хотите один хороший сервер, чтобы играть с друзьями.
Проект хорошо поддерживается, документация существует, и сообщество в их Discord может помочь, когда вы застрянете. Это действительно редко встречается в открытых проектах игровой инфраструктуры, поэтому это стоит чего-то.
CloudNetService/CloudNet - Apache-2.0, ★442Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Комментарии
Пока нет комментариев. Станьте первым, кто поделится своим мнением!


