it-swarm.com.de

mongodb konnte keine passende Host-Lesepräferenz {mode: \ "primary \"} für set finden?

Ich stelle ein Monodb-Sharding bereit. Ich habe ein Replikatset auf drei Computern bereitgestellt:

dev41:27017,dev42:27017,dev193:27017

und configsvr in drei Maschinen:

dev41:27019,dev42:27019,dev193:27019

und auch ein mongos in maschine:

dev41:28000

endlich versuche ich meine replik in mongos hinzuzufügen:

mongo dev41:28000/admin
sh.addShard('rs0/dev41,dev42,dev193')

dann habe ich fehler bekommen:

{
    "ok" : 0,
    "errmsg" : "could not find Host matching read preference { mode: \"primary\" } for set rs0",
    "code" : 133
}
4
roger

Ich hatte das gleiche Problem, schaute dann in die Mongos-Protokolldatei und es hieß

kann sich nicht als interner Benutzer beim Hostnamen authentifizieren, Fehler: Authentifizierung fehlgeschlagen.

Siehe hier: Interne Benutzerauthentifizierung und erfolgt mit SecKey-Datei und Authentifizierung aktiviert.

Auflösung

Ich öffnete mongod.conf Datei und

security: authorization: enabled    
keyFile: /var/run/mongodb/secKey.key

fehlte, also habe ich das hinzugefügt und den Mongod neu gestartet. Dann habe ich wieder Shard von Mongos erstellt und es funktioniert jetzt.

2
Pravin Dwiwedi

Ich hatte das gleiche Problem und stellte fest, dass der Name des Replikats im Befehl addShard einfach falsch eingestellt war.

1

Dies ergänzt die Antwort von @ Miroslav mit der Ausnahme, dass der in/etc/hostname gefundene Hostname mit dem in/etc/hosts gefundenen Hostnamen übereinstimmen musste (vergessen Sie nicht, bei einer Änderung neu zu starten).

Ich habe eine gemeinsame Datei/etc/hosts für alle meine Server verwendet, aber die Datei/etc/hostname nicht entsprechend aktualisiert.

Viel Glück

1
JerradPatch

Ich hatte das gleiche Problem, aber mein Problem war, dass ich mich vor dem Aufrufen von sh.addShard() beim neuen Shard-Server (nicht bei Mongos) anmelden und den folgenden Befehl aufrufen musste:

rs.initiate({ _id : "REPLICA_SET_NAME", members: [ { _id : 0, Host : "HOSTNAME:27017" } ] })

Danach konnte ich sh.addShard() ohne Probleme aufrufen.

Beachten Sie, dass dies ohne security: authorization: enabled In meiner mongo.conf funktioniert

Prost,

1
mils

Ich hatte das gleiche Symptom, aber mein Problem war, dass die Schlüsseldateien nicht konsistent zwischen Mongod- und Konfigurationsknoten waren.

1

Ich hatte das gleiche Problem. Das Problem in meiner Konfiguration war, dass Hosts, auf denen ich Konfigurationsserver zum Ausführen festgelegt habe, nicht in/etc/hosts jedes Shard-Mitglied hatten, das ich als neuen Shard hinzufügen wollte. Problem behoben, als ich fehlende Shard-Mitglieder in/etc/hosts hinzugefügt habe.

1
Miroslav

Dieser Fehler tritt auch auf, wenn der im Befehl addShard () angegebene Shard-Host nicht erreichbar ist. Verlassen Sie die Mongos und versuchen Sie, sie für z.

telnet dev42 27017 

Wenn Telnet nicht funktioniert hat, muss dies zuerst behoben werden.

0
user2654744
  1. Stellen Sie sicher, dass Ihr Replicaset-Name korrekt ist.
  2. Stellen Sie sicher, dass Sie mindestens die IP-Adresse oder den Hostnamen des Masters im Replikatsatz hinzufügen.
  3. Stellen Sie sicher, dass Sie den richtigen Port des Masterknotens im Replikatsatz hinzufügen.
  4. Überprüfen Sie, ob Sie die richtige Schlüsseldatei verwenden, die in mongos und rs definiert ist.

Danach müssen Sie nur noch verwenden:

sh.addShard("your_rs_name/rs_master_ip_or_hostname:port")

und es ist alles, Mongos nehmen alle Mitglieder in den Rs, die Sie gerade hinzugefügt haben. Viel Glück

0
Carlos

Ich hatte das, was mir als das gleiche Problem erscheint.

In meinem Fall war das Problem, dass 2 meiner Shard-Server ausfielen. Ich habe sie einfach wieder gestartet und es hat eine Weile gedauert, bis sich die Befehle verbreitet haben (ich habe sie entfernt und einige Dokumente wurden immer noch in einer Sammlung angezeigt), aber nach ungefähr einer Minute war alles korrekt.

0
esca2791

Überprüfen Sie, ob der Mongodb-Dienst auf dem Arbiter-Knoten ausgeführt wird. Dadurch wurde mein Problem behoben

0
Omkar