Je déploie un partage monodb, j'ai déployé un jeu de répliques sur trois machines:
dev41:27017,dev42:27017,dev193:27017
et configsvr
sur trois machines:
dev41:27019,dev42:27019,dev193:27019
et aussi un mongos en machine:
dev41:28000
enfin j'essaye d'ajouter ma réplique dans des mongos:
mongo dev41:28000/admin
sh.addShard('rs0/dev41,dev42,dev193')
alors j'ai eu des erreurs:
{
"ok" : 0,
"errmsg" : "could not find Host matching read preference { mode: \"primary\" } for set rs0",
"code" : 133
}
J'ai fait face au même problème, puis j'ai regardé dans le fichier journal Mongos et il disait
impossible de s'authentifier auprès du nom d'hôte en tant qu'utilisateur interne, erreur: l'authentification a échoué.
Veuillez voir ici: l'authentification interne de l'utilisateur et se produit avec le fichier SecKey et l'authentification activée.
J'ai ouvert mongod.conf fichier et
security: authorization: enabled
keyFile: /var/run/mongodb/secKey.key
manquait alors j'ai ajouté cela et redémarrer le mongod. Ensuite, j'ai à nouveau créé un fragment à partir de Mongos et cela fonctionne maintenant.
J'ai eu ce même problème et j'ai découvert que j'avais simplement le nom de la réplique incorrect dans la commande addShard.
Cela ajoute à la réponse de @ Miroslav, sauf que le nom d'hôte trouvé dans/etc/hostname devait correspondre au nom d'hôte trouvé dans/etc/hosts (n'oubliez pas de redémarrer une fois modifié).
J'utilisais un fichier/etc/hosts commun pour tous mes serveurs mais je ne mettais pas à jour le fichier/etc/hostname pour qu'il corresponde.
Bonne chance
J'ai eu le même problème, mais mon problème était qu'avant d'appeler sh.addShard()
je devais me connecter au nouveau serveur de partition (pas mongos) et appeler la commande suivante:
rs.initiate({ _id : "REPLICA_SET_NAME", members: [ { _id : 0, Host : "HOSTNAME:27017" } ] })
Après cela, j'ai pu appeler sh.addShard()
sans problème.
Notez que cela fonctionne sans security: authorization: enabled
Dans mon mongo.conf
À votre santé,
J'ai eu le même symptôme, cependant, mon problème était que les fichiers clés n'étaient pas cohérents entre les nœuds mongodb et config.
J'avais un même problème. Le problème dans ma configuration était que les hôtes sur lesquels je configurais les serveurs de configuration à exécuter n'avaient pas dans/etc/hosts chaque membre de partition que je supposais ajouter en tant que nouvelle partition. Problème résolu lorsque j'ajoutais des membres de partition manquants dans/etc/hosts.
Cette erreur se produira également si l'hôte de partition spécifié dans la commande addShard () n'est pas accessible. Quittez les mongos et essayez de le telnet par exemple.
telnet dev42 27017
Si telnet n'a pas fonctionné, cela doit être corrigé en premier.
Après cela, il vous suffit d'utiliser:
sh.addShard("your_rs_name/rs_master_ip_or_hostname:port")
et c'est tout, les mongos prendront tous les membres dans les rs que vous venez d'ajouter. Bonne chance
J'ai eu ce qui me semble être le même problème.
Dans mon cas, le problème était que 2 de mes serveurs de fragments étaient tombés en panne. Je les ai simplement redémarrés et il a fallu un certain temps pour que les commandes se propagent (j'ai fait une suppression et certains documents apparaissaient toujours dans une collection), mais après une minute environ, tout était correct.
Vérifiez si le service mongodb s'exécute sur le nœud Arbiter, cela a résolu mon problème