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?
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.
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'
}
]
};