Назад | Перейти на главную страницу

Сервис Elastic-beanstalk, прослушивающий нестандартный порт

Я пытаюсь развернуть на AWS Elastic Beanstalk сервер Dockerized (на самом деле сервер Minecraft / Forge), который прослушивает порт 25565. Конфигурация, которую я хотел бы использовать, представляет собой простую конфигурацию докера с одним контейнером.

Я протестировал образ Docker локально на своем рабочем столе, и он работает должным образом (клиент Minecraft может подключиться к нему).

Я вижу, что среда AWS EB запущена правильно (зеленый), и журналы моего сервера показывают, что она запускается правильно. По мере создания среды я вижу, что для нее создается новая группа безопасности. Я иду и редактирую его, чтобы открыть порт TCP и UDP 25565, позволяющий подключаться из любого места.

Однако все подключения из Интернета к выделенному эластичному IP-адресу отклоняются независимо от того, что я делаю - проверено как клиентом minecract, так и тупой командной строкой netcat.

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

Что мне не хватает?

Исправлена. Отвечаю сам, на будущее.

Были две основные проблемы:

  1. EB действительно (действительно!) хочет подключиться к порту 80 из общедоступного Интернета. Во время развертывания он создает новую группу безопасности для среды, которая открывает порт 80. Редактирование этой группы для открытия большего количества портов не помогает из-за проблемы №2.
  2. Конфигурация по умолчанию для среды докеров с одним экземпляром будет развернута с nginx в качестве обратного прокси, сопоставляя порт 80 экземпляра с любым портом, настроенным как HostPort в Dockerrun.aws.json (или с ContainerPort, если HostPort не определен) . Это проблема для соединения клиент / сервер Minecraft, потому что nginx в нижней части является веб-сервером, а клиент отправляет пакеты, которые не действительные HTTP-запросы.

Итак, решение:

  1. Сделайте так, чтобы клиент подключился к порту 80, указав его как АЙПИ АДРЕС: 80
  2. Удалите nginx из конфигурации. Самый простой способ сделать это - через веб-интерфейс: после запуска среды EB щелкните ссылку «Конфигурация», затем кнопку «Изменить» в разделе «Программное обеспечение»; выберите «Нет» в раскрывающемся списке «Прокси-сервер» вверху, затем нажмите кнопку «Применить конфигурацию». Среда будет повторно развернута, но с портом 80, сопоставленным напрямую с контейнером докеров через iptables, без обратного прокси-сервера между ними.