无法连接到远程MongoDB服务器

我正在尝试创build一个远程MongoDB服务器来处理我的Java项目。

我正在使用stream浪者+ ansible创造环境,但可惜我无法获得连接。

我总是通过networking拒绝连接。 本地主机上的相同代码完美地工作。

我正在使用stream浪汉箱: chef/centos-6.5

我的任务如下:

 - name: Download EPEL Repo get_url: url=http://dl.fedoraproject.org/pub/epel/6/x86_64/epel- release-6-8.noarch.rpm dest=/tmp/epel-release-6-8.noarch.rpm - name: Install EPEL Repo command: rpm -ivh /tmp/epel-release-6-8.noarch.rpm creates=/etc/yum.repos.d/epel.repo - name: Install libselinux-python yum: name=libselinux-python - name: Create the repository for 10Gen copy: src=10gen.repo.j2 dest=/etc/yum.repos.d/10gen.repo - name: Create the EPEL Repository. copy: src=epel.repo.j2 dest=/etc/yum.repos.d/epel.repo - name: Create the GPG key for EPEL copy: src=RPM-GPG-KEY-EPEL-6 dest=/etc/pki/rpm-gpg - name: Create the mongod user user: name=mongod comment="MongoD" - name: Create the data directory for the namenode metadata file: path={{ mongodb_datadir_prefix }} owner=mongod group=mongod state=directory - name: Install the mongodb package yum: name={{ item }} state=installed with_items: - libselinux-python - mongo-10gen - mongo-10gen-server - bc - python-pip - name: Install the latest pymongo package pip: name=pymongo state=latest use_mirrors=no 

我已经添加了iptables例外:

 sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT 

这是积极的:

 [root@localhost ~]# iptables -L -v Chain INPUT (policy ACCEPT 209 packets, 13148 bytes) pkts bytes target prot opt in out source destination 1070 68777 ACCEPT tcp -- any any anywhere anywhere tcp dpt:27017 

我的java代码定义MongoDbFactory

 public @Bean MongoDbFactory mongoDbFactory() throws Exception { MongoClient mongo = new MongoClient("<ip-of-machine>", 27017); return new SimpleMongoDbFactory(mongo, "test"); } 

但是当我尝试连接到它时,我总是会遇到下面的exception。

 com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting for a server that matches AnyServerSelector{}. Client view of cluster state is {type=Unknown, servers=[{address=192.168.1.11:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused}}] 

如果我从本地运行MongoDB并相应地更改IP,一切工作正常。

谢谢

首先,要确保它不是防火墙问题,请停止两台服务器上的IPTABLES(不要忘记以后重新启用)。

在你试图连接的机器上,直接SSH并确保MongoDB正在运行,在本地连接并检查你是否可以访问数据库。

MongoDb未配置为默认接受来自远程主机的连接,您是否可以确保在/etc/mongodb.conf文件中包含这些行:

 bind_ip = 0.0.0.0 port = 27017 

确保在进行任何更改后重新启动MongoDB。 试试这个和评论,如果你仍然有问题,我会更新的答案更多的建议。

编辑:从版本2.6开始,配置文件格式已经更改为YAML,详细信息在这里 ,该文件应该位于/etc/mongod.conf

 net: bindIp: 0.0.0.0 port: 27017