Как сделать игровой сервер дома

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

Agones (от др.-греч. agōn — «соревнование») позволяет развернуть кластер игрового сервера используя Kubernetes с возможностью Auto-Scaling. Этот open-source проект был создан в 2018 году, уже набрал 2500 звезд, был на Google I/O 2019, и на Хабре, к великому удивлению, еще не был упомянут. В топике описан краткий экскурс в архитектуру и инструкция по запуску тестового сервера на локальной машине. Если интересно, добро пожаловать под кат, вперед!

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

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:

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

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

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

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

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

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

Установка

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

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

Последняя команда скачивает конфигурационный файл Agones создающий Custom Resource Definitions (CRD) через Kubernetes API.

Запуск GameServer

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

Если после запуска команды в консоли появится ответ «ACK: hello», то сервер работает, его можно выключить следующей командой, которая инициализирует :

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

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

Эта команда может занять некоторое время, так как весь репозиторий проекта будет копироваться в image. Этого можно избежать, если в директории оставить только папку sdks, файл main.go и Dockerfile.

Далее в examples\simple-udp\gameserver.yaml изменим строку 28 на image: agones-go:modified и создадим новый GameServer:

Проверим изменения и выключим сервер:

Если после запуска команд в консоли появится ответ «ACKNOWLEDGED: hello», то внесенные изменения прошли успешно.

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

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

Источник

Домашний сервер. Часть 1: Вводная теория

В этой статье будут собраны воедино базовые теоретические моменты, касающиеся организации сервера класса SOHO (small ofice / home office) для использования в домашних условиях.

Тема домашнего сервера уже поднималась на этом блоге и некоторые частные аспекты реализации его функций рассматривались в цикле статей по Raspberry Pi. В частности был описан процесс поднятия медиасервера Plex и облака Nextcloud.

Пришло время осветить эту тему более глобально, без привязки конкретно к ARM-платформе, начав с разъяснения чем удобен домашний сервер и какие функции он выполняет.

Зачем нужен домашний сервер

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

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

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

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

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

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

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

Подобное устройство и будет домашним сервером внутри локальной сети. А сейчас детальнее рассмотрим функции, которые такой сервер может выполнять.

Сетевое хранилище

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

Хранение данных с предоставлением доступа к ним по сети – основная задача домашнего сервера, которая не нуждается в особых комментариях.

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

Медиасервер

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

Контент может транслироваться по протоколам DLNA, HTTP или через приложения-компаньоны. Мощным и очень красивым комбайном, работающим практически на всех платформах, является Plex.

Торрент-клиент

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

В некоторых дистрибутивах (например, в OpenMediaVault или в программном обеспечении, предустановленном на готовые брендовые NAS) торрент-клиент уже предустановлен по умолчанию. А где его нет – там нужно вручную установить Transmission или аналогичную программу, поддерживающую удаленное управление через веб-интерфейс.

Сервер видеонаблюдения

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

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

Но для простой системы из 2-4 беспроводных IP-камер не нужно покупать отдельное устройство. Получать и сохранять на жестком диске сигналы с них сможет и наш сервер.

Резервное копирование

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

Главное чтобы объемы дискового хранилища сервера были достаточно велики по сравнению с объемами накопителей, установленных в остальных компьютерах.

Веб-сервер и self-hosted сервисы

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

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

Таким образом на домашнем сервере можно развернуть собственный бесплатный аналог Evernote, собственные серверы календаря и контактов на замену Google Calendar, RSS-ридер Tiny Tiny RSS, веб-клиенты для электронной почты и многое другое.

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

Заглянем в будущее

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

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

А случиться может всякое. Примеров можно привести немало:

И это далеко не полный список.

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

Я же этого даже не заметил. Потому что моя музыка продолжает храниться у меня на компьютере.

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

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

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

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

Важные характеристики домашнего сервера

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

Платформы для сборки

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

ARM-микрокомпьютеры

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

Самой популярной моделью такого компьютера в мире является Raspberry Pi, однако если выбирать для покупки одноплатник именно с целью построения сервера, то лучшим выбором на мой взгляд станет Cubieboard3 (CubieTruck).

