If you don’t have Mongo DB this is a good moment to install it. In Debian you can do it:

apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list

apt-get update

apt-get install mongodb-org

More information about MongoDB installation here.

I have 3 servers wiht MongoDB with this IPS 192.168.0.[11,12,14].

My intention is make this:

mongodb_architecture

Now you need change 2 lines in mongod.conf

Put real IP:

bind_ip=192.168.0.11 #put here diferent ips

And the name of the replica:

replSet=myhome

Now start all the servers. I have one on OSX and I want see http stats in port 28017, so It’s needed add –rest when you start MongoDB, sample:

mongod -f mongod.conf --rest

In Debian restart the service:

/etc/init.d/mongod restart

Ok now we connect to mongo in all servers:

In my case:

mongo 192.168.0.11
mongo 192.168.0.12
mongo 192.168.0.14

Now we’ll create the members:

rs.initiate();
rs.add("192.168.0.12");
rs.add("192.168.0.14);
rs.status();

That’s it. We’re done!

You can see rest stats from http://192.168.0.11:28017/_replSet

mongodb_stats

Two important things:

You’ll obtain this error in secondary members when you try some query:



Run this code:

rs.slaveOk()

This allows the current connection to allow read operations to run on secondary members.

How to configure connections? Sample in Mongoose:

mongoose.connect('mongodb://username:password@host:port/database,mongodb://username:password@host:port,mongodb://username:password@host:port?options...' [, options]);

Now it’s time to test. Try to turn off 2 servers and after turn on, turn off primary… It’s nice!