Доступ к VPC Private Google API для mqtt.googleapis.com (Cloud IOT) через прокси

Я включил Частный доступ к Google API для VPC и использую описанный HTTP-прокси для подключения моего внешнего центра обработки данных к бэкэнду Google Cloud.

Используя это решение, я убедился, что API хранилища объектов Google работает, используя gsutil для перемещения файлов по внешней сети.

Однако я не могу подключиться к mqtt.googleapis.com, который требуется для облачного IOT.

Я думаю, это связано с тем, что к брокеру MQTT, работающему на mqtt.googleapis.com, нельзя получить доступ через частную сеть, если он также не проксируется, как решение HTTP-прокси, описанное выше.

Между тем фактические команды gsutil IOT работают нормально, потому что я предполагаю, что они выполняются через Google HTTP API.

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

  1. Запустите прокси-сервер брокера MQTT в частном VPC и направьте пакеты MQTT на mqtt.googleapis.com. Есть ли подходящий прокси-брокер MQTT, который мы можем использовать в этом случае?

  2. Если мы получим диапазон общедоступных IP-адресов, на которых работает мост mqtt (mqtt.googleapis.com), мы можем просто построить сетевые маршруты для этого одного варианта использования. Это доступно?

Возникают ли ошибки при попытке доступа к mqtt.googleapis.com или просто истекло время ожидания? Что можно попробовать: «пинговать mqtt.googleapis.com» и traceroute «mqtt.googleapis.com». Кроме того, согласно этот документ, приложению может потребоваться добавить правила брандмауэра в вашем помещении и в сети Google. Я не смог найти никакой документации, указывающей, возможен ли доступ через Private Google Access.

Carlos 12.06.2018 22:58
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
1
425
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Будет ли он работать через мост протокола HTTP в IoT Core? Можно ли использовать HTTP вместо MQTT?

Нет, так как мы хотели бы Device Heartbeats. Имеет ли смысл создавать брокера MQTT в экземпляре виртуальной машины, который настроен как мост к брокеру на mqtt.googleapis.com, для прокси-соединения mqtt?

7hacker 11.06.2018 21:00

Есть ли этому решение?

7hacker 12.06.2018 20:26

Ничего из коробки. Прокси-сервер вполне может быть подходящим вариантом. У меня нет опыта работы с частным доступом к API, поэтому я не уверен. Я не знаю простого решения «Просто сделай это». :( Мне жаль!

Gabe Weiss 12.06.2018 22:56
Ответ принят как подходящий

Мне удалось заставить это работать, используя NGINX в качестве обратного прокси-сервера и передавать TCP-трафик напрямую на mqtt.googleapis.com. Вот шаги для достижения этого

  1. Установите Nginx с флагом конфигурации --with-stream. Это создает Nginx с функциями прокси-сервера потоковой передачи TCP.
  2. Мой файл конфигурации Nginx содержит следующее, чтобы указать на брокера Google. Сервер Nginx работает в экземпляре в VPC.

/etc/nginx/nginx.conf

 stream {
    upstream google_mqtt {
            server mqtt.googleapis.com:8883;
    }
    server {
            listen 8883;
            proxy_pass google_mqtt;
    }
}
  1. Внутренний частный VPC имеет DNS-сервер, который преобразует mqtt.googleapis.com в IP-адрес сервера Nginx.

Другие вопросы по теме