Достоинства этого варианта:

Недостатки этого варианта:

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

Мини-ПК

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

Мини-ПК (они же неттопы) – это компактные компьютеры на x86 архитектуре, выпускаемые в полностью собранном виде (с установленной оперативной памятью и системным накопителем) или в формате платформ для сборки (установлен только процессор, а оперативную память и накопитель предлагается докупать отдельно в меру своих потребностей).

Самыми известным представителем ниши мини-ПК является линейка Intel NUC. Сюда же относится и Apple Mac Mini (к слову, на западе Mac Mini часто объединяют в кластеры и используют в серверных сборках). В последнее время на рынок мини-ПК начали экспансию китайские производители, выпускающие устройства под марками Beelink, VOYO и т.д.

Достоинства этого варианта:

Недостатки этого варианта:

Подводя итоги: создание сервера на базе мини-ПК – хороший вариант для тех, кому будет достаточно одного дискового накопителя.

Готовый NAS

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

Сетевое хранилище, оно же NAS (Network Attached Storage) – вещь, появившаяся очень давно в корпоративном сегменте и позднее переместившаяся в сегмент домашний. Самые известные производители в этом сегменте – Synology, QNAP, D-Link, WD с линейкой My Cloud, ASUStor.

Готовый NAS – это компактный компьютер с предустановленной производителем системой и слотами для размещения дисковых накопителей. Кроме дисковых накопителей ничего больше в устройстве не поддается апгрейду – вы не сможете нарастать память или сменить процессор. Также производитель не дает пользователю напрямую вмешиваться в работу системы, предполагая довольствоваться работающим “из коробки” функционалом, а дополнительные функции добавлять при помощи установки пакетов из встроенного магазина приложений.

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

Достоинства этого варианта:

Недостатки этого варианта:

Подводя итоги: покупка готового NAS – хороший вариант для пользователя, приоритетом которого является удобное хранение файлов и чтобы все работало “из коробки” – и готового за это платить.

Готовый мини-сервер

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

“Народной” моделью, популярной у энтузиастов-компьютерщиков по всему миру, является уже слегка устаревший HP ProLiant MicroServer gen8 и вышедшая недавно обновленная модель HP ProLiant MicroServer gen10.

Достоинства этого варианта:

Недостатки этого варианта:

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

Самосборный сервер из любых комплектующих

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

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

Но что не годится для рабочей станции – то вполне может сгодиться для сервера.

Достоинства этого варианта:

Недостатки этого варианта:

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

Самосборный сервер на платформе Mini-ITX

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

Наконец, самый изящный и эффективный вариант – собрать домашний сервер с нуля на платформе Mini-ITX.

Mini-ITX – это не очень популярная платформа, использующаяся для медиацентров / HTPC и просто компактных компьютерных сборок.

Материнская стандарта Mini-ITX имеет размеры даже меньше, чем mATX. То есть сборка получается действительно маленькой и компактной.

Достоинства этого варианта:

Недостатки этого варианта:

Подводя итоги: самосборный сервер на Mini-ITX платформе – хороший вариант для человека, который любит делать оптимально и надолго.

Операционная система для домашнего сервера

Как сделать игровой сервер дома. Смотреть фото Как сделать игровой сервер дома. Смотреть картинку Как сделать игровой сервер дома. Картинка про Как сделать игровой сервер дома. Фото Как сделать игровой сервер дома

Последний теоретический момент: на какой операционной системе должен работать домашний сервер?

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

А вот при использовании самосборных конфигураций приходится выбирать: Windows или один из многочисленных Linux-дистрибутивов?

Мое мнение – на сервере должен стоять только Linux. Существуют как специализированные дистрибутивы для самосборных NAS (FreeNAS, OpenMediaVault), так и универсальные Debian и Ubuntu, на базе которых можно настроить себе что угодно.

А вот заставить себя подружиться с Linux в качестве основной ОС на настольном компьютере я так и не смог. Поэтому Linux для сервера, Windows (или macOS если вы пользователь техники Apple) для всего остального.

Заключение

На этом вводную статью цикла о создании домашнего сервера заканчиваю.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *