Подключение к службе, размещенной на Compute Engine, не работает — сайт недоступен / Я добавил теги http

#google-cloud-platform #google-compute-engine #firewall

# #google-cloud-platform #google-compute-engine #брандмауэр

Вопрос:

Команда, нужна быстрая помощь! Я создал и разместил службу на Compute Engine в GCP. Это на сервере Ubuntu, при создании экземпляра я убедился, что флаг allow-HTTP amp;amp; allow-HTTPS включен. но все же я не могу подключиться к сервису извне.

Я предоставил сервис на порту 4000, но tcp: 80 должен разрешать вход HTTP-трафика. Я как бы хожу по кругу без результата.

Сведения о сети экземпляра

Комментарии:

1. У вас нет правила брандмауэра, разрешающего трафик TCP-порта 4000.

2. Либо разрешите TCP-трафик на порт 4000, как говорит @John Hanley, либо предоставьте свой сервис на порту 80/443, например, с помощью Nginx / Apache.

3. «При создании экземпляра я убедился, что включен флаг allow-HTTP amp;amp; allow-HTTPS». делая это, вы включили входные подключения к портам 80 и 443. «Я предоставил сервис на порту 4000, но tcp: 80 должен разрешать вход HTTP-трафика». Ваша служба работает на порту 4000, который закрыт. Вы можете изменить порт вашей службы на 80 или настроить брандмауэр, чтобы разрешить входные соединения на порту 4000.

4. @JohnHanley Я добавил отдельное правило, чтобы включить порт 4000 для передачи вызовов в мою службу, это сработало. Чтобы быть уверенным и иметь безопасную экспозицию! Я изменил архитектуру, добавил перед ней обратный прокси-сервер и предоставил API.

Ответ №1:

Как вы упомянули в своем вопросе:

При создании экземпляра я убедился, что флаг allow-HTTP amp;amp; allow-HTTPS включен.

В соответствии с разделом документации «Создание и запуск экземпляра виртуальной машины» Создание экземпляра из общедоступного образа:

  1. Выберите Allow HTTP traffic или Allow HTTPS traffic , чтобы разрешить HTTP или HTTPS трафик для виртуальной машины. Когда вы выбираете один из них, Compute Engine добавляет сетевой тег к вашей виртуальной машине, который связывает правило брандмауэра с виртуальной машиной. Затем Compute Engine создает соответствующее правило брандмауэра входа, которое разрешает весь входящий трафик по tcp: 80 (HTTP) или tcp: 443 (HTTPS).

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

С другой стороны, у вас есть приложение, прослушивающее порт 4000:

Я предоставил сервис на порту 4000

В результате вы не можете получить доступ к своему приложению, http://EXTERNAL_IP_OF_YOUR_VM_INSTANCE:4000 потому что вы не открыли порт 4000, как это было упомянуто @John Hanley в комментарии.

Есть 2 способа решить вашу проблему:

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