replset remote only multiple mongod conf bindip bind_ip allow all mongodb virtual-machine remote-access

remote - mongodb listen only on localhost



Cómo configurar mongod.conf bind_ip con múltiples direcciones IP (9)

Agregué exitosamente una segunda ip en mi servicio de la versión 3.2 usando una coma, sin espacios y un FQDN

net: port: 27017 bindIp: localhost,dev-2.office.sampleorg.com

Soy un novato en la configuración del entorno del servidor y mongoDB. Esto puede parecer algo realmente simple, sin embargo, realmente necesito su ayuda.

Estoy tratando de conectarme a mi máquina virtual que ejecuta la instancia mongodb desde la máquina local, que creo que debería ser similar al entorno de producción cuando lo ejecuto en un servidor remoto separado.

El entorno es el siguiente:

  • IP privada para máquina virtual: 192.168.184.155

  • IP pública tanto para la máquina local como para la máquina virtual: 96.88.169.145


Cambié el archivo bind_ip en /etc/mongod.conf desde

bind_ip = 127.0.0.1

a

bind_ip = 127.0.0.1,192.168.184.155,96.88.169.145

Después de reiniciar el servicio mongod, ni la máquina virtual ni la máquina local pueden acceder a mongodb a través del comando mongodb y aparece el siguiente error.

MongoDB shell version: 3.0.1 connecting to: test 2015-03-17T16:02:22.705-0400 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused 2015-03-17T16:02:22.707-0400 E QUERY Error: couldn''t connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at connect (src/mongo/shell/mongo.js:179:14) at (connect):1:6 at src/mongo/shell/mongo.js:179 exception: connect failed

Sin embargo, si cambio el

bind_ip = 192.168.184.155

y reinicie el servicio, funciona y puedo acceder usando mongo desde mi máquina local. Parece que no funciona con varias direcciones IP. Intenté buscar en el documento mongodb, sin embargo, sí mencionan que bind_ip toma una lista separada por comas, lo que realmente me confundió.

Gracias por su ayuda por adelantado.


El caso en la versión 3.6 de mongodb en mi Ubuntu16.04 LTS es que no necesita poner las direcciones IP entre corchetes "[]". Elimine el espacio después de que la coma resuelva el problema de conexión fallida en el registro mongod (/var/log/mongodb/mongod.log)

NETWORK [initandlisten] getaddrinfo(" xxx.xxx.xxx.xxx") failed: Name or service not known

Después de modificar el bindIp: 127.0.0.1 a bindIp: 127.0.0.1,xxx.xxx.xxx.xxx (no hay comas entre las IP) , la IP del host está escuchando de la siguiente manera:

xxx@xxxx:/var/log/mongodb$ sudo netstat -plnt |egrep mongod tcp 0 0 xxx.xxx.xxx.xxx:27017 0.0.0.0:* LISTEN 30747/mongod tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 30747/mongod


En Mongo 3. *,

use un soporte tal como

net: port: 27017 bindIp : [127.0.0.1,10.0.0.2,10.0.0.3]


En mi caso la solución fue poner la coma separada por IP y sin espacios.

bind_ip=192.168.2.29,127.0.0.1 #port = 27017

De esa manera funcionó:

2018-10-02T07:49:27.952+0000 I CONTROL [initandlisten] options: { config: "/etc/mongodb.conf", net: { bindIp: "192.168.2.29,127.0.0.1", unixDomainSocket: { pathPrefix: "/run/mongodb" } }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongodb.log" } } 2018-10-02T07:49:27.954+0000 I - [initandlisten] Detected data files in /var/lib/mongodb created by the ''wiredTiger'' storage engine, so setting the active storage engine to ''wiredTiger''.

Mongo 3.6.3 aquí.

mongod --version versión db versión v3.6.3 versión git: 9586e557d54ef70f9ca4b43c26892cd55257e1a5 versión OpenSSL: OpenSSL 1.1.0g 2 nov. 2017 atribuidor: tcmalloc módulos: ninguno entorno de compilación: distarch: x86_64 target_arch: x86_64 target_arch: x86_64


Estoy ejecutando 3.6 en SUSE 12.x y tuve problemas al utilizar listas de IP separadas por comas. He arreglado el problema por bindIp: 0.0.0.0


Gracias por @wdberkeley y @anhlc trajeron la pista.

Miré el archivo de registro en /var/log/mongodb/mongod.log. Muestra la razón de la falla para el problema.

2015-03-17T16:08:17.274-0400 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1, 192.168.184.155" }, storage: { dbPath: "/var/lib/mongodb" }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } } 2015-03-17T16:08:17.332-0400 I NETWORK [initandlisten] getaddrinfo(" 192.168.184.155") failed: Name or service not known

Por lo tanto, el archivo mongo.conf es sensible al espacio, el cual agregué y debería haberlo notado. Además, como lo señaló @anhlc, 96.88.169.145 no es una dirección IP válida para VM. Para que uno también contribuya al error.

¡Muchas gracias por su ayuda! Espero que esto pueda ayudar si alguien se topa con el mismo problema.


Para mí, envuelva los Ips separados por comas con corchetes en mongo 3.2.7:

bindIp = [127.0.0.1, 192.168.184.155, 96.88.169.145]


Si todo lo que quiere hacer es conectarse a esta máquina a través de la red, NO necesita modificar el valor de bind_ip .

En tu caso necesitas seguir los siguientes pasos.

  1. Configure la máquina remota para bloquear todas las conexiones al puerto 27017
  2. Habilite la máquina remota para que solo acepte conexiones desde su máquina local
  3. Configurar credenciales con MongoDB
  4. Conectar con el cliente utilizando credenciales.

Si no estás seguro de cómo hacer alguno de estos pasos. Echa un vistazo a una publicación de blog que escribí que explica más detalladamente cómo hacer esto.

Entrada en el blog

Espero que esto ayude.


Usted puede hacer eso por:

bindIp: [172.31.60.184,127.0.0.1]

Recuerda no poner un espacio después de la coma.