Configure a Replica Set for MongoDB

Rocket.Chat uses the MongoDB replica setarrow-up-right to improve performance via Meteor Oplog tailing. Replica sets are used to provide high data availability by maintaining multiple copies of the data across different servers.

circle-info

Check the release notes to ensure you are using a compatible version of MongoDB.

To configure the replica set, add this section to the mongod.conf file:

replication: // indicates the beginning of the replication configuration section
  replSetName: "rs01"

For example, run the following command to update the replication settings in the MongoDB configuration file:

echo -e "replication:\n  replSetName: \"rs01\"" | sudo tee -a /etc/mongod.conf

Restart MongoDB and initiate the replica set

Follow these steps to initiate the MongoDB replica set:

  1. Restart MongoDB service:

sudo systemctl restart mongod
  1. Start the MongoDB shell and initiate the replica set:

mongo
> rs.initiate()

The output of the command should look like this:

{
    "info2" : "no configuration specified. Using a default configuration for the set",
    "me" : "127.0.0.1:27017",
    "ok" : 1,
    "operationTime" : Timestamp(1538772048, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1538772048, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}
rs01:SECONDARY>

Note that the ok value should be 1. Any other value, i.e. 93, means something is wrong.

  1. Hit enter, you should see your prompt turn into rs01:PRIMARY>, this indicates the replica set is being used. Type exit to get back to your regular shell:

Troubleshooting

Depending on your network settings, including /etc/hosts and DNS, if you have configured Rocket.Chat to use localhost:27017, you may see an error similar to this:

rs.initiate() may be defaulting to the host name e.g., test.

You can force a different hostname as follows:

You should get a response similar to the following:

Reconfigure and restart Rocket.Chat service

After you configured the replica set, you must add the MONGO_OPLOG_URL environment variable to the service definition and restart Rocket.Chat server.

  • In CentOS, open the file /usr/lib/systemd/system/rocketchat.service

  • In Ubuntu or Debian, open the file /lib/systemd/system/rocketchat.service

Add the following to the environment line:

Reload the system state and restart Rocket.Chat:

Last updated