2016-04-28 2 views
0

ich eine 3-gliedrige Replikatsatzes in Amazon cloud.I eingestellt haben erstellt haben alle erfordert die Firewall-Einstellungen und Mongo congigurations.Below ist mein Replikatssatz config:Herstellen einer Verbindung mit dem Remote-Replikat von der Mongo-Shell?

{ 
    "_id" : "rs1", 
    "version" : 3, 
    "protocolVersion" : NumberLong(1), 
    "members" : [ 
      { 
        "_id" : 1, 
        "host" : "ip-172-31-16-84:27017", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : false, 
        "priority" : 1, 
        "tags" : { 

        }, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      }, 
      { 
        "_id" : 2, 
        "host" : "ip-172-31-23-212:27017", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : false, 
        "priority" : 1, 
        "tags" : { 

        }, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      }, 
      { 
        "_id" : 3, 
        "host" : "ip-172-31-14-196:27017", 
        "arbiterOnly" : false, 
        "buildIndexes" : true, 
        "hidden" : false, 
        "priority" : 1, 
        "tags" : { 

        }, 
        "slaveDelay" : NumberLong(0), 
        "votes" : 1 
      } 
    ], 
    "settings" : { 
      "chainingAllowed" : true, 
      "heartbeatIntervalMillis" : 2000, 
      "heartbeatTimeoutSecs" : 10, 
      "electionTimeoutMillis" : 10000, 
      "getLastErrorModes" : { 

      }, 
      "getLastErrorDefaults" : { 
        "w" : 1, 
        "wtimeout" : 0 
      }, 
      "replicaSetId" : ObjectId("5720fb585ef3baca32efe765") 
    } 
} 

HINWEIS: Ich habe die Replikat-Gruppe erstellt haben die Rechner Hostname Maschinen öffentliche IP-Adresse.

Ich verwende den Befehl unten, um eine Verbindung zu einem Replikat von einer dieser 3 Replica-Set-Maschinen herzustellen, und ich werde mit der Primärdatenbank der Replikatgruppe verbunden.

Aber wenn ich den gleichen Befehl von einer anderen Maschine (nehme meine lokale Maschine) nicht in demselben LAN. Der Befehl schlägt fehl mit folgenden Fehlern:

C:\Users\gur35948>mongo --host "rs1/52.221.230.236:27017" 
MongoDB shell version: 3.0.6 
connecting to: rs1/52.221.230.236:27017/test 
2016-04-28T11:54:02.851+0530 I NETWORK starting new replica set monitor for  replica set rs1 with seeds 52.221.230.236:27017 
2016-04-28T11:54:02.853+0530 I NETWORK [ReplicaSetMonitorWatcher] starting 
2016-04-28T11:54:03.043+0530 I NETWORK changing hosts to rs1/ip-172-31-14-196:27017,ip-172-31-16-84:27017,ip-172-31-23-212:27017 from rs1/52.221.230.236:27017 
2016-04-28T11:54:13.689+0530 I NETWORK [ReplicaSetMonitorWatcher] getaddrinfo("ip-172-31-14-196") failed: errno:11001 No such host is known. 
2016-04-28T11:54:14.335+0530 I NETWORK getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known. 
2016-04-28T11:54:16.682+0530 I NETWORK getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known. 
2016-04-28T11:54:17.505+0530 I NETWORK getaddrinfo("ip-172-31-14-196") failed:errno:11001 No such host is known. 
2016-04-28T11:54:17.505+0530 W NETWORK No primary detected for set rs1 
2016-04-28T11:54:17.511+0530 E QUERY Error: ReplicaSetMonitor no master found for set: rs1 
at connect (src/mongo/shell/mongo.js:181:14) 
at (connect):1:6 at src/mongo/shell/mongo.js:181 

Der Mongo nicht in der Lage ist, die Hostnamen in der Replikat-Gruppe hat wegen der Differenz in der network.I verwendet lösen nicht öffentliche IP verwendet, weil es schlechte Praxis ist, denke ich.

So endlich die Frage ist, wie verbinde ich mit diesem Remote-Replikat?

Dank

Antwort

2

Bei Anschluss an eine Replik Ihren Kunden/Treiber-Set (zB die mongo Shell.) Verwendet, um die Details für Ihre Replik in rs.conf() wie definiert eingestellt konfiguriert:

  • Host-Namen sein müssen auflösbare um IP-Adressen
  • Verbindungen hergestellt unter Verwendung des konfigurierten Hostnamen/IP/Port für jedes Replikatsatzes Mitglied

Der folgende Fehler insbesondere zeigt an, dass der Host-Name von Ihrem mongo Client nicht auflösbar ist:

2016-04-28T11:54:13.689+0530 I NETWORK [ReplicaSetMonitorWatcher] getaddrinfo("ip-172-31-14-196") failed: errno:11001 No such host is known. 2016-04-28T11:54:14.335+0530 I NETWORK getaddrinfo("ip-172-31-16-84") failed: errno:11001 No such host is known.

Der Hostname ip-172-31-16-84 schlägt vor, dass die IP-Adresse für den Host 172.31.16.84 sein wird, was eine nicht ist routingfähig private network address.

Es ist nicht möglich, von außerhalb des Netzwerks eine Verbindung zu einer nur internen IP-Adresse herzustellen.

Um eine sichere Verbindung zu Ihrer Bereitstellung herzustellen, müssen Sie eine SSH- oder VPN-Verbindung mit dem privaten Netzwerk, in dem sich Ihre Replikatgruppe befindet, öffnen und die Shell mongo innerhalb dieses privaten Netzwerks ausführen. Weitere Informationen zum Sichern Ihrer Bereitstellung finden Sie unter MongoDB Security Checklist.

1

Wie wäre es mit einem SSH-Tunnel, um eine Verbindung mit einem der Server herzustellen, und dann mongo Shell verwenden, um auf localhost zu verbinden?

Dies ist sehr einfach einzurichten, zu sichern und in den meisten MongoDB GUI jetzt unterstützt.

Verwandte Themen