Agones, создаем многопользовательский игровой сервер. Архитектура и установка / Хабр

Agones, создаем многопользовательский игровой сервер. Архитектура и установка / Хабр Хостинг

Собственный игровой хостинг — почему это актуально

Хотя пандемия и экономико-политические кризисы последнего времени замедлили рост игровой индустрии, статистика утверждает, что число активных геймеров на планете уже превысило отметку в 2,95 млрд человек. Согласно отчету аналитиков из Boston Consulting Group, общий объем рынка игр и киберспорта в конце прошлого года составил рекордные 175 млрд долларов.

Одним из главных факторов роста для цифровых развлечений стали многопользовательские онлайн-игры, вроде Minecraft, World of Warcraft, Lineage, Dota 2, San Andreas: Multiplayer и Counter-Strike: GO. Они позволяют геймерам создавать свои собственные виртуальные миры, полные азарта и адреналина.

https://www.youtube.com/watch?v=n5d8t-to0qw

Тут будет недостаточно ресурсов даже продвинутого ПК. Нужны свои игровые серверы, что может быть довольно дорогостоящим предприятием. Это касается не только приобретение техники, но и ее эксплуатации и технического обслуживания, что требует определенного уровня технической подготовки.

Наиболее популярным решением для хостинга игр на удаленных серверах являются виртуальные серверы или VPS. Об особенностях применения этой технологии в игровой индустрии мы расскажем подробнее.

Архитектура, основные элементы

Сам по себе Agones берет на себя задачу запуска, автоматического расширения и хостинга игровых серверов используя в основе Kubernetes. Это позволяет сосредоточиться на разработке самого сервера многопользовательской игры, вместо разработки ее инфраструктуры и дальнейшей поддержки.

Agones Kubernetes API делится на три основных пакета (packages), в каждом из которых находятся ресурсы: agones.dev (GameServer, GameServerSet, Fleet), allocation.agones.dev (GameServerAllocation), autoscaling.agones.dev (FleetAutoscaler). Как и в других ресурсах Kubernetes для их запуска используется yaml файлы.

Краткое описание каждого ресурса:

  • GameServer — создает некий шаблон, который позволяет использовать обычные Pod параметры, с некоторыми дополнениями, такие как hostPort и containerPort для игрового сервера. Agones SDK предоставляет дополнительный контейнер «помощник» (sidecar), с которым GameServer в процессе будет постоянно общаться
  • GameServerSet — структура данных для нескольких GameServer, очень схоже с отношением между Depoyment и ReplicaSet
  • Fleet — создает несколько готовых GameServer, используется GameServerAllocation для распределения ресурсов
  • GameServerAllocation — запрашивает GameServer из Fleet для использования и помечает, что он готов для использования игроками, благодаря этому GameServer не будет автоматически удален
  • FleetAutoscaler — автоматически расширяет или, наоборот, уменьшает количество серверов во Fleet

Диаграмма (отсюда) показывает жизненный цикл GameServer ресурса:

Фиолетовыми стрелками отмечена работа Agones SDK, красным — API пользователя, синим — контроллер игрового сервера, желтым — контроллер приложения.

Описание проекта

Agones представляет собой Custom Resource (расширение Kubernetes API).

Проект в действительности требует большего внимания, так как позволяет запускать единичный игровой сервер (GameServer) или же целый «флот» серверов (Fleets) посредством конфигурационных yaml файлов, через Agones API. В свою очередь, каждый сервер дает оповещения о его жизненном цикле (GameServer lifecycles), описывая текущий статус (health checking, connection information).

Сервера в кластере имеют возможность автоматического масштабирования (Fleet Autoscaling), которые интегрированы с базовыми возможностями Kubernetes. В дополнение, есть вывод статистики на панели (dashboard) с помощью Prometheus, Grafana или Stackdriver, экспортируются метрики посредством OpenCensus, что позволяет добавить собственный экспортер. Пример dashboard’a в Stackdriver:

Что нужно для игрового сервера

Каждый, кто раньше собирал компьютер с нуля, имеет приблизительное представление о том, что необходимо для запуска игрового сервера на VPS-хостинге. Главное отличие заключается в том, что собирать приходится части не физической, а виртуальной машины.

На конкретных типах серверных ресурсов стоит остановиться подробнее. Для полноценной работы игровому серверу нужны:

  • Стабильное подключение к Интернету. Основой многопользовательской игры онлайн является высокая надежность интернет-соединения, исключающее риск потери каких-либо важных игровых данных.
  • Широкий интернет-канал. От этого параметра зависит пинг — скорость передачи пакетов данных от пользовательского ПК до сервера и обратно. Для того, чтобы игровой процесс на сервере, рассчитанном на 50-100 человек происходил без зависаний, желательно иметь ширину канала порядка 100 Мбит/сек.
  • Статический IP-адрес. Постоянный IP-адрес необходим для любого выделенного игрового сервера — именно с его помощью геймеры и находят развлекательную онлайн площадку. Большинство провайдеров услуг VPS предоставляют своим клиентам эту опцию по умолчанию, а некоторые (как Eternalhost) закрепляют за виртуальным сервером не только статический, но и белый IP.
  • Мощный процессор. Еще одним требованием к игровому хостингу является высокая вычислительная мощность, то есть скорость и производительность процессора. От этого зависит, насколько быстро сервер будет реагировать на запросы многочисленных пользователей онлайн-игры.
  • Большой объем оперативной памяти. Этот параметр напрямую зависит от предполагаемого количества геймеров (числа слотов) и величины создаваемого игрового мира. Для поддержки многопользовательской игры на игровом сервере потребуется минимум 1 ГБ оперативной памяти.
  • Достаточно места на диске. Популярные онлайн-игры предъявляют различные требования к объему серверного диска. Помимо места собственно для игры, а также плагинов и модов к ней, при создании сервера игры требуется учесть объем памяти, необходимый для добавления каждого участника.
  • Высокоскоростные диски. Для сетевых игр крайне важна высокая скорость работы файловой системы. Поэтому при поиске качественного хостинга для игры, желательно выбирать  серверы на базе быстрых SSD или NVMe дисков, а не HDD, которые отличаются более медленной скоростью случайного чтения.
Читайте также:  Легко создайте почтовый сервер в Debian 10: Интернет стал проще

К примеру. Для запуска выделенного сервера с игрой Minecraft на 10-25 игроков потребуется процессор с тактовой частотой от 2.8 ГГц, не менее 2 Гб оперативной памяти и 15 Гб на диске, а также интернет-канал от 10 Мбит/с. Официальная платформа разработчиков игры Vanilla более требовательна к потреблению ресурсов, поэтому нужно прибавить к расчету еще 50 Мб оперативной памяти на каждого игрока на сервере. Для комфортной игры в Minecraft на платформе Bukkit пользователю будет достаточно выделить дополнительно 5-10 Мб оперативки.

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

Алгоритм размещения игрового сервера на vps

  1. Выбор тарифа VPS. Чтобы подобрать виртуальный сервер под требования игрового хостинга, нужно правильно рассчитать количество аппаратных ресурсов, требуемых для запуска игры, а также учесть примерное число пользователей, которые будут одновременно в нее играть. Наиболее важными ресурсами, необходимыми для размещения игры на VPS, являются вычислительная мощность и память. С помощью VPS-хостинга можно настроить объем каждого типа ресурсов индивидуально.
  2. Установка операционной системы. На виртуальной машине можно легко установить или переустановить любую необходимую для развертывания игры ОС через панель управления услугой, в которой происходят все базовые настройки VPS.
  3. Конфигурация операционной системы. Помимо установки, необходимо дополнительно настроить операционную систему так, чтобы она работала как веб-сервер. Например, для ОС Windows нужно будет настроить службу IIS, а для развертывания веб-сервера на ОС Linux — установить комплект инструментов (стек) LEMP (Linux, Nginx, MySQL, PHP) или LAMP (Linux, Apache, MySQL, PHP). Эти операции могут потребовать более продвинутых знаний в системном администрировании.
  4. Установка игрового сервера. Как только подготовка виртуального сервера завершена, нужно зайти на него и настроить сам игровой сервер. Этот процесс будет варьироваться в зависимости от того, какая игра выбрана. Например, выделенный сервер для игр, доступных в Steam, загружаются и устанавливаются из системы SteamPipe через собственный консольный клиент SteamCMD. В других случаях нужно пользоваться документацией, предоставленной разработчиком игры, или обращаться за помощью к сообществу игры.
  5. Настройка политик безопасности. После того как игровой сервер установлен, следует убедиться, что группы геймеров могут пользоваться им без ущерба для себя. Подробнее о том, как обезопасить свой сервер VDS для игр можно почитать здесь.
  6. Настройка сетевых портов на VPS. Этот завершающий шаг позволяет предоставить доступ всем заинтересованным пользователям к игровому серверу. Процесс также варьируется в зависимости от конкретного хостинга и требует определенных технических знаний.

