web-dev-qa-db-fra.com

Impossible d'exécuter rs.initiate () quand la réplication mongodb est-elle définie

Utilisation de CentOS 7.

Version MongoDB: 3.2.15

Nom d'hôte: node1

Créer un répertoire:

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:

Démarrez le membre de réplication:

mongod --config /etc/mongod.conf

Exécutez 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
}

Référence:

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

Alors quelle est la raison? Il ne peut pas réaliser le nom d'hôte?

4
cloud_cloud

La réponse est simple! Vous n'avez pas "node1" défini dans votre fichier/etc/hosts. Votre machine ne connaît pas l'adresse IP de "node1" (ou "node2").

echo "127.0.0.1  node1" >> /etc/hosts

Et puis autre chose, vous avez défini (dans le fichier de configuration) que votre mongod écoute uniquement localhost. Cela signifie donc que l'ensemble de vos réplicas doit se trouver sur cette même machine et si c'est le cas, ces trois membres ne peuvent pas utiliser le même port 27017, chaque membre doit avoir un port différent.

5
JJussi

Pour mon cas: remplacez 127.0.0.1 avec localhost. Alors ça marche.

Voici le rsconf:

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