2015-04-20 9 views
7

Ich versuche, den mongodb-Replikatsatz bereitzustellen. Ich habe meine mongodb-Instanz als primäre Komponente des Replikats erstellt. Jetzt versuche ich, eine andere mongodb Instanz an verschiedenen IP-Adresse gehostet hinzuzufügen, als Sekundär der Replik, aber ich erhalte den folgenden Fehler:Fehler beim Hinzufügen einer sekundären Instanz im mongodb-Replikatsatz

rs0:PRIMARY> rs.add("<ip address>:27017") 
{ 
    "ok" : 0, 
    "errmsg" : "Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2", 
    "code" : 103 
} 

Was ich tue, falsch?

Antwort

0

Wird die IP-Adresse des neu hinzugefügten Replikatgruppenelements zu localhost aufgelöst? Oder löst Ihr bereits bestehendes Mitglied localhost? In beiden Fällen lässt eine Replikatgruppe keine gemischte Konfiguration von localhost/non-localhost zu.

Werfen Sie einen Blick auf die source code location dieser Nachricht.

Auch sagt die Mongo guide on sharding dies:

Wenn Sie entweder „localhost“ oder 127.0.0.1 als Hostnamen Teil der jede Host-Kennung verwenden, zum Beispiel als Host Argument addShard oder der Wert Wenn Sie die Option --configdb run time wählen, müssen Sie für alle MongoDB Instanzen im Cluster "localhost" oder 127.0.0.1 für alle Hosteinstellungen verwenden. Wenn Sie Localhost-Adressen und Remote-Hostadresse mischen, wird MongoDB Fehler.

Dasselbe gilt für Replikatgruppen.

+0

Jede Idee, wie man damit umgehen, wenn ein Mitglied über einen SSH-Tunnel hinzufügen wollen? –

+0

Entschuldigung, ich kann nicht von der Stange sagen. Aber theoretisch sollte der Tunnel transparent sein und deshalb keinen Unterschied machen. Aber du musst es ausprobieren. –

+0

Das Problem ist, dass der Tunnel dann als "localhost: " zugänglich ist, aber ich muss das primäre mongodb an 127.0.0.1 und 172.17.0.1 gebunden haben, weil Container in Docker darauf zugreifen müssen. Es ist dann diese 172.17.0.1, die das Problem verursacht. Hier ist eine bessere Erklärung https://dba.stackexchange.com/questions/173911/mongodb-replica-set-over-ssh-tunnels –

4

Ich habe dieses Problem, wenn ich versuchte, zwei mongod-Instanz in derselben Maschine ausführen. Es wirft Fehler, wenn ich wie liefern

rs.add("localhost:27027") 
    (or) 
    rs.add("127.0.0.1:27027") 

wo 27027 die Portnummer ist zweitrangig.

Lösung:

Übergeben Sie den Host-Namen anstelle der IP-Adresse

rs.add("myhostname:27027")