1

我在Google Compute Engine上部署了Bitnami mongodb實例。應用在Google應用引擎上部署後無法連接到mongodb

我可以使用MongoDB實例的外部IP從我的個人計算機通過MongoDB客戶端連接到該mongodb實例。

我的應用程序是一個帶有Node.js後端的Angular2應用程序。以下是在server.js

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

使用時我是主持人在本地主機上我的應用程序可以連接到雲上的和訪問數據的MongoDB實例沒有問題的連接字符串格式。

但是,當應用程序部署在谷歌應用程序引擎上時,應用程序不再連接到mongodb。 以下是錯誤。

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

有人可以提出什麼是根本原因。

回答

4

App引擎實例是與計算引擎實例相同的專用內部網絡的一部分。您的App Engine應用程序可以在同一個項目中與Compute Engine上託管的服務進行通信,而無需通過公共互聯網。在許多情況下,您的應用程序使用實例的內部IP地址連接到服務,而無需爲數據庫分配外部公用IP地址。如果需要,您可以分配一個公共IP地址,以允許從Google Cloud Platform之外訪問數據庫。

另外,如果數據庫服務器和防火牆已正確配置爲接受連接,則App Engine應用程序可以通過公共Ip連接到數據庫。您的App Engine應用程序使用服務的公共IP地址連接到數據庫。

默認情況下,mongodb守護進程正在偵聽TCP端口27017.因此,您需要在計算引擎防火牆上爲此端口和協議添加防火牆規則。

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

+1

更新防火牆規則:可以使用谷歌雲控制檯或使用gcloud命令工具來完成。但仍然是同樣的錯誤。我可以從gcloud shell ping到mongodb的外部IP。 – lkman

+0

這似乎與Google的內部配置有關。你是否嘗試過向內部IP請求? –

+0

我無法從雲控制檯ping到內部IP。我也嘗試了連接字符串。沒有成功。 – lkman

相關問題