我在GAE上部署了我的演示应用程序并且与mLab一起工作正常,但是当我尝试在GCE上部署mongodb(MongoDB(Google Click to Deploy))部署成功但我不知道如何获得te在GAE上运行的应用上设置的URI。
我尝试使用内部和外部IP但似乎不起作用!
谢谢
答案 0 :(得分:4)
GAE标准部署是沙盒式的。因此,您无法连接到GCE实例'内部IP。您可以将它想象为两个不同的专用网络上的两个不同设备,这些设备无法使用其内部IP进行通信。但是,如果其中一个设备(在这种情况下为GCE实例)具有公共IP,则它们始终可以通信,并且它的专用网络(防火墙)允许通过设备所需的端口进行通信。
另一方面,如果GAE部署在flex环境中,您应该能够通过内部IP使用API连接到数据库。
对于内部和外部IP地址,我已经尝试并成功使用此灵活环境example。和你一样,我使用Cloud Launcher部署Mongodb,它使用公共IP和网络标签mongodb和mongodb-db创建了GCE实例。然后通过SSH连接到主数据库实例,我created一个数据库,用户名和密码。
要使用内部IP,我只是根据示例创建/修改了keys.json文件,如下所示:
{
"mongoHost": "internal IP address",
"mongoPort": "27017",
"mongoDatabase": "db",
"mongoUser": "username",
"mongoPass": "password"
}
所以我没有必要担心URI,因为server.js中的代码通过传递这个字符串来处理它:
mongodb://${user}:${pass}@${host}:${port}
但是对于您的演示应用程序,您可能需要检查MongoDB官方文档以获取标准连接字符串格式URI。
至于使用公共IP,我必须创建一个网络防火墙规则,允许在端口27017上使用与网络标记相同的目标标记进行tcp入口,以便仅限制通过端口访问MongoDB实例。接下来,我通过将内部IP替换为公共IP来修改keys.json文件。