Недавно я начал работать с «Google Cloud Platform». Я в основном хочу использовать его для своего проекта по науке о данных. Я успешно настроил проект, экземпляр виртуальной машины, правила брандмауэра и т. Д.
Я установил Jupyter Notebook, который работает на порту 8888, и установил сервер Tomcat Apache. Теперь я хочу получить к ним доступ через статический внешний IP-адрес моей виртуальной машины, но они недоступны, когда я упоминаю статический внешний IP-адрес.
Я проверил внешний путь, включен трафик HTTP (s) проекта, добавлены правила брандмауэра для Apache tomcat и Jupyter Notebook, и Ping для этого внешнего IP-адреса также работает. На изображении ниже можно увидеть все правила брандмауэра для jupyter notebook и tomcat:
Я пробовал получить доступ следующими способами:
- https: // {static-external-ip} /
- https: // {static-external-ip}: 8080 /
- https: // {static-external-ip}: 888 /
Любая помощь в этом отношении будет большим подспорьем. Удачного обучения!
Обновление: 10 ноября 2018 г. Я могу получить доступ к серверам, используя следующие URL-адреса:
- https://8080-dot-4783318-dot-devshell.appspot.com/ (Apache Tomcat)
- https://8888-dot-4783318-dot-devshell.appspot.com/ (Блокнот Jupyter)
Во-первых, они недоступны публично (извне), а во-вторых, проблема при доступе к серверам со статическими внешними IP-адресами все еще существует.
Вы явно открыли порт 8888 в правилах брандмауэра? HTTP (s) и Tomcat / Jupyter — это все HTTP-серверы, поэтому, вероятно, все они работают на порту 80 (или 443 для HTTP (s)) по умолчанию, поэтому использование настраиваемого порта 8888, вероятно, является вашей проблемой. Вы можете либо открыть этот порт и получить к нему доступ через https://{static-external-ip}:8888
, либо перезапустить ноутбук через порт 80, а затем получить к нему доступ через https://{static-external-ip}
. — person Bilal Ahmed Yaseen schedule 10.11.2018
@Dan, спасибо за ответ. Да, как я уже упоминал в своем вопросе, я уже настроил правила брандмауэра, и я также добавил изображение в фактический вопрос для вашей справки. И основная проблема заключается в том, что сервер tomcat, который уже работает на порту по умолчанию, также недоступен. — person Bilal Ahmed Yaseen schedule 10.11.2018
Кажется, вы выполнили все шаги для того, чтобы предоставить сервис извне, за исключением того, что я предполагаю одно — слушает ли Jupyter интерфейс loopback? Согласно документации Jupyter —
By default, a notebook server runs locally at 127.0.0.1:8888 and is accessible only from localhost. You may access the notebook server from the browser using https://127.0.0.1:8888.
В документации содержится информация о том, как сделать его доступным для внешний мир. Короче говоря, для доступа к сервису необходимо выполнить привязку на всех интерфейсах (IP).
Спасибо @ Daniel-t за ваш ответ. Но я уже добавил эту опцию при настройке. Я добавил эти две строки относительно этого: 1) Notebook.ip = / * и 2) notebook.allow_origin = / *. P.S: добавлена косая черта намеренно, так как исчез только один символ эстерика. — person Bilal Ahmed Yaseen; 10.11.2018
Итак, я не думаю, что проблема связана с этими конфигурациями, как я уже упоминал в своем вопросе, что я также пробовал то же самое с простым сервером Tomcat Apache и наблюдал ту же ошибку. Так что, не имея возможности понять то, что упустили Я реально морочу голову над этим … — person Bilal Ahmed Yaseen; 10.11.2018
Можете ли вы опубликовать вывод этой команды —
netstat -tan |grep 8888
? — person Bilal Ahmed Yaseen; 10.11.2018Я не получаю никаких результатов после выполнения этой команды. Ни ошибки, ни ответа. — person Bilal Ahmed Yaseen; 10.11.2018
хм, вы уверены, что Jupyter работает на 8888? Эта команда покажет вам все службы, прослушивающие порт 8888. Попробуйте это —
sudo netstat -talpn | grep -i jupyter
— person Bilal Ahmed Yaseen; 10.11.2018Извините, я сейчас использую его на 8889. Для команды: netstat -tan | grep 8888 == ›tcp 0 0 0.0.0.0:8889 0.0.0.0:* LISTEN tcp6 0 0 ::: 8889 ::: * LISTEN — person Bilal Ahmed Yaseen; 10.11.2018
Давайте попробуем туннель ssh, вы создадите туннель ssh на порт 8889 (jupyter?), А затем подключитесь к нему из локального браузера. Попробуйте это
ssh -f -N -L 8889:localhost:8889 [email;protected]_ip
— замените username и external_ip информацией об экземплярах виртуальной машины. Если ssh успешно завершен, запустите браузер и нажмите localhost: 8889 </ а> — person Bilal Ahmed Yaseen; 10.11.2018Давайте
продолжим это обсуждение в чате. — person Bilal Ahmed Yaseen; 10.11.2018
sudo ssh -N -f -L localhost: 8888: localhost: 8889 [email protected] Подлинность хоста ’35 .201.179.179 (35.201.179.179) ‘не может быть установлена. Отпечаток ключа ECDSA — SHA256: eFraJmrXeAWB3IeN0Rk / nWkiHCkm5YLzlGha0ASslic. Вы уверены, что хотите продолжить подключение (да / нет)? да Предупреждение: постоянно добавлено «35 .201.179.179» (ECDSA) в список известных хостов. В разрешении отказано (публичный ключ). — person Bilal Ahmed Yaseen; 10.11.2018
После прочтения сеанса чата выяснилось, что вы были запуск вашей установки в Cloud Shell. Таким образом, ваш тест подключения к виртуальной машине не был успешным. Я бы рекомендовал размещать такие вопросы в ServerFault, поскольку StackOverflow предназначен для вопросов и ответов для профессиональных программистов и энтузиастов. — person Bilal Ahmed Yaseen; 16.11.2018