Sistema MongoDB: instalación software
El sistema operativo a instalar en cada una de las máquinas virtuales ya creadas es Debian, el mismo que hemos utilizado para el clúster. Para ello utilizamos la plantilla de Debian incluida en Proxmox y realizamos una instalación normal
Instalación de MongoDB
img crear lxc
apt update
apt install mongo
IP fija: 192.168.123.100, .101, .102 y .103
Configuración del almacenamiento
Para la gestión de los datos usamos el motor de almacenamiento WiredTiger:
- Es una plataforma de código abierto NoSQL
- Usa un formato de ficheros compacto y compresión de datos: se reduce el acceso a disco.
- Utiliza la arquitectura de Control de Concurrencia MultiVersion (MVCC): acceso concurrente a los datos
- A partir de MongoDB 3.2 es el utilizado por defecto
Editamos el fichero /etc/mondodb.conf en todos los servidores de base de datos con el contenido siguiente (sustituir <ip interna del servidor> por su valor real):
systemLog:
destination: file
path: “/var/log/mongodb/mongod.log”
logAppend: true
# Listen to local interface only. Comment out to listen on all interfaces.
net:
bindIp: <ip interna del servidor>
port: 27017
# Storage engine
storage:
dbPath: /data/mongodb
engine: wiredTiger
directoryPerDB: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
# Replication option
replication:
oplogSizeMB: 1024
replSetName: rsBD
########################################################################
Creamos el directorio /data/mongodb para almacenar los datos de la base y le damos permisos sobre el mismo a mongodb:mongodb
mkdir /data/mongodb
chown -R mongodb:mongodb /data/mongodb
Se reinicia el servicio en uno de los servidores. Para comprobar que está bien iniciado miramos la respuesta del shell
service mongodb restart
Comprobar con db.serverStatus que el storage.engine está habilitado y que rs.status() dice que falta la inicialización.
Árbitro
Hay que añadir un árbitro para que decida en caso de empate en votos entre servidores acerca de quién es el primario
Editamos el fichero /etc/mondodb.conf y cambiamos el puerto de comunicaciones (30000)
systemLog:
…
port: 30000
…
replSetName: rsBD
########################################################################
Se crea el directorio /data/arb (aquí no se van a almacenar los datos de la base ) y se le dan permisos a mongodb:mongodb
mkdir /data/arb
chown -R mongodb:mongodb /data/arb
Se reinicia el servicio de mongo en el árbitro, y desde el primario añadimos el árbitro
rs.addArb(“host”:30000)
Para entender mejor los comandos de configuración de réplicas os aconsejamos el siguiente link
https://docs.mongodb.com/manual/reference/method/js-replication/
Verificación del la instalación
service mongodb status
rs.status()
cambio de primario a secundario
Se para el primario y se ve como el secundario recoge el control. Para ello se puede hacer con un
service mongodb stop
Comprobar que uno de los otros nodos ha pasado a ser primario