从另一台服务器连接到部署在AWS服务器上的MongoDB

8

我正在本地创建一个JavaScript Meteor应用程序,但我希望我的数据库存储在一个独立的AWS服务器上。

我对MongoDB和AWS都很陌生。我想知道如何从本地主机连接到我的数据库?


1
还可以参考这个这个。我想这不是一个重复的问题,因为你在问关于AWS的特定情况,但答案是一样的:使用MONGO_URL - David Weldon
这里有一份MongoDB配置教程,适用于Meteor,值得一看。 - dr.dimitru
5个回答

3

只需要将您的Meteor应用程序启动时的MONGO_URL环境变量设置为指向在AWS机器上运行的Mongo实例即可。
假设您已经打开了远程机器上的端口27017:

MONGO_URL=mongodb://addresshere.compute-1.amazonaws.com:27017/yourdbname meteor

1
遇到了相同的错误。基本上,MongoDB 在 AWS 后面一个 VPC 中,通常需要通过 SSH 进行连接。因此,我不知道如何仅使用上述命令让我的应用程序访问 MongoDB,但我假设仅使用用户名和密码可能不足够。 - Jankapunkt
@Jankapunkt,请问你在服务器上的mongod.conf文件中bindIp的设置是什么?该文件应该位于/etc/mongod.conf - user818510
bindIp已取消注释。这没有问题,因为在我的堡垒机内部用nc 10.0.something 27017返回成功,而来自客户端的nc(其IP在允许TCP流入的CIDR范围内)返回连接被拒绝。 - Jankapunkt
4
不确定,但希望这有所帮助:通常在AWS上访问资源有两种方法 - 1)更改EC2实例的“安全组”配置 - 这起到了防火墙的作用 - 并允许访问端口27017; 2)使用ssh隧道连接到实例并将该端口本地隧道化,类似于ssh aws-host -L 27017:localhost:27017或者,如果您通过不同的实例进行连接,则为ssh aws-host -L 2017:target.mongo.host.amazonaws.com:27017 - Borys Serebrov
@BorisSerebrov,我会把它发布为答案。也许值得添加一个VPN选项。 - Alex Blex
显示剩余5条评论

2

除了按照其他答案中提到的配置应用程序以连接远程MongoDB外,还需要确保服务器可以从您的网络访问。

在AWS上访问网络资源有不同的方式:

  • 更改EC2实例的安全组配置 - 这就像是防火墙 - 并允许访问端口27017。 如果您只需要从自己的计算机访问,则可以选择允许来自当前IP地址的访问权限。

  • 使用ssh隧道连接到实例,并将该端口隧道本地化,例如ssh aws-host -L 27017:localhost:27017或者,如果您通过不同的实例连接,ssh aws-host -L 2017:target.mongo.host.amazonaws.com:27017。 这个主题有一份很好的演示文稿 - SSH / SSH的黑魔法?

  • 使用AWS VPN并通过VPN连接到AWS网络(使位于AWS网络内的资源在本地可用)。


SSH端口转发帮了大忙(没有IP表格,耶!)有关AWS设置,请参阅17:00分钟的视频。 - Jankapunkt

1
你可以使用mongoose来连接它。
变量mongoose = require('mongoose');
mongoose.connect('mongodb://serverIpaddress/databasename', function (err) {
    if (err) {
       return "no"
    } else {
        console.log('connection successful');

    }
});

0
为了能够通过互联网连接外部mongodb,需要满足以下条件:
  • mongodb应该具有可路由的公共IP
  • mongodb安全组应该将您的公共IP列入白名单
如果mongodb没有公共IP(在VPC内部的私有网络),仍然可以使用以下方法之一通过本地主机访问:
  • VPN到私有网络
  • 您的办公室/家庭与AWS VPC之间的站点到站点
  • 将EIP附加到mongodb实例eni(如果eni通过Internet Gateway路由到公共子网)
  • 创建一个带有公共IP地址的eni并将其附加到mongodb实例
无论如何,在编写代码之前,请尝试使用telnet、netcat或一些有效的mongodb客户端连接到mongodb。

0

根据此链接,您可能需要检查以下内容: 1)操作系统防火墙; 2)正确的服务绑定到私有IP地址(如果没有,请将您的IP添加到IP地址白名单中); 3)如果使用了Mongoose,请检查其版本。使用“npm list mongoose”查找版本并更新到最新版本。

您可以使用Mongodb Atlas,这是一种“MongoDB作为服务”的提供方式,可在Amazon Web Services(AWS)上使用,以托管您的数据库(它有一个免费的起始层),并使用MongoDB Compass轻松管理您的数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接