Mongo连接到私有EC2实例失败

时间:2016-01-18 12:21:38

标签: mongodb amazon-web-services amazon-vpc

我在AWS中有两个在同一个VPC中的不同子网上的实例。其中一个是私人的,而另一个是公共的。我在公共实例中设置了节点应用程序。私有实例只能在公共实例中访问,因为它们位于同一个VPC中。我尝试使用以下命令从公共实例连接到私有实例的mongodb:

sudo ./mongo <private ip>:27017 -u <username> -p <password> --authenticationDatabase myDatabase

以下是我的mongodb配置:

fork = true
bind_ip = 0.0.0.0
port = 27017
quiet = true
dbpath = /var/lib/mongodb
logpath = /var/log/mongodb/mongo.log
logappend = true
journal = true

但是这段命令会在一段时间后超时,并给出如下错误:

2016-01-18T12:17:57.513+0000 E QUERY    [thread1] Error: couldn't connect to server <my private ip>:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:226:14
@(connect):1:6

exception: connect failed

我想从公共实例中的节点js应用程序使用此mongo连接。实例无法从公共实例连接的原因是什么?

1 个答案:

答案 0 :(得分:2)

MongoDB实例的安全组需要允许来自Node.js实例的安全组的入站端口27017。

您还可以使用源Node.js实例的IP地址允许从Node.js到MongoDB的这种通信,但最好只允许从其安全组进行访问。例如,当Auto Scaling添加新实例时,或者如果Node.js服务器终止然后使用新IP地址重新启动时,这会有所帮助。