Instalación de un sharded cluster de MongoDB (config server + shards + mongos)
MongoDBNivel: AvanzadoDuración: 2–3 horasSharded cluster para cuando los datos o la carga de escritura superan un único replica set: config server replica set de tres miembros, dos o tres shards replica set y dos routers mongos; autenticación interna con keyfile, autorización, sh.addShard, elección de la shard key, sharding de la colección, balancer y verificación de la distribución. El resultado es un cluster que crece horizontalmente y al que las aplicaciones se conectan solo a través de los mongos. Si los datos caben en un único servidor, la instalación de un replica set es más sencilla y suficiente.
Topología: 3 config servers + 2×3 miembros de shard + 2 mongos (al menos 11 servidores; menos para pruebas)
Antes de empezar
- Todos los servidores usan el mismo sistema operativo, actualizado; la hora está sincronizada con NTP (chrony). La diferencia de hora entre miembros provoca problemas de sesión y de oplog.
- La RAM y la CPU coinciden con los valores del formulario (la caché de WiredTiger se calcula según este valor). Hay swap configurada, pero pequeña.
- El directorio de datos (…) está en un disco/LV independiente, formateado con XFS, montado con noatime y persistente en fstab. ext4 con WiredTiger puede causar problemas de rendimiento.
- Cada nombre de servidor se resuelve desde todos los servidores y desde los servidores de aplicación (DNS o /etc/hosts). La configuración del replica set usa nombres, no IP.
- Los puertos …, … y … están abiertos entre los servidores; la red de aplicación llega a estos puertos. Ningún otro servicio usa estos puertos.
- Los servidores pueden salir por HTTPS a repo.mongodb.org y pgp.mongodb.com, o hay un mirror interno configurado.
- No existe el paquete mongodb propio del sistema operativo ni una instalación antigua de MongoDB.
- Desde el primer servidor se puede hacer scp a los demás como root (o con un usuario con sudo) para copiar el keyfile. Si no, traslade el archivo manualmente por un medio seguro.
- Ha iniciado sesión con privilegios de root o sudo; la ventana de mantenimiento y el plan de snapshot del servidor (vuelta atrás) están listos.
- La shard key se ha decidido junto con el equipo de la aplicación: campo de filtro de las consultas más frecuentes, cardinalidad alta, distribución equilibrada de los valores. La shard key puede cambiarse después con reshardCollection, pero es costoso.
Fases de la guía
- Preparación del sistema operativo (todos los servidores) — Hostname: … · Hostname: … · Hostname: … · Hostname: … · Hostname: … · Actualización del sistema y herramientas necesarias …
- Instalación del software de MongoDB — Añadir el repositorio de MongoDB … · Añadir el repositorio de MongoDB … · Instalar el software de servidor de MongoDB (config servers y shards) · Instalar mongos y mongosh (routers) · Preparar el directorio de datos · Política, etiquetas y puertos de SELinux …
- Keyfile (autenticación interna del cluster) — Crear el keyfile · Copiar el keyfile a todos los servidores · Permisos del keyfile
- Config server replica set — mongod.conf (config server): … · Iniciar mongod · rs.initiate (config server)
- Shard A (replica set shardA) — mongod.conf (shard A): … · Iniciar mongod · rs.initiate (shard A) · Usuario administrador shard-local (shard A)
- Shard B (replica set shardB) — mongod.conf (shard B): … · Iniciar mongod · rs.initiate (shard B) · Usuario administrador shard-local (shard B)
- Shard C (replica set shardC) — mongod.conf (shard C): … · Iniciar mongod · rs.initiate (shard C) · Usuario administrador shard-local (shard C)
- mongos (router) — mongos.conf: … · Servicio systemd de mongos · Iniciar mongos · Crear el administrador del cluster · Añadir los shards (sh.addShard) · Crear el usuario de aplicación
- Shard key y sharding de la colección — Elección de la shard key (paso de decisión) · Aplicar sharding a la colección · Estado del balancer · Ventana horaria del balancer
- Verificación — Estado del cluster · Prueba de distribución · Estado del config server replica set · Cadena de conexión de la aplicación
- Después de la instalación — Rotación de logs · Estrategia de copia de seguridad · Supervisión