如何连接到MongoDB EC2实例

时间:2013-11-24 14:41:42

标签: mongodb amazon-ec2

我们有来自Amazon MarketPlace的EC2 MongoDB 2.4实例。 当我尝试使用mongo命令从我的计算机访问它时,如下所示:

mongo xx-xx-xx-xx-xx.compute-1.amazonaws.com

我收到以下错误

Error: couldn't connect to server xx-xx-xx-xx-xx.compute-1.amazonaws.com:27017 at src/mongo/shell/mongo.js:147
exception: connect failed
  • 我可以使用ssh连接到远程实例,因此可以访问它。
  • 端口是默认端口27017。
  • mongod正在运行并正在处理远程实例。

有关如何解决此问题的任何建议?

6 个答案:

答案 0 :(得分:21)

如弗里斯基所说,您必须在EC2安全组控制台打开端口27017。 (要了解有关如何执行此操作的详细信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/authorizing-access-to-an-instance.html

但您还需要在/etc/mongodb.conf文件中更改bind_ip变量。您需要注释该行或分配能够将DB连接到它的IP。

答案 1 :(得分:7)

由于mongod正在运行并处理远程实例,因此您可以通过

访问MongoDB内容

mongo xx-xx-xx-xx-xx.compute-1.amazonaws.com或 mongo machine_elastic_IP

在此之前,您需要打开该机器的入站端口。对于外部世界,关闭默认端口27017。

有关详细信息,请参阅:http://docs.aws.amazon.com/gettingstarted/latest/wah/getting-started-security-group.html

答案 2 :(得分:5)

亚马逊创建的mongo安全组没有打开27017。 打开端口27017到我的电脑修复了这个问题。

答案 3 :(得分:2)

以下两个步骤为我启用了远程连接:

    1. 在端口27017上打开我的VPC的入站卷 VPC->“安全性”->“安全性组”->选择实例的TCP规则->单击“编辑规则”->添加以下类型的规则:“自定义TCP规则”,协议:TCP,端口范围:27017,源:自定义0.0。 0.0 / 0->保存
    1. SSH进入您的实例-> sudo vi /etc/mongod.conf->设置bindIp:0.0.0.0->保存-> sudo服务mongod重新启动

之后,您将可以使用mongo --host YOUR_INSTANCE_IP连接到您的远程mongo实例

答案 4 :(得分:1)

尝试从浏览器访问xx-xx-xx-xx-xx.compute-1.amazonaws.com:27017,如果它可以,则ssh进入实例。

  • 停止mongodb服务器
  • 删除文件/var/lib/mongodb/mongod.lock

再次启动mongodb服务器,检查键入mongo是否进入mongo shell或者是否有任何错误。

如果存在错误,请退出实例并再次ssh以检查$mongo是否打开mongo shell。如果在上述更改后错误仍然存​​在,请在此更改后尝试重新启动。

这里唯一关心的是,在从任何应用程序访问它之前。 Mongodb应该在终端中独立工作。

答案 5 :(得分:0)

EC2控制使用安全组的访问权限,因此请确保访问mongo db host的框位于允许访问此框的security group中,并且为同一安全组启用了port

另一个问题可能是iptables。检查mongodb框上的sudo service iptables status,看看那里的规则是什么。

确保按照security框的要求启用了适当的端口。