I am trying to create a remote mongodb server to work with on my java project.
I am using vagrant + ansible to create the environment, but fr soem reson i cannot get a connection.
I always get connection refused through the network. the same code on localhost works perfectly.
I am using vagrant box: chef/centos-6.5
and my ansible tasks are as follows:
- 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
i have added the iptables exceptions:
sudo iptables -A INPUT -p tcp --dport 27017 -j ACCEPT
which is active:
[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
my java code defining MongoDbFactory
public @Bean MongoDbFactory mongoDbFactory() throws Exception { MongoClient mongo = new MongoClient("<ip-of-machine>", 27017); return new SimpleMongoDbFactory(mongo, "test"); }
But i always get the following exception when trying to connect to it.
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}}]
If i run mongodb from localhost and change the ip accordingly, everything works fine.
Thanks
If you have created a user and are having trouble authenticating, try the following: Check that you are using the correct username and password for your database user, and that you are connecting to the correct database deployment. Check that you are specifying the correct authSource database in your connection string.
Firstly, To ensure its not a firewall issue, stop IPTABLES on both servers (don't forget to re-enable afterwards).
On the machine that you are trying to connect to, ssh directly to it and ensure MongoDB is running, Connect locally and check that you can access a DB.
MongoDb isn't configured to accept connections from remote hosts by default, could you ensure you have these lines in your /etc/mongodb.conf
file:
bind_ip = 0.0.0.0
port = 27017
Make sure you restart MongoDB after making any changes. Try this and comment if your still having issues and I'll update the answer with more suggestions.
EDIT: As of version 2.6 the config file format has changed to YAML, details here, the file should be located at /etc/mongod.conf
.
net:
bindIp: 0.0.0.0
port: 27017
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With