3 votes

Pourquoi ne puis-je pas utiliser l'adresse IP du serveur mongod en cours d'exécution localement pour l'ajouter à l'ensemble de réplication mongodb

Je lance 3 serveurs mongod localement sur des ports différents avec la commande ci-dessous

mongod.exe --port 27017 --replSet rs0 --dbpath C:\data\db1 --smallfiles --oplogSize 128

mongod.exe --port 27018 --replSet rs0 --dbpath C:\data\db2 --smallfiles --oplogSize 128

mongod.exe --port 27019 --replSet rs0 --dbpath C:\data\db3 --smallfiles --oplogSize 128

cela démarrera trois serveurs mongoDB localement.

Maintenant, pour configurer l'ensemble de réplication, j'ai utilisé les commandes suivantes

rsconf = { _id : rs0,
           members: [
                      {_id:1, host:"localhost:27017"}
                    ]
         }

puis pour démarrer

rs.initiate(rsconfig)

maintenant pour ajouter d'autres membres

rs.add({_id:2, host: "localhost:27018"})

fonctionne bien cependant le suivant

rs.add({_id:2, host: "10.212.71.116"})

lance une exception -

   {
        "errmsg" : "exception: can't use localhost in repl set member names exce
pt when using it for all members",
        "code" : 13393,
        "ok" : 0
}

Je suis nouveau sur mongoDB, il me semble donc plus approprié d'utiliser l'adresse IP (pour localhost) que localhost. Pourquoi est-ce ainsi dans mongoDB ?

3voto

veer7 Points 897

En parcourant la documentation du sharding mongodb, j'ai trouvé la déclaration suivante

Parce que tous les composants d'un cluster shardé doivent communiquer entre eux via le réseau, il existe des restrictions spéciales concernant l'utilisation d'adresses localhost :

Si vous utilisez soit "localhost" soit "127.0.0.1" comme identifiant d'hôte, alors vous devez utiliser "localhost" ou "127.0.0.1" pour tous les paramètres d'hôte pour toutes les instances MongoDB dans le cluster. Cela s'applique à la fois à l'argument d'hôte pour addShard et à la valeur de l'option de runtime mongos --configdb. Si vous mélangez les adresses localhost avec des adresses distantes d'hôtes, MongoDB produira des erreurs.

sur la page "http://docs.mongodb.org/manual/core/sharded-cluster-architectures/#sharding-requirements-infrastructure"

Cela implique que lorsque vous êtes en environnement de test et que vous ne voulez pas ajouter d'hôtes autres que localhost, vous pouvez adopter l'approche d'utilisation de localhost, sinon préférez utiliser l'adresse IP

2voto

Cat H Points 1665

J'ai rencontré le même problème. Après rs.initiate(), regardez le champ me dans le résultat imprimé de cette commande. C'est le nom de votre ordinateur. Pour moi, c'était Apollo-17:27001. Avec cette information, ajoutez 2 autres serveurs : rs.add("Apollo-17:27002"), etc. Assurez-vous que tout est en ordre : dans la console, vous verrez { "ok" : 1 }. C'est tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X