Mongo DB Cluster

De Telstock Wiki
Saltar a: navegación, buscar

Mongo DB Cluster


Se describen en este documento las configuraciones y acciones realizadas para desplegar MongoDB en Producción para Telstock.


Los componentes principales para este despliegue:


1. Router: Instancia de MongoS que funciona como router y balanceador de carga para los clientes que requieran conectarse a la BD. Existirá una instancia de MongoS ejecutandose en cada servidor de aplicaciones que requiera conectarse a alguna base de datos mongo productiva.


2. Config Server: Desplegados en modo cluster (Replica Set) contendrán la información sobre la configuración y almacenamiento de cada colección en el cluster de BD.


3. Shards: Instancias de MongoD Desplegados en modo cluster (Replica Set) contendrán la porción de información para cada colección que sea asignada por el balanceador MongoS. Estas instancias podrán ser escaladas horizontalmente para garantizar la alta disponibilidad y la replicación de la información.


Topología del cluster de Base de Datos Mongo para Telstock


Ima.jpg


Diagrama Mongo

DM 1.jpg


Pasos para depslegar cualquier shard desde 0:

1.- Copiar el archivo /shard/mongod1.conf al servidor destino.


2.- Modificar las rutas del **dbPath, systemLogPath y keyFile** de acuerdo a las definidas en el servidor, por estandard estas deberían ser (crear estos directorios de ser necesario):

  • /var/mongodb/db
  • /var/mongodb/db/mongod.log
  • /var/mongodb/pki/mongo-cluster-pki


Nota: Para la autenticación entre los servidores se ha generado una llave que se almacena en el archivo: pki/mongo-cluster-pki

Es importante que esta llave sea copiada al servidor, configurada en el archivo conf de mongo y que se le asigne un nivel de acceso apropiado:


          sudo chown mongodb:mongodb /var/mongodb/pki/mongo-cluster-pki
          sudo chmod 400/var/mongodb/pki/mongo-cluster-pki


3.- Instalar mongo server y mongo shell (para poder conectarse al servidor de manera local).


4.- Mover el archivo mongod1.conf hacia /etc/mongod.conf

               sudo mv mongod1.conf  /etc/mongod.conf


5.- Iniciar el servicio mongod

              sudo systemctl start mongod


Para validar el estatus del servicio:

             sudo systemctl status mongod


Para saber si mongod está escuchando por el puerto especificado:

               netstat -plntu


6.- Habilitar el servicio de mongod para iniciar automaticamente con cada reinicio:

           sudo systemctl enable mongod


7.- Conectarse al servidor: mongo --port {puertoServidor}


NOTA: Mongo permitirá conectarse a un servidor con autorización habilitada sólo desde localhost. Esto permitirá crear un usuario administrador del replicaSet. Una vez creado este usuario administrador, Mongo no permitirá nuevas conexiones anónimas. Leer sobre: MongoDB Localhost exception

           mongo --port 27010


8.- Inicializar el replica set:

           use admin
           rs.initiate()

9.- Crear el usuario administrador:

          use admin
          db.createUser({
          user: "admin",
          pwd: "SuperDupperSecurePass",
          roles: [
          {role: "root", db: "admin"}
          ]
          })


10.- Autenticar al usuario administrador:

          db.auth("user", "password")



Pasos para desplegar Config Servers desde 0 :


1. Copiar el archivo /csrs/csrs_1.conf al servidor destino


2. Modificar las rutas del **dbPath, systemLogPath y keyFile** de acuerdo a las definidas en el servidor, por estandard estas deberían ser (crear estos directorios de ser necesario):

  • /var/mongodb/db
  • /var/mongodb/db/mongod.log
  • /var/mongodb/pki/mongo-cluster-pki


Nota: Para la autenticación entre los servidores se ha generado una llave que se almacena en el archivo: pki/mongo-cluster-pki

Es importante que esta llave sea copiada al servidor, configurada en el archivo conf de mongo y que se le asigne un nivel de acceso apropiado:

               sudo chown mongodb:mongodb /var/mongodb/pki/mongo-cluster-pki
               sudo chmod 400 /var/mongodb/pki/mongo-cluster-pki


3. Instalar mongo server y mongo shell (para poder conectarse al servidor de manera local).


4. Mover el archivo csrs_1.conf hacia /etc/mongod.conf


              sudo mv mongod1.conf  /etc/mongod.conf


5. Iniciar el servicio mongod:


              sudo systemctl start mongod


  • Para validar el estatus del servicio:


             sudo systemctl status mongod


  • Para saber si mongod está escuchando por el puerto especificado:


               netstat -plntu


6. Habilitar el servicio de mongod para iniciar automaticamente con cada reinicio:


           sudo systemctl enable mongod


7. Conectarse al servidor: mongo --port {puertoServidor}


NOTA: Mongo permitirá conectarse a un servidor con autorización habilitada sólo desde localhost. Esto permitirá crear un usuario administrador del replicaSet. Una vez creado este usuario administrador, Mongo no permitirá nuevas conexiones anónimas. Leer sobre: https://docs.mongodb.com/manual/tutorial/enable-authentication/


            	mongo --port 27010


8. Inicializar el replica set:


           use admin
           rs.initiate()
               


9.- Crear el usuario administrador:


          use admin
          db.createUser({
          user: "admin",
          pwd: "SuperDupperSecurePass",
          roles: [
          {role: "root", db: "admin"}
          ]
          })


10. Autenticar al usuario administrador:


          db.auth("user", "password")


Elementos configurados en el cluster:


Shards:


  • Shard1:


  • Nombre Replica Set: mongo-rs-1
  • Servidores configurados: 192.168.69.67: 27010 (Master)


  • Shard2:


  • Nombre Replica Set: mongo-rs-2
  • Servidores configurados: 192.168.69.68: 27010 (Master)


Nota: Los shards están desplegados como replica set, esto significa que puede agregar mas shards y a su vez mas servidores a cada shard según se requiera.


Config Server:


  • Nombre Replica Set: mongo-csrs
  • Servidores configurados: 192.168.69.69: 26001 (Master)


Nota: Los config servers están desplegados como replica set, esto significa que puede agregar mas servidores de configuración según sea requerido.