繁体   English   中英

使用Google Compute Engine连接到Nodejs中的mongodb

[英]Connecting to mongodb in Nodejs with Google Compute Engine

首先我要说的是,我绝不是NodeJS / Mongodb / Google Compute引擎的人,甚至不是服务器人,但不幸的是,我似乎最接近办公室,所以我被要求上传其他人已经制作的现有NodeJS应用程序,用于Google计算引擎。

我可以在本地运行应用程序就好了,但是我一直在努力工作,试图通过GCE来实现它,或者实际上任何事情 - 最后我已经到了我可以上传我的应用程序代码的地步按照这个Bookshelf教程 - https://cloud.google.com/nodejs/getting-started/run-on-compute-engine - 并用我自己的代码替换他们的代码。 我也可以自己获得书架教程,以便成功地使用GCE。

到目前为止这么好,但不幸的是我的应用程序不能在GCE上运行,并且它似乎因为无法连接到我使用Click to Deploy服务设置的mongodb数据库而受阻。 这为我生成了三个VM实例 - mongo-arb-me7o,mongo-db-0ysz,mongo-db-efg0。 我的代码在一个单独的实例上运行,我不认为应用程序需要在数据库上存在任何现有数据,我认为它只需要访问一个来存储信息。

我真的希望我的问题是一个相对简单的问题 - 我需要将哪些服务器细节放入我的应用程序以允许它连接到GCE上的mongodb数据库? 我在网上找不到任何东西来帮助我弄清楚它应该是什么(我没有发现谷歌的文档对于完整的新手来说非常有帮助,说实话)。

默认情况下,应用程序最初设置为localhost,端口27017,但这会在GCE上记录错误“无法连接”。 该教程说通常打开端口8080来访问该站点,所以我想我也会尝试使用该数据库。 有趣的是,这记录了一个稍微不同的错误:“连接已关闭”,但我不知道这表示什么? 通过浏览器访问时,它只是读取“内部服务器错误”。

我还试图通过他们的IP地址和他们的实例名称(代替localhost)来访问所有三个mongodb实例,但不要高兴。 我是否有权在单独的实例中使用该应用程序? 是否应该在运行我的代码的同一个实例上安装mongodb,如果是,我该怎么做? 事实上,它为数据库生成了三个不同的实例,这对我来说不是,但我真的不知道。

如果我已经尝试过的东西应该工作,并且任何人都希望看到任何日志或代码样本来尝试和诊断问题,我很乐意提供,但是我的手指交叉,这只是放置的问题正确的地址和端口号,我还没有找到或弄清楚。

非常感谢任何帮助,非常感谢。

我想我可能已经破解了它。 我偶然发现了另一篇文章: 谷歌计算引擎MongoDB通过Java驱动程序连接的问题并不完全相同,而且不是NodeJS,这就是我最初可能错过它的原因,但它有点与同一个问题有关,我尝试了其中的一些建议,它们似乎有效。

对于所有这些节点/ mongo / gce的新手,并且在混乱的海洋中丢失,似乎服务器地址需要设置为其中一个mongo实例的内部IP地址。 如果您使用Click to Deploy,则可以通过“部署和管理”>“部署”找出哪一个。 在部署的右下角,在建议的后续步骤下,它会说“最初的MongoDB主服务器是mongo-db-0ysz” - 这是指其中一个实例。 找到该实例并从VM列表中获取其内部IP。

我将端口号更改回默认值27017,但是我必须通过输入以下命令打开它的访问权限:

gcloud compute firewall-rules create default-allow-http-27017 --allow tcp:27017 --source-ranges 0.0.0.0/0 --target-tags http-server --description "Allow port 27017 access to http-server"

我知道会是这样的。 不敢相信我终于让它工作了! 除非有人能发现我所做的任何问题吗? 那篇文章提到了安全问题,但我不知道这是否适用于此? 再次,任何建议非常感谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM