Mongo can be used in many ways. In our group so far we have been using mongo as a standalone server. This page will describe some of the results we have had with setting up and using a mongo cluster. The two methods to setup clusters (that can be combined) are replication clusters as well as sharded clusters.
A replicated cluster is where a set of mongo servers have replicated data. This will allow for fault tolerance. Any time a node of the cluster disappears another node can take over being the primary node. This can also improve the read performance (since reads can be done on multiple nodes). For more information see https://docs.mongodb.com/manual/replication/.
To get this to work in clowder, add the following to your custom.conf file:
mongodbURI = "mongodb://mongo-1.os.ncsa.edu:27017,mongo-2.os.ncsa.edu:27017,mongo-3.os.ncsa.edu:27017/sead2-dev?replicaSet=ISDA"
You don't need to specify all nodes in the cluster, however if the one you specify is down, you will not be able to get the other nodes in the cluster.
A replicated system should have a minimum of 3 nodes. If you have only two nodes in the cluster and one disappears, the second node will NOT be selected the new primary node, and your cluster will not be reachable One of these nodes can be an Aribiter (an arbiter is a regular mongo instance, but does not store any data). Once one of the nodes disappears the left over nodes will vote on who will become the next primary. Normally each node will have the same priority, but this can be changed during the setup.
To create the cluster the following changes had to be made to /etc/mongod.conf
- Ubuntu will bind mongo to localhost interface only. To undo this make sure to remove the "bindIp" element
- You will need to add the replication name, this is done in the replication: section by setting replSet
- To have all databases go into separate directories add directoryPerDB: true to the storage: section
Following is the mongod.conf that is used:
Following are the commands used to create the cluster.