Mongo DB Cluster
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
Diagrama Mongo
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.