Saltar al contenido

¿Cómo configurar un clúster de MongoDB que admita sesiones?

Solución:

Tenía el mismo problema cuando intentaba conectarlo a una única instancia de mongo independiente, sin embargo, como está escrito en la documentación oficial, Mongo admite la función de transacción para un conjunto de réplicas. Entonces, intenté crear un conjunto de réplicas con todas las instancias en MongoDB 4.0.0, pude ejecutar con éxito el código. Entonces, inicie un conjunto de réplicas (3 miembros), luego intente ejecutar el código, el problema se resolverá.

NB: puede configurar un conjunto de réplicas en la misma máquina para las pruebas https://docs.mongodb.com/manual/tutorial/deploy-replica-set-for-testing/

El conjunto de réplicas es la solución para el problema con seguridad

Pero hacer réplicas de 3 nodos no es obligatorio.

Solucion 1 (para configuración independiente)

Para la instalación independiente de mongo, puede omitir la configuración del segundo o tercer nodo como se describe en la documentación oficial de mongo aquí

Y deberá establecer un replSetName en la configuración

replication:
   oplogSizeMB: <int>
   replSetName: <string>
   enableMajorityReadConcern: <boolean>

y luego ejecute los detalles de los cuales están aquí

rs.initiate()

después de esto, la cadena de conexión sería la siguiente: –

mongodb://localhost:27017/<database_name>?replicaSet=<replSet_Name>

teclas de arriba que necesita reemplazar: –

nombre de la base de datos = nombre de la base de datos

replSet_Name = nombre del conjunto de réplicas que configuró en la configuración anterior

Solucion 2 (solo para requisitos basados ​​en Docker)

Ejemplo de imagen de Docker con conjunto de réplicas de un solo nodo que actúa como nodo principal para el entorno de desarrollo es el siguiente: –

Yo había hospedado el imagen de la ventana acoplable en el concentrador de la ventana acoplable

docker pull krnbr/mongo:latest

Contenido del mismo Dockerfile están abajo: –

FROM mongo
RUN echo "rs.initiate({'_id':'rs0','members':[{'_id':0,'host':'127.0.0.1:27017'}]});" > /docker-entrypoint-initdb.d/replica-init.js
RUN cat /docker-entrypoint-initdb.d/replica-init.js
CMD [ "--bind_ip_all", "--replSet", "rs0" ]

Comando de ejecución de Docker (reemplácelo con el nombre de la imagen que creó usted mismo o use el compartido anterior, es decir, krnbr / mongo): –

sin volumen


docker run -d --name mongo -p 27017:27017 <Image Name> mongod --replSet rs0 --port 27017

con volumen


docker run -d --name mongo -p 27017:27017 -v ~/.mongodb:/data/db <Image Name> mongod --replSet rs0 --port 27017

para apoyar vinculación de cualquier ip

docker run -d --name mongo -p 27017:27017 -v ~/.mongodb:/data/db <Image Name> mongod --bind_ip_all --replSet rs0 --port 27017

Pudimos configurar en local como se muestra a continuación

  • En Linux, se incluye un archivo de configuración predeterminado /etc/mongod.conf cuando se usa un administrador de paquetes para instalar MongoDB.

  • En Windows, un valor predeterminado El archivo de configuración /bin/mongod.cfg se incluye durante la instalación

  • En macOS, se incluye un archivo de configuración predeterminado /usr/local/etc/mongod.conf cuando se instala desde el grifo Homebrew oficial de MongoDB.

Agregar la siguiente configuración

replication:
   oplogSizeMB: 128
   replSetName: "rs0"
   enableMajorityReadConcern: true

reinicio del mongod del servicio sudo;

mongo;

rs.initiate({
      _id: "rs0",
      version: 1,
      members: [
         { _id: 0, host : "localhost:27017" }
      ]
   }
)

cheque para que la configuración esté habilitada

rs.conf()

podemos usar el URL de conexión como

mongodb://localhost/default?ssl=false&replicaSet=rs0&readPreference=primary

docs: config-options replicación de instancia única

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *