如何通过GAE在GCE上访问mongodb

如何通过GAE在GCE上访问mongodb,mongodb,google-app-engine,google-cloud-platform,google-compute-engine,Mongodb,Google App Engine,Google Cloud Platform,Google Compute Engine,我已经在GAE上部署了我的演示应用程序,可以很好地与mLab配合使用,但当我尝试在GCE上部署mongodb(mongodb(Google Click to deploy))时,部署成功了,但我不知道如何在GAE上运行的我的应用程序上设置te URI 我尝试内部和外部IP,但似乎不工作 谢谢GAE标准部署是沙盒式的。因此,您无法连接到GCE实例的内部IP。您可以将其想象为两个不同专用网络上的两个不同设备,它们无法使用内部IP相互通信。但是,如果其中一个设备(本例中为GCE实例)具有公共IP,并且

我已经在GAE上部署了我的演示应用程序,可以很好地与mLab配合使用,但当我尝试在GCE上部署mongodb(mongodb(Google Click to deploy))时,部署成功了,但我不知道如何在GAE上运行的我的应用程序上设置te URI

我尝试内部和外部IP,但似乎不工作


谢谢

GAE标准部署是沙盒式的。因此,您无法连接到GCE实例的内部IP。您可以将其想象为两个不同专用网络上的两个不同设备,它们无法使用内部IP相互通信。但是,如果其中一个设备(本例中为GCE实例)具有公共IP,并且其专用网络(防火墙)允许通过设备所需的端口进行通信,则它们始终可以通信

另一方面,如果GAE部署在flex环境中,您应该能够通过内部IP使用API连接到db

我已经尝试并成功地使用这个flex环境来处理内部和外部IP地址。和您一样,我使用CloudLauncher部署Mongodb,它创建了带有公共IP和网络标签Mongodb和Mongodb的GCE实例。然后,通过SSH连接到主db实例,输入一个db、用户名和密码

为了使用内部IP,我只是根据示例创建/修改了keys.json文件,如下所示:

{
  "mongoHost": "internal IP address",
  "mongoPort": "27017",
  "mongoDatabase": "db",
  "mongoUser": "username",
  "mongoPass": "password"
}
因此,我不必担心URI,因为server.js中的代码通过传递以下字符串来处理URI:

mongodb://${user}:${pass}@${host}:${port} 
但是对于您的演示应用程序,您可能需要查看MongoDB官方文档中的标准连接字符串格式URI


至于使用公共IP,我必须创建一个网络防火墙规则,允许在端口27017上使用与网络标记相同的目标标记进行tcp入侵,以便仅通过端口访问MongoDB实例。接下来,我修改了keys.json文件,将内部IP替换为公共IP

您是否在GCE firewall中创建了防火墙规则以允许mongodb流量(端口27017)。以下是官方mongodb标准URI方案的示例。