it-swarm.com.de

Rs.initiate () kann nicht ausgeführt werden, wenn die Mongodb-Replikation festgelegt ist

Verwenden von CentOS 7.

MongoDB-Version: 3.2.15

Hostname: Knoten1

Verzeichnis erstellen:

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:

Starten Sie das Replikationsmitglied:

mongod --config /etc/mongod.conf

Führen Sie mongo aus:

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
}

Referenz:

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

Was ist der Grund? Es kann den Hostnamen nicht erkennen?

4
cloud_cloud

Die Antwort ist einfach! In Ihrer Datei/etc/hosts ist nicht "node1" definiert. Ihr Computer kennt die IP-Adresse von "Knoten1" (oder "Knoten2") nicht.

echo "127.0.0.1  node1" >> /etc/hosts

Und dann haben Sie (in der Konfigurationsdatei) definiert, dass Ihr Mongod nur localhost hört. Dies bedeutet, dass sich Ihr gesamter Replikatsatz auf diesem einen Computer befinden muss. Wenn dies der Fall ist, können alle drei Mitglieder nicht denselben Port 27017 verwenden. Jedes Mitglied muss einen anderen Port haben.

5
JJussi

Für meinen Fall: Ersetze 127.0.0.1 mit localhost. Dann funktioniert es.

Hier ist das rsconf:

rsconf = {
  _id: 'rs0',
  members: [
    {
      _id: 0,
      Host: 'localhost:27017'
    },
    {
      _id: 1,
      Host: 'localhost:27018'
    },
    {
      _id: 2,
      Host: 'localhost:27019'
    }
  ]
};
0
slideshowp2