1

Я использую экземпляр Bitnami mongodb, развернутый в Google Compute Engine.Не удается подключиться к mongodb после развертывания приложений в Google App Engine

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

Мое приложение - приложение Angular2 с бэкэдом Node.js. Ниже приводится формат строки соединения используется в server.js

mongoose.connect('mongodb://<username>:<password>@<External IP>:27017/<dbname>'); 

Когда я разместить мое приложение на локальном хосте он может подключиться к MongoDB экземпляр на данных облака и доступа без проблем.

Но, когда приложение развернуто на движке Google, приложение больше не подключается к mongodb. Ниже приведена ошибка.

MongoError: failed to connect to server [<External IP>:27017] on first connect 

Может кто-нибудь предположить, что является основной причиной.

ответ

4

экземпляры App Engine являются частью той же внутренней внутренней сети, что и экземпляры Compute Engine. Приложение App Engine может взаимодействовать с сервисами, размещенными на Compute Engine, в рамках одного и того же проекта, не проходя через общедоступный Интернет. Во многих случаях ваше приложение подключается к службе с использованием внутреннего IP-адреса экземпляра без необходимости назначать базе данных внешний публичный IP-адрес. При желании вы можете назначить публичный IP-адрес для доступа к базе данных из-за пределов облачной платформы Google.

Кроме того, приложения App Engine могут подключаться к базам данных через открытый Ip, если сервер базы данных и брандмауэр настроены правильно для приема соединений. Приложение App Engine подключается к базе данных с использованием общедоступного IP-адреса службы.

По умолчанию демон mongodb прослушивает TCP-порт 27017. Поэтому вам необходимо добавить правило брандмауэра для брандмауэра Compute Engine для этого порта и протокола. Это может быть сделано с помощью Google Cloud консоли или с помощью команды gcloud инструмент:

gcloud compute firewall-rules create allow-mongodb --allow tcp:27017

+1

Изменено правило брандмауэра. Но все та же ошибка. Я могу выполнить ping из оболочки gcloud во внешний IP-адрес mongodb. – lkman

+0

Это похоже на внутреннюю конфигурацию Google. Вы пытались выполнить запрос на внутренний IP-адрес? –

+0

Я не могу пинговать с облачной консоли на внутренний IP-адрес. Я тоже попробовал это в строке подключения. Нет успеха. – lkman