Как бы я создал сервер Minecraft EC2, который автоматически запускается, когда кто-то пытается его использовать - PullRequest
0 голосов
/ 23 марта 2020

В настоящее время у меня есть работающий модифицированный сервер Minecraft, работающий на экземпляре C5 EC2. Проблема в том, что мне приходится вручную запускать и останавливать сервер, что может раздражать моих друзей. Мне было интересно, можно ли будет автоматизировать состояние EC2, чтобы оно запускалось, как только игрок пытается присоединиться к серверу. Это было бы похоже на поведение областей Minecraft, которые, как я слышал, Mojang использовал AWS для: https://aws.amazon.com/blogs/aws/hosting-minecraft-realms-on-aws/

Я искал учебники для этого, и это лучшее, что я мог прийти через: https://github.com/trevor-laher/OnDemandMinecraft

Проблема с этим решением состоит в том, что для создания входа в систему и запуска экземпляра EC2 требуется отдельный веб-сайт, а я хочу, чтобы запуск и завершение работы были полностью automati c.

Буду признателен за любые указания.

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

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

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

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

0 голосов
/ 23 марта 2020

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

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

Существует несколько способов, которыми пользователи могут запускать функцию AWS Lambda:

  • Выполнить вызов API Gateway
  • Загрузить объект в Amazon S3
  • Каким-то образом поместить сообщение в SNS topi c или в очередь SQS
  • Инициировать сигнал тревоги Amazon CloudWatch (который вызывает Lambda через SNS)
  • ... и возможно, другие способы

При рассмотрении способа использования вы должны рассмотреть последствия для безопасности , такие как:

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

Честно говоря, я бы порекомендовал следующую архитектуру:

  • Создать AWS Lambda функция , которая включает сервер
  • Создание API Gateway , который запускает лямбда-функцию
  • Дайте URL своим друзьям, которые звонят Шлюз API и передает «секретный» (фактически пароль)
  • Шлюз API будет вызывать функцию Lambda , передавая секрет
  • Функция Lambda подтверждает, что секрет верен и запускает экземпляр Amazon EC2 с установленным Minecraft

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

Цель секрета - избежать запуска сервера, если неавторизованный пользователь (или бот) попадет на конечную точку шлюза API. Они не будут предоставлять секрет, поэтому сервер не будет запущен.

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

...