mongoDB不会远程连接

我已经在EC2上的redhat虚拟机上安装了mongoDB。

服务器在本地运行良好,可以连接和执行命令等。现在,我尝试从EC2上的另一个虚拟机远程连接,但无论我尝试多less,我都无法连接。 起初我以为这是一个安全组的问题,所以我尝试启用组内的所有端口(这两个虚拟机属于相同的secirity组),我也启用iptables文件中的连接(是的,重新启动服务),但它仍然行不通…任何想法可能是什么问题?

我得到的错误是:

MongoDB shell version: 2.0.2 connecting to: ec2-XXXX.eu-west-1.compute.amazonaws.com/test Thu Jan 5 13:55:32 Error: couldn't connect to server ec2-XXXX.eu-west-1.compute.amazonaws.com shell/mongo.js:86 exception: connect failed 

预先感谢。

关于“bind_ip”设置,好吧..没有默认值,我的意思是在默认情况下,在mongodb.conf中甚至没有bind_ip行。 我可能期望像bind_ip = 127.0.0.1这样我可以注释掉它,但它不在那里,所以我尝试bind_ip = 0.0.0.0,但仍然不工作。

希望这有助于。 您需要明确告诉mongodb在非本地主机设备上进行侦听。 默认情况下,它只在本地主机上运行。

http://www.mongodb.org/display/DOCS/Security+and+Authentication获取 :

IP地址绑定默认情况下,mongod服务器将监听机器上所有可用的IP地址。 您可以使用mongod的“bind_ip”configuration选项将其限制为单个IP地址。

通常,这将被设置为127.0.0.1,即回送接口,要求mongod只监听来自同一台计算机(本地主机)的请求。

要在所有接口上启用监听,请从服务器configuration文件中除去bind_ip选项。

更新:我想我自己很困惑。 我认为默认行为与上面描述的不同。 (也许它曾经是?)无论如何,你应该检查你的mongoconfiguration文件,以确保你已经configuration好了你的预期。

解决了! 对于使用EC2默认Redhat安装的任何人,您需要运行以下命令:

系统configuration的防火墙,TUI

很高兴看到防火墙修改解决了这个问题。 不要忘记其他EC2build议(文件系统上的noatime,跨地区的通信等):

http://www.mongodb.org/display/DOCS/Amazon+EC2

还有一个关于如何在EC2上进行扩展和部署的出色白皮书:

http://d36cz9buwru1tt.cloudfront.net/AWS_NoSQL_MongoDB.pdf

如果你正在使用aws,请确保安全组允许端口27017.我浪费了两个小时的时间来搞清楚。