HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Can't run rs.initiate() when do mongodb replication set

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
caninitiatemongodbreplicationwhensetrun

Problem

Using CentOS 7.

MongoDB version: 3.2.15

Hostname: node1

Make directory:

mkdir /mongo-metadata


/etc/mongod.conf

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /mongo-metadata
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.

#security:

#operationProfiling:

replication:
  replSetName: rs0

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:


Start the replication member:

mongod --config /etc/mongod.conf


Run mongo:

mongo
# try
rs.initiate()    
{
        "info2" : "no configuration specified. Using a default configuration for the set",
        "me" : "node1:27017",
        "ok" : 0,
        "errmsg" : "No host described in new configuration 1 for replica set rs0 maps to this node",
        "code" : 93
}

# try
config = {
    _id : "rs0",
     members : [
         {_id : 0, host : "node1:27017"},
         {_id : 1, host : "node2:27017"},
     ]
}
rs.initiate(config)
{
    "ok" : 0,
    "errmsg" : "No host described in new configuration 1 for replica set rs0 maps to this node",
    "code" : 93
}


Reference:

https://docs.mongodb.com/manual/reference/command/replSetInitiate/

So what's the reason? It can't realize the hostname?

Solution

Answer is simple! You don't have "node1" defined in your /etc/hosts file. Your machine don't know IP address of "node1" (or "node2").

echo "127.0.0.1  node1" >> /etc/hosts


And then other thing, you have defined (in config file) that your mongod is listening only localhost. So it means that your whole replica set must be in that one machine and if it is so, all those three members cannot use same port 27017, every member must have different port.

Code Snippets

echo "127.0.0.1  node1" >> /etc/hosts

Context

StackExchange Database Administrators Q#180189, answer score: 8

Revisions (0)

No revisions yet.