2017-11-14 8 views
0

Ich habe mongodb in einer Google Cloud-Compute-Instanz eingerichtet und versuche, eine Remote-Verbindung herzustellen. Meine mongod.conf Datei sieht wie folgt aus:Ich kann keine Verbindung mit dem MongoDB-Remoteserver herstellen

# mongod.conf 
# for documentation of all options, see: 
# http://docs.mongodb.org/manual/reference/configuration-options/ 
# Where and how to store data. 
storage: 
    dbPath: /var/lib/mongodb 
    journal: 
    enabled: true 
# engine: 
# mmapv1: 
# wiredTiger: 
# where to write logging data. 
systemLog: 
    destination: file 
    logAppend: true 
    path: /var/log/mongodb/mongod.log 
# network interfaces 
net: 
    port: 27017 
    bindIp: 0.0.0.0 
#processManagement: 
security: 
    authorization: 'enabled' 

Ich habe Setup eine Firewall-Regel in meinem Google Cloud-Konsole, die die Instanz-Tags und öffnet tcp:27017 für ip 0.0.0.0/0 reicht.

Überprüfung auf dem Port 27017 es wie Mongo sieht hört:

sudo netstat -tulpn | grep 27017 
tcp  0  0 0.0.0.0:27017   0.0.0.0:*    LISTEN  3781/mongod 

Insgesamt scheint es auch wie Port 27017 geöffnet ist:

netstat --listen 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  
tcp  0  0 *:27017     *:*      LISTEN 
... 

Auf der Instanz ich Setup ein Admin-Datenbank mit Admin Benutzer:

>use admin 
>db.createUser(
    { 
    user: 'admin', 
    pwd: 'somepass', 
    roles: [{ role: "userAdminAnyDatabase", db: "admin" }] 
    } 
) 

ich auch Setup ein Benutzer für eine Testdatenbank:

>use test 
>db.createUser(
    { 
    user: 'tester', 
    pwd: 'apassword', 
    roles: [{ role: "readWrite", db: "test" }, 
      { role: "read", db: "reporting" }] 
    } 
) 

Dieser Benutzer arbeitet lokal:

>use test 
>db.auth('tester', 'apassword') 
1 

aber wenn ich versuche, eine Remote-Verbindung nicht OK:

$ mongo -u tester -p apassword 12.345.67.890/test 
MongoDB shell version v3.4.1 
connecting to: mongodb://12.345.67.890/test 
2017-11-14T12:47:07.369-0700 W NETWORK [main] Failed to connect to 12.345.67.890:27017 after 5000ms milliseconds, giving up. 
2017-11-14T12:47:07.370-0700 E QUERY [main] Error: couldn't connect to server 12.345.67.890:27017, connection attempt failed : 
[email protected]/mongo/shell/mongo.js:234:13 
@(connect):1:6 
exception: connect failed 

Ich bin kein Netzwerkexperte, also habe ich ziemlich erschöpft mein Wissen an diesem Punkt und weiß nicht weiter.

Fehle ich etwas in mongod.conf? Habe ich die Firewall falsch eingerichtet? Jede Hilfe wird geschätzt.

Antwort

0

Ich habe eine Lösung dafür gefunden, aber ich weiß nicht, warum das funktioniert und nicht meine ursprüngliche Herangehensweise.

Meine Instanz hat http/https aktiviert. Dies verwendet die Firewall-Regeln default-allow-http und default-allow-https. Diese Regeln ermöglichen Verbindungen von überall (0.0.0.0/0) über TCP-Ports 80 bzw. 443. Ich habe die http-Regel bearbeitet und TCP-Port 27017 hinzugefügt.

Jetzt kann ich eine Verbindung zum Server herstellen.

Als Test habe ich die http-Regel zurückgesetzt und eine weitere Regel hinzugefügt, die auf alle Instanzen angewendet wird, die tcp: 27017 bis 0.0.0.0/0 öffnen. Im Wesentlichen ist alles identisch mit dem Speichern der http-Regeln für den Namen und die Ziel-Tags. Mit dieser Änderung kann ich keine Verbindung zum Server herstellen.

Es scheint eher seltsam und es fühlt sich nicht wie ein beabsichtigtes Verhalten, es sei denn, mein Verständnis der Firewall Regeln in unvollständig.

Am Ende sieht es so aus, als würde man entweder mongo einrichten, um einen der http/https-Ports zu verwenden, oder den Regeln den Port 27017 hinzuzufügen, ist der richtige Weg.

Verwandte Themen