Хотя чисто технически можно запустить игровой хостинг на VDS без доменного имени, его наличие сильно упрощает взаимодействие пользователей с игрой. Без домена игроки будут вынуждены запоминать числовой IP-адрес сервера. Уникальное доменное имя «брендирует» игровой сервер, что дает дополнительные возможности для его рекламного и SEO-продвижения.

Варианты выделенного хостинга

Выделенный хостинг дает вам гораздо больше свободы и контроля. Вы можете разместить несколько игровых серверов в одном боксе, а также несколько разных игр, и, поскольку у вас есть полный доступ к боксу, вы даже можете разместить веб-сервер для запуска веб-сайта вне сервера или чего-либо еще, не связанного с игрой.

Варианты общего хостинга

Панель управления управляемым игровым сервером
Nodecraft

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

Вносим изменения в gameserver

Используя предыдущий пример изменим ответ сервера. Для начала скопируем репозиторий проекта:

Выделенный против общего хостинга

Выделенный хостинг — это когда вы арендуете всю стойку сервера или, зачастую, часть ресурсов этой стойки. Вам часто дают подробные спецификации о том, что именно вы покупаете, и вы, как правило, будете платить немного больше по сравнению с виртуальным хостингом.

Читайте также:  Скачать бесплатный кодек для асинхронного вывода с исходным кодом файла

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

Если вы хотите настроить сервер для себя и пары друзей, мы рекомендуем вам сэкономить деньги и получить общий хостинг. Если вы хотите, чтобы на вашем сервере играло много людей, вам следует сначала попробовать виртуальный хостинг и при необходимости перейти на выделенный хостинг.

В зависимости от того, у какого поставщика вы покупаете сервер, вы также можете получить управляемый хостинг , то есть когда поставщик создает инструменты для автоматической установки, настройки и управления сервером, такие как автоматический перезапуск и простая установка модов.

Гибкая настройка

С помощью root-доступа владелец игрового хостинга на VPS может контролировать любой аспект работы сервера, начиная с выбора операционной системы и заканчивая точной конфигурацией каждого отдельного порта на сервере. Полный административный доступ дает беспрецедентную гибкость любому, кто хочет полноценно управлять игровым сервером.

Запуск gameserver

Теперь можно запустить в кластере UDP сервер используя готовый тестовый сервер из примеров, который будет просто отвечать на посланный к нему запрос:

Запускаем сервер локально

Итерировать изменения для удобной разработки можно и без Kubernetes, используя только Agones SDK. Во время работы игрового сервера SDK общается через TCP с маленьким gRPC сервером, который Agones запускает в контейнере под тем же namespace. Такой контейнер в Kubernetes называется sidecar.

Поэтому, для локальной разработки необходимо запустить процесс SDK. Для этого потребуется запустить его исходный файл с параметром -local, который включает режим ‘local mode’. Этот режим говорит процессу быть в пассивном режиме и никуда не подсоединяться, только лишь выводить логи в консоль, чтобы можно было видеть, что делает SDK во время работы игрового сервера.

Как создать хостинг игровых серверов?

