Вопрос Cross-server, Docker, Kubernetes, Ansible, Prometheus, Git...

Mioji

Пользователь
Сообщения
286
Решения
14
✨ Тема на размышление, читайте если будет прям очень скучно.

Недавно я задумался об создании продуманных систем на порядок более качественных для серверов Minecraft. Моей задачей было по итогу все максимально упростить и автоматизировать, чтобы лежать на пляже где-то на бали, делать минимум действий для обеспечения стабильности и пить свой кофеёк, наблюдая как деньги текут рекой. Но как дальше я погружался в эту тему, так чаще я начал натыкаться на проблемы и недостаток информации. По этому мне интересно выслушать ваш опыт, идеи и мысли.

Нынче администраторов/начинающих предпринимателей не особо волнует качество техничкой части, стабильность и самое главное - оптимизация. Многие до сих пор запускают сервер из-под root папки, обновляются делая миллон лишних действий, качая сливы, а потом удивляются почему их взломали или почему у них все через одно место. Конечно, многие учатся и совершенствуются, а другие остаются на том же месте.

Я решил попробовать все, что только можно применить для Minecraft. В первую очередь для проекта важно иметь Git под управлением всего (В моем случае GitLab), это банально удобно. Но не все понимают силу Git системы, по этому я разъясню. У меня на проектах или у моих клиентов могут быть сотни, а то и тысячи конфигов/файлов/плагинов/сурсов. Каждый раз заходить и что-то менять в одних и тех же местах очень затратно, по этому лучший способ - это хранение всех файлов в репозитории, а затем оттуда его подсасывать. Это не везде можно использовать, но в некоторых ситуациях ОЧЕНЬ полезно. Для таких целей можно использовать стандартные скрипты, ci/cd или например Ansible (даже чайник разберётся, chatgpt в помощь). По итогу я всегда знаю какая версия конфигов или плагинов у меня, я всегда могу обновить до новой версии или откатить все в пару действий.

Docker безусловно лучший инструмент, если вы хотите не только изолировать систему, но и ограничить ресурсы и окружение, давая только самое необходимое. Но можно ещё дальше, а именно - использование системы оркестрации контейнеров (kubernetes). Для многих это может показаться излишним, но по правде говоря только так вы можете добиться высокой отказоустойчивости и автоматизации ваших серверов. Но, увы, Minecraft буквально не предназначен для работы с Kubernetes, в чистом виде там всего несколько прикольных функций, которые удобно впишутся. Система показывает себя хорошо на больших проектах где используется большое количество микросервисов, серверов и своих технологий, например как на Cristalix. Может быть я в чем-то не прав?)

Но какой толк использовать такие системы, если ваш проект на этапе фундамента очень плох. Оптимизация и безопасность. Я очень много изучал оптимизацию серверов, попробовал буквально все, начиная от самых разных вариантов paper, заканчивая микросервисами, Minestom и folia. Но по итогу самой выгодной и удобной системой оказалось Cross-server или обычный Paper последней версией. Продуманная межсерверная система может обеспечить любому серверу самую грамотную балансировку нагрузки, стабильность и высокую производительность. Вот пример. У меня сейчас есть рабочий проект, где спавн на отдельном сервере, мир на отдельном, а например нагруженный Эндемир/ад совсем на другом. И все это визуально выглядит как один цельный сервер, но фактически это разные сервера. Такая система может выдержать тысячу игроков если постараться, не используя мощный процессор для folia, большое количество памяти и других ресурсов. Это не только экономия ресурсов и денег, но обеспечение стабильности.

Для стабильной работы всего этого супа очень важен выбор стека. Плагины, качество кода, базы данных - все важно. Я использую несколько бесплатных open source плагинов и ряд самописных, продуманных лично мною и реализованные отличными разрабами. В качестве базы данных для основных целей я использую MariaDB, но есть ситуации где используется MongoDB. Для брокера сообщений, кэширования и многих функций кросс-сервера использую Redis. В некоторых случаях я использую другие базы данных, если потребуется, например Prometheus, InfluxDB или Elasticsearch, но они используются для других целей, о которых дальше пойдет речь.

Очень важной частью в моей системе является аналитика и сбор статистики/логов. Сейчас сбор метрик идёт с прокси, серверов, а также некоторых важных сервисов. Куда поступает вся эта информация? Конечно же в Grafana. Все данные хранятся в Prometheus и InfluxDB. Сообщество уже давно создало open source сборщиков метрик, так что вы тоже можете подобное использовать в своих проектах, развернув и настроив все за пару часиков. Без аналитики очень сложно точно понять где проблемы у сервера или как его можно улучшить.

Теперь мне интересно выслушать вас, что и как используете вы? Какие советы дадите? Может быть у вас есть какие-нибудь мысли на этот счёт?
 
✨ Тема на размышление, читайте если будет прям очень скучно.

Недавно я задумался об создании продуманных систем на порядок более качественных для серверов Minecraft. Моей задачей было по итогу все максимально упростить и автоматизировать, чтобы лежать на пляже где-то на бали, делать минимум действий для обеспечения стабильности и пить свой кофеёк, наблюдая как деньги текут рекой. Но как дальше я погружался в эту тему, так чаще я начал натыкаться на проблемы и недостаток информации. По этому мне интересно выслушать ваш опыт, идеи и мысли.

Нынче администраторов/начинающих предпринимателей не особо волнует качество техничкой части, стабильность и самое главное - оптимизация. Многие до сих пор запускают сервер из-под root папки, обновляются делая миллон лишних действий, качая сливы, а потом удивляются почему их взломали или почему у них все через одно место. Конечно, многие учатся и совершенствуются, а другие остаются на том же месте.

Я решил попробовать все, что только можно применить для Minecraft. В первую очередь для проекта важно иметь Git под управлением всего (В моем случае GitLab), это банально удобно. Но не все понимают силу Git системы, по этому я разъясню. У меня на проектах или у моих клиентов могут быть сотни, а то и тысячи конфигов/файлов/плагинов/сурсов. Каждый раз заходить и что-то менять в одних и тех же местах очень затратно, по этому лучший способ - это хранение всех файлов в репозитории, а затем оттуда его подсасывать. Это не везде можно использовать, но в некоторых ситуациях ОЧЕНЬ полезно. Для таких целей можно использовать стандартные скрипты, ci/cd или например Ansible (даже чайник разберётся, chatgpt в помощь). По итогу я всегда знаю какая версия конфигов или плагинов у меня, я всегда могу обновить до новой версии или откатить все в пару действий.

Docker безусловно лучший инструмент, если вы хотите не только изолировать систему, но и ограничить ресурсы и окружение, давая только самое необходимое. Но можно ещё дальше, а именно - использование системы оркестрации контейнеров (kubernetes). Для многих это может показаться излишним, но по правде говоря только так вы можете добиться высокой отказоустойчивости и автоматизации ваших серверов. Но, увы, Minecraft буквально не предназначен для работы с Kubernetes, в чистом виде там всего несколько прикольных функций, которые удобно впишутся. Система показывает себя хорошо на больших проектах где используется большое количество микросервисов, серверов и своих технологий, например как на Cristalix. Может быть я в чем-то не прав?)

Но какой толк использовать такие системы, если ваш проект на этапе фундамента очень плох. Оптимизация и безопасность. Я очень много изучал оптимизацию серверов, попробовал буквально все, начиная от самых разных вариантов paper, заканчивая микросервисами, Minestom и folia. Но по итогу самой выгодной и удобной системой оказалось Cross-server или обычный Paper последней версией. Продуманная межсерверная система может обеспечить любому серверу самую грамотную балансировку нагрузки, стабильность и высокую производительность. Вот пример. У меня сейчас есть рабочий проект, где спавн на отдельном сервере, мир на отдельном, а например нагруженный Эндемир/ад совсем на другом. И все это визуально выглядит как один цельный сервер, но фактически это разные сервера. Такая система может выдержать тысячу игроков если постараться, не используя мощный процессор для folia, большое количество памяти и других ресурсов. Это не только экономия ресурсов и денег, но обеспечение стабильности.

Для стабильной работы всего этого супа очень важен выбор стека. Плагины, качество кода, базы данных - все важно. Я использую несколько бесплатных open source плагинов и ряд самописных, продуманных лично мною и реализованные отличными разрабами. В качестве базы данных для основных целей я использую MariaDB, но есть ситуации где используется MongoDB. Для брокера сообщений, кэширования и многих функций кросс-сервера использую Redis. В некоторых случаях я использую другие базы данных, если потребуется, например Prometheus, InfluxDB или Elasticsearch, но они используются для других целей, о которых дальше пойдет речь.

Очень важной частью в моей системе является аналитика и сбор статистики/логов. Сейчас сбор метрик идёт с прокси, серверов, а также некоторых важных сервисов. Куда поступает вся эта информация? Конечно же в Grafana. Все данные хранятся в Prometheus и InfluxDB. Сообщество уже давно создало open source сборщиков метрик, так что вы тоже можете подобное использовать в своих проектах, развернув и настроив все за пару часиков. Без аналитики очень сложно точно понять где проблемы у сервера или как его можно улучшить.

Теперь мне интересно выслушать вас, что и как используете вы? Какие советы дадите? Может быть у вас есть какие-нибудь мысли на этот счёт.
Можно ли хранить на GitHub конфигурации плагинов что бы не заливать на Яндекс диск папку plugins?
 
Можно ли хранить на GitHub конфигурации плагинов что бы не заливать на Яндекс диск папку plugins?
Да, это можно без проблем, главное настрой .gitignore, чтобы не хранить и не пушить лишний мусор, например логи, jar файлы и так далее. У GitHub ограничение памяти в 500мб на один репозиторий, но для конфигов/сурсов этого вполне достаточно.
 
Назад
Сверху Снизу