Primeros pasos

Configuración de MongoDB

Esta guía cubre cómo configurar e instalar MongoDB para usar con Gigantics, incluyendo instalación, inicio/detención del servicio, y ajuste de rendimiento, particularmente cuando se ejecuta MongoDB en la misma máquina que Gigantics.

Instalación

Requisitos previos

Gigantics requiere MongoDB versión 4.0 o superior. Antes de instalar MongoDB, asegúrate de que tu sistema cumple con los requisitos mínimos:

  • Linux/MacOS: MongoDB 4.0+ con motor de almacenamiento WiredTiger
  • Windows: MongoDB 4.0+ con motor de almacenamiento WiredTiger

Para requisitos detallados del sistema, consulta las MongoDB Production Notes.

Hardware recomendado

Para un rendimiento óptimo con Gigantics:

  • Servidor MongoDB separado: Mínimo 8GB de RAM
  • Servidor combinado Gigantics + MongoDB: Mínimo 16GB de RAM

Cuando ejecutes tanto Gigantics como MongoDB en el mismo servidor, recomendamos al menos 16GB de RAM total del sistema para asegurar recursos adecuados para ambas aplicaciones.

Instalando MongoDB

MacOS

Usando Homebrew:

# Instalar MongoDB
brew tap mongodb/brew
brew install mongodb-community@6.0
 
# Iniciar el servicio MongoDB
brew services start mongodb-community@6.0
 
# Detener el servicio MongoDB
brew services stop mongodb-community@6.0

Linux (Ubuntu/Debian)

# Importar la clave pública GPG de MongoDB
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
 
# Crear archivo de lista para MongoDB
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
 
# Recargar la base de datos de paquetes local
sudo apt-get update
 
# Instalar los paquetes de MongoDB
sudo apt-get install -y mongodb-org
 
# Iniciar el servicio MongoDB
sudo systemctl start mongod
 
# Habilitar MongoDB para iniciar en el arranque
sudo systemctl enable mongod
 
# Detener el servicio MongoDB
sudo systemctl stop mongod

Linux (CentOS/RHEL)

# Crear archivo de repositorio MongoDB
sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo
 
# Agregar el siguiente contenido al archivo:
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
 
# Instalar MongoDB
sudo yum install -y mongodb-org
 
# Iniciar el servicio MongoDB
sudo systemctl start mongod
 
# Habilitar MongoDB para iniciar en el arranque
sudo systemctl enable mongod
 
# Detener el servicio MongoDB
sudo systemctl stop mongod

Windows

  1. Descarga MongoDB Community Server desde MongoDB Download Center
  2. Ejecuta el asistente de instalación con configuraciones predeterminadas
  3. El servicio MongoDB iniciará automáticamente después de la instalación

Para iniciar/detener manualmente el servicio MongoDB en Windows:

# Iniciar el servicio MongoDB
net start MongoDB
 
# Detener el servicio MongoDB
net stop MongoDB

Iniciando y Deteniendo MongoDB

Usando Servicios del Sistema

MacOS (Homebrew):

# Iniciar MongoDB
brew services start mongodb-community@6.0
 
# Detener MongoDB
brew services stop mongodb-community@6.0
 
# Verificar estado
brew services list | grep mongodb

Linux (systemd):

# Iniciar MongoDB
sudo systemctl start mongod
 
# Detener MongoDB
sudo systemctl stop mongod
 
# Reiniciar MongoDB
sudo systemctl restart mongod
 
# Verificar estado
sudo systemctl status mongod
 
# Ver logs de MongoDB
sudo journalctl -u mongod

Inicio Manual

Para iniciar MongoDB manualmente con configuración específica:

# Iniciar MongoDB con configuración predeterminada
mongod
 
# Iniciar MongoDB con archivo de configuración específico
mongod --config /etc/mongod.conf
 
# Iniciar MongoDB en un puerto específico y dirección IP
mongod --port 27017 --bind_ip localhost
 
# Iniciar MongoDB con ruta de base de datos personalizada
mongod --dbpath /var/lib/mongodb

Configuración de MongoDB

Ubicación del Archivo de Configuración

  • MacOS: /usr/local/etc/mongod.conf
  • Linux: /etc/mongod.conf
  • Windows: C:\Program Files\MongoDB\Server\[version]\bin\mongod.cfg

Configuración de Gigantics

Gigantics se conecta a MongoDB usando la configuración en tu archivo config/default.yaml:

mongodb:
  host: localhost
  port: 27017
  dbname: gigantics
  username: ''
  password: ''

Para información detallada sobre cómo configurar la conexión de MongoDB en Gigantics, consulta Configuración de MongoDB.

Gestión de Memoria para Servidores Compartidos

Cuando ejecutes MongoDB en la misma máquina que Gigantics, necesitas limitar el uso de memoria de MongoDB para prevenir que consuma toda la RAM disponible y deje recursos insuficientes para Gigantics.

Configuración del Tamaño de Caché WiredTiger

El motor de almacenamiento WiredTiger de MongoDB usa una caché para almacenar datos frecuentemente accedidos. Por defecto, WiredTiger asigna hasta el 50% de la RAM del sistema disponible menos 1GB (o 256 MB, el que sea mayor) para su caché, lo cual puede ser excesivo en servidores con RAM limitada.

Para limitar el uso de memoria de MongoDB, establece el parámetro cacheSizeGB en tu archivo de configuración de MongoDB.

Ejemplo de Configuración

Edita tu archivo de configuración de MongoDB (/etc/mongod.conf en Linux o /usr/local/etc/mongod.conf en MacOS):

# mongod.conf
 
# Dónde y cómo almacenar los datos.
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 4
 
# Dónde escribir datos de logging.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
 
# Interfaces de red
net:
  port: 27017
  bindIp: 127.0.0.1

Tamaños de Caché Recomendados

Cuando compartas un servidor con Gigantics, recomendamos los siguientes tamaños de caché basados en la RAM total del sistema:

RAM Total del SistemaCaché WiredTiger Recomendado
16GB4GB
32GB8GB
64GB16GB

Para calcular el tamaño de caché apropiado para tu sistema:

  1. Determina la RAM total del sistema
  2. Reserva al menos 8GB para el funcionamiento de Gigantics
  3. Establece cacheSizeGB a aproximadamente el 25-30% de la RAM restante

Por ejemplo, en un servidor de 16GB:

  • RAM total: 16GB
  • Reservado para Gigantics: 8GB
  • Restante: 8GB
  • Tamaño de caché recomendado: 4GB (25% de la RAM restante)

Aplicando la Configuración de Límite de Memoria

Después de modificar el archivo de configuración de MongoDB, reinicia el servicio MongoDB:

MacOS (Homebrew):

brew services restart mongodb-community@6.0

Linux:

sudo systemctl restart mongod

Windows:

net stop MongoDB
net start MongoDB

Mejores Prácticas para Entorno Compartido

1. Limitar el Tamaño de la Caché

Siempre configura cacheSizeGB cuando ejecutes MongoDB con Gigantics en el mismo servidor:

storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: [valor apropiado basado en tu RAM]

2. Monitorear el Uso de Recursos

Usa herramientas de monitoreo del sistema para asegurar que ambas aplicaciones tengan recursos adecuados:

# Ver uso de memoria del proceso MongoDB
ps aux | grep mongod
 
# Monitorear recursos del sistema continuamente
top
# o
htop

3. Optimizar Workers de Gigantics

Cuando ejecutes en un servidor compartido, considera reducir el número de workers de Gigantics:

# Iniciar con menos workers para reducir uso de memoria
./gig start -w=2 -j=2

4. Usar Discos Separados (Si Es Posible)

Si tu sistema tiene múltiples discos, considera colocar los archivos de datos de MongoDB en un disco separado de tu aplicación Gigantics:

storage:
  dbPath: /disco-separado/mongodb-data

Autenticación de Base de Datos

Para asegurar tu instalación de MongoDB, habilita la autenticación:

  1. Inicia MongoDB sin autenticación

  2. Conéctate usando la shell mongo:

    mongosh
  3. Crea un usuario admin:

    use admin
    db.createUser({
      user: "admin",
      pwd: "tu-contraseña-segura",
      roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]
    })
  4. Edita el archivo de configuración de MongoDB para habilitar autenticación:

    security:
      authorization: enabled
  5. Reinicia el servicio MongoDB

  6. Actualiza tu configuración de Gigantics para incluir credenciales:

    mongodb:
      host: localhost
      port: 27017
      dbname: gigantics
      username: 'admin'
      password: 'tu-contraseña-segura'

Resolución de Problemas

Problemas de Conexión

Si Gigantics no puede conectarse a MongoDB:

  1. Verifica que MongoDB está ejecutándose:

    # Linux
    sudo systemctl status mongod
     
    # MacOS
    brew services list | grep mongodb
  2. Verifica que MongoDB está escuchando en el puerto correcto:

    mongosh --host localhost --port 27017
  3. Revisa los logs de Gigantics en busca de errores de conexión:

    tail -f logs/out.txt

Problemas de Memoria

Si experimentas problemas de memoria con MongoDB:

  1. Verifica la configuración actual del tamaño de caché:

    mongosh
    db.serverStatus().wiredTiger.cache
  2. Confirma que cacheSizeGB está configurado correctamente en tu archivo de configuración de MongoDB

  3. Considera reducir aún más el tamaño de caché si es necesario

Documentación Relacionada