Всем привет.Хочу создать хостинг игровых серверов.Знаю ,что это прибыльно ,однако нужно постоянно следить будет за хостингом ,обновлять и так далее.Вообщем научился устанавливать сервера на VDS (Linux Debian) через ssh .Получилось создать круглосуточный сервер minecraft,css,cs go,cs 1.6 ,samp.Вроде бы ничего сложного,научился базовым командам в linux (установка,обновления,запуск sh скриптов,создание папок,пользователей и т.к.д)

Теперь возникает вопрос,как создать саму (северную часть web) для управления серверами ?

Я сейчас учу php ,в какую сторону копать чтобы написать управляющие скрипты серверами ?

Какие характеристики VDS нужны ,чтобы сервер не падал и мог держать большие онлайн игроков.

Если неправильно изложил суть вопроса,то напишу так:
Хочу создать свою панель управления серверами.

Лучшие ресурсы

Шаред-хостинг действительно прост в использовании, но, как правило, ему не хватает ресурсных возможностей для работы с играми. Владелец VPS оперирует не только большим количеством аппаратных ресурсов, но и может быть абсолютно уверен в их качестве.

При размещении на веб-хостинге ресурсы общего сервера распределяются по очереди между всеми учетными записями, которые в них нуждаются. На VPS количество ресурсов четко закреплено за определенным сервером, независимо от того, использует он их или нет.

Преимущества vds для хостинга игр

Виртуальный частный сервер (VPS/VDS) — это практически полный аналог физического сервера, только на базе технологии виртуализации. По цене эта услуга находится примерно посередине между бюджетным веб-хостингом и выделенным сервером.

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

С какими сложностями можно столкнуться

Те, кто действительно серьезно относятся к запуску игрового сервера на VPS, должны принимать во внимание не только очевидные преимущества решения, но и сложности, которые могут возникнуть на этом пути.

  • Уровень технической подготовки. Когда речь идет о технической стороне дела, запуск игрового сервера на VPS — это процесс далекий от развлечений и игр. Для успешного выполнения этой работы может потребоваться определенный опыт в администрировании. Хотя для работы с VPS можно использовать панель управления, тут тоже есть свои «подводные камни» Во-первых это решение имеет свои функциональные ограничения, а во-вторых — требует дополнительных вложений.
  • Монетизация. Хотя аренда хостинга на базе виртуального сервера обойдется гораздо дешевле выделенного, эта стоимость всё равно станет определенным финансовым обременением для организатора. Стоит задуматься, позволит ли игра, которую предполагается разместить на VPS, окупить хотя бы часть расходов сервер? Потребует ли такой хостинг для игры дополнительных вложений в рекламное продвижение? Альтернативным решением может стать аренда Вечного VDS, который оплачивается по модели «раз и навсегда».
  • Предотвращение мошенничества. При запуске игрового сервера общего доступа нужно понимать, как будут настраиваться и отслеживаться механизмы защиты от чита. Нужно ли вам доплачивать за инструменты, которые помогут вам справиться с этим? Насколько эффективно это будет осуществляться?
  • Географическая зависимость. Скорость передачи информации по сети сильно зависит от того, насколько далеко геймер находится от физического местоположения сервера с игрой. Если сервер с игрой расположен в другом регионе или даже стране, пользователи могут столкнуться с неприятными задержками в игровом процессе.
Читайте также:  Дешевый хостинг для WordPress: независимый обзор

Стоимость

Цена запуска выделенного сервера игры во многом зависит от расходов на выбранный тип хостинга. По соотношению цены и качества VPS считается «золотой серединой» для игровых серверов. Аренда выделенного сервера для игр на нем обходится значительно дешевле альтернативных типов хостинга — выделенного и облачного сервера, но не сильно превышает по цене сопоставимые по ресурсам тарифы веб-хостинга.

Установка

В данном и последующих разделах используются команды с инструкции на официальном сайте, с некоторыми дополнениями. Рекомендуется использовать Kubernetes версии 1.12 (протестировано разработчиками). Для теста на локальном компьютере можно использовать minikube, который потребует kubectl и гипервизор (Hyper-V или VirtualBox) поддерживаемый операционной системой.

Для установки кластера и Agones необходимо запустить следующие команды:

Шаг 1 – планирование игрового сайта

1. Выберите свое основное направление. Существуют огромное количество сайтов на игровую тематику. Перед созданием, необходимо определиться с тематикой вашего сайта. То есть, о чем вы будете писать, и впоследствии размещать статьи на своем сайте. Ниже перечень основных тем, с которых можно начинать:

Шаг 2 – создание сайта

1.Приступайте к созданию сайта. Вы можете создать сайт сами или обратиться к тем, кто профессионально занимается их разработкой. Также существует огромное количество сайтов- конструкторов с необходимыми инструментами для создания сайта с нуля.

Удостоверьтесь, что все функции, которые необходимы вам на сайте, реализованы, такие как возможность комментирования или проведения стримов (трансляций игр в интернете).

При возможности, обратитесь к компаниям, занимающимся веб-дизайном. Поверьте, это позволит намного сэкономить ваше время и деньги.

2.Найдите хостинг. Хостинг — это компания, которая размещает ваш сайт на их сервере. Вы можете воспользоваться бесплатным хостингом, но качество такого хостинга оставлять желать лучшего.Поверьте, переезд с одного хостинга на другой, дело трудоемкое и объемное, особенно если ваш сайт уже разросся. Поэтому, выбрав надежный хостинг с самого начала сэкономит ваше время и нервы.

3.Загрузите свой сайт. Как только ваш сайт готов, останется только загрузить его на сервер. Если вы использовали сайты-конструкторы, предоставляемые хостингом, то процесс произойдет автоматически. Иначе, вам придется опубликовать сайт самому, используя клиент FTP.

4. Добавьте начальный контент. Сайт, на котором напрочь отсутствует контент, никто конечно же посещать не будет. Контент, который вы добавите, зависит от типа сайта, который вы создаете. Ниже приведены несколько примеров:

  • Если вы создаете сайт про обзоры на игры, публикуйте анализ любой игры, даже старой. Это даст вам некоторый опыт в написании обзоров, и посетители сайта смогут найти что-нибудь, пользуясь поиском.
  • Если вы пишете про игровые новости, найдите некоторые недавние пресс-релизы, касательно вашей тематики (ПК, консоли, карманные компьютеры, и т.д.). Опубликуйте эти пресс-релизы и добавьте несколько мнений, касательно них.
  • Если вы пишете гайды, то подробно опишите свою любимую игру. Сделайте его всесторонним и попытайтесь покрыть те аспекты, которые не были подробно покрыты в других гайдах.

Шаг 3 – расширение сайта

1.Продолжайте добавлять контент. То, что вы добавляете на сайт, зависит от вашей тематики. Содержание вашего сайта определяет, насколько популярным станет ваш сайт, и это — то, что выделит ваш сайт на фоне других.

Навык письма очень важен при написании статей и для дальнейшего развития вашего сайта. Хорошие статьи всегда привлекают много читателей, поэтому, всегда стремитесь улучшить свои письменные навыки.

Проверяйте все то, что вы пишете, прежде чем вы это опубликуете. Грамматические и другие ошибки только отгонит всех читателей.

Используйте только те скриншоты или видео, на которые у вас есть права. Это особенно важно, если вы получаете прибыль со своего сайта.

Заключение

VPS — проверенный вариант для создания и администрирования игровых серверов, даже при сравнительно небольшом бюджете. Он предлагает отличный баланс между ценой и производительностью, а также обладает обеспечивают гибкость настройки, масштабируемость У владельца игрового хостинга на виртуальном сервере появляются все преимущества, которые дает собственное серверное оборудование, но исчезает необходимость тратить средства на его закупку и поддержание в рабочем состоянии.

Нужен надежный, мощный и безопасный сервер для игр? Выбирайте VPS от Eternalhost — скоростные NVMe-диски, защита от DDoS и техподдержка 24/7!

Оцените статью
Хостинги