sql >> Base de Datos >  >> NoSQL >> MongoDB

Supervisión y gestión de operaciones de MongoDB 4.0 con ClusterControl

Si bien MongoDB ha pasado casi una década alcanzando la madurez (versión inicial en febrero de 2009), la tecnología es un poco misteriosa para quienes tienen experiencia en entornos de bases de datos relacionales convencionales (RDBMS). La integración de NoSQL en un entorno existente sin un conocimiento profundo puede ser un desafío. No es raro ver a MongoDB ejecutándose junto con MySQL u otra base de datos RDBMS.

La experiencia de RDBMS puede ayudar a comprender algunos de los procesos, pero necesita saber cómo traducir su experiencia al mundo de NoSQL. La gestión de entornos de producción implica pasos como la implementación, la supervisión del tiempo de actividad y el rendimiento, el mantenimiento de la seguridad del sistema, la gestión de alta disponibilidad, las copias de seguridad, etc. Tanto RDBMS como NoSQL son opciones viables, pero existen diferencias críticas específicas entre los dos que los usuarios deben tener en cuenta al implementar o administrar MongoDB. La tecnología cambia rápidamente y debemos adaptarnos rápidamente.

Cuando MongoDB es repentinamente su responsabilidad, las herramientas de administración garantizan que las bases de datos de MongoDB que administra sean estables y seguras. El uso de procesos predefinidos y la automatización no solo puede ahorrarle tiempo, sino también protegerlo de los errores comunes. Una plataforma de administración que aborde sistemáticamente todos los diferentes aspectos del ciclo de vida de la base de datos será más sólida que unir varias soluciones puntuales.

En el corazón de ClusterControl se encuentra su funcionalidad de automatización que le permite automatizar las tareas de la base de datos que debe realizar regularmente, como implementar nuevas bases de datos, agregar y escalar nuevos nodos, administrar copias de seguridad, alta disponibilidad y conmutación por error, cambios de topología, actualizaciones y más. ClusterControl proporciona seguridad programada, manteniendo la integridad de su infraestructura de base de datos. Además, con ClusterControl, los usuarios de MongoDB ya no están sujetos al bloqueo del proveedor; algo que fue cuestionado por muchos recientemente. Puede implementar e importar una variedad de versiones y proveedores de MongoDB desde una sola consola de forma gratuita. Los usuarios de MongoDB a menudo tienen que usar una combinación de herramientas y secuencias de comandos propias para lograr sus requisitos, y es bueno saber que puede encontrarlos combinados en un solo producto.

En este artículo, le mostraremos cómo implementar y administrar MongoDB 4.0 de forma automatizada. Aquí encontrará cómo hacerlo:

  • Instalación de ClusterControl
  • Proceso de implementación de MongoDB
    • Implementar un nuevo clúster
    • Importar clúster existente
  • MongoDB escalable
    • Escala de lectura (replicaSet)
    • Escribir escalado (fragmentación)
  • Proteger MongoDB
  • Supervisión y tendencias
  • Copia de seguridad y recuperación

Instalación de ClusterControl

Para comenzar con ClusterControl, necesita una máquina virtual o un host dedicado. Los requisitos de la máquina virtual y los sistemas compatibles se describen aquí. La máquina virtual base puede comenzar desde 2 GB, 2 núcleos y 20 GB de espacio en disco, ya sea en las instalaciones o en la nube.

La instalación está bien descrita en la documentación, pero básicamente se trata de descargar el script de instalación que lo guiará a través del asistente. La secuencia de comandos del asistente configura la base de datos interna, instala los paquetes necesarios, los repositorios y realiza otros ajustes necesarios. Para los entornos de bloqueo de Internet, puede utilizar el proceso de instalación fuera de línea.

ClusterControl requiere acceso SSH a los hosts de la base de datos, y el monitoreo puede estar basado en agentes o sin agentes. La administración es sin agentes.

Configurar SSH sin contraseña para todos los nodos de destino (ClusterControl y todos los hosts de bases de datos) implica ejecutar los siguientes comandos en el servidor de ClusterControl:

$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

Implementación y escalado de MongoDB

Implementar un nuevo clúster de MongoDB 4.0

Una vez que ingresamos a la interfaz de ClusterControl, lo primero que debemos hacer es implementar un nuevo clúster o importar uno existente. La nueva versión 1.7.1 introduce soporte para la versión 4.0. Ahora puede implementar/importar y administrar MongoDB v4.0 con soporte para conexiones SSL.

Seleccione la opción "Implementar clúster de base de datos" y siga las instrucciones que aparecen.

Clúster de base de datos de implementación de ClusterControl

Al elegir MongoDB, debemos especificar Usuario, Clave o Contraseña y puerto para conectarnos por SSH a nuestros servidores. También necesitamos el nombre de nuestro nuevo clúster y si queremos que ClusterControl instale el software y las configuraciones correspondientes por nosotros.

Después de configurar la información de acceso SSH, debemos ingresar los datos para acceder a nuestra base de datos. También podemos especificar qué repositorio usar. La configuración del repositorio es un aspecto importante para los clústeres y servidores de bases de datos. Puede tener tres tipos de repositorio al implementar un servidor/clúster de base de datos mediante ClusterControl:

  • Usar el repositorio del proveedor
    Aprovisione el software configurando y utilizando el repositorio de software preferido del proveedor de la base de datos. ClusterControl instalará la última versión de lo que proporciona el repositorio del proveedor de la base de datos.
  • No configurar repositorios de proveedores
    Aprovisione software utilizando el repositorio de software preexistente ya configurado en los nodos. El usuario debe configurar el repositorio de software manualmente en cada nodo de la base de datos y ClusterControl utilizará este repositorio para la implementación. Esto es bueno si los nodos de la base de datos se ejecutan sin conexión a Internet.
  • Usar repositorios duplicados (crear un nuevo repositorio)
    Cree y refleje el repositorio del proveedor de la base de datos actual y luego implemente usando el repositorio duplicado local. Esto le permite "congelar" las versiones actuales de los paquetes de software.

En el siguiente paso, debemos agregar nuestros servidores al clúster que vamos a crear. Al agregar nuestros servidores, podemos ingresar IP o nombre de host. Para esto último, debemos tener un servidor DNS o haber agregado nuestros servidores MongoDB al archivo de resolución local (/etc/hosts) de nuestro ClusterControl, para que resuelva el nombre correspondiente que desea agregar. Para nuestro ejemplo, implementaremos un ReplicaSet con tres servidores, uno primario y dos secundarios. Es posible implementar solo 2 nodos MongoDB (sin árbitro). La advertencia de este enfoque es que no hay una conmutación por error automática, ya que una configuración de 2 nodos es vulnerable al cerebro dividido. Si el nodo principal deja de funcionar, se requiere una conmutación por error manual para que el otro servidor sea el principal. La conmutación por error automática funciona bien con 3 nodos y más. Se recomienda que un conjunto de réplicas tenga un número impar de miembros con derecho a voto. La tolerancia a fallas para un conjunto de réplicas es la cantidad de miembros que pueden dejar de estar disponibles y aún así dejar suficientes miembros en el conjunto para elegir un principal. La tolerancia a fallos para tres miembros es uno, para cinco es dos, etc.

En la misma página puede elegir entre diferentes versiones de MongoDB:

ClusteControl Implementar MongoDB versión 4.0

Cuando todo esté listo, presione el botón de despliegue. Puedes monitorear el estado de la creación de nuestro nuevo clúster desde el monitor de actividad de ClusterControl. Una vez finalizada la tarea, podemos ver nuestro clúster en la pantalla principal de ClusterControl y en la vista de topología.

Vista de topología de ClusterControl

Como podemos ver en la imagen, una vez que tenemos nuestro clúster creado, podemos realizar varias tareas en él, como convertir el conjunto de réplicas en fragmento o agregar nodos al clúster.

Escalado de control de clúster

Importar un nuevo clúster

También tenemos la opción de administrar un clúster existente importándolo a ClusterControl. Dicho entorno puede ser creado por ClusterControl u otros métodos como la instalación de la ventana acoplable.

ClusterControl importar MongoDB

En primer lugar, debemos introducir las credenciales de acceso SSH a nuestros servidores. Luego ingresamos las credenciales de acceso a nuestra base de datos, el directorio de datos del servidor y la versión. Añadimos los nodos por IP o hostname, de la misma forma que cuando desplegamos, y pulsamos en Importar. Una vez finalizada la tarea, estamos listos para administrar nuestro clúster desde ClusterControl.

MongoDB a escala

Una de las piedras angulares de MongoDB es que está diseñado teniendo en cuenta la alta disponibilidad y la escalabilidad. El escalado se puede hacer verticalmente agregando más recursos al servidor u horizontalmente con más nodos. El escalado horizontal es en lo que MongoDB es bueno, y no es mucho más que distribuir la carga de trabajo a varias máquinas. En efecto, estamos haciendo uso de múltiples cajas de hardware básico de bajo costo, en lugar de actualizar a un servidor de alto rendimiento más costoso. MongoDB ofrece escalado tanto de lectura como de escritura, y descubriremos las diferencias entre estas dos estrategias para usted. La elección de escalado de lectura o escritura depende de la carga de trabajo de su aplicación:si su aplicación tiende a leer más de lo que escribe datos, probablemente querrá utilizar las capacidades de escalado de lectura de MongoDB.

Con ClusterControl agregar más servidores al clúster es un paso fácil. Puede hacerlo desde la GUI o la CLI. Para usuarios más avanzados, puede usar ClusterControl Developer Studio y escribir una condición de base de recursos para expandir su clúster horizontalmente.

MongoDB ReplicaSet

fragmentación

La solución de fragmentación de MongoDB es similar a los marcos de fragmentación existentes para otras soluciones de bases de datos importantes. Hace uso de una solución de búsqueda típica, donde la fragmentación se define en una clave de fragmento y los rangos se almacenan dentro de una base de datos de configuración. MongoDB funciona con tres componentes para encontrar el fragmento correcto para sus datos. Un entorno MongoDB fragmentado típico se ve así:

fragmentación de MongoDB

El primer componente utilizado es el enrutador de fragmentos llamado mongos. Todas las operaciones de lectura y escritura deben enviarse al enrutador de fragmentos, lo que hace que todos los fragmentos actúen como una única base de datos para la aplicación cliente. El enrutador de fragmentos enrutará las consultas a los fragmentos correspondientes consultando el servidor de configuración.

ClusterControl Convertir a Shard

La gestión de fragmentos es realmente fácil en MongoDB. Puede agregar y eliminar fragmentos en línea y el enrutador de fragmentos MongoDB se ajustará automáticamente a lo que le indique. Si desea obtener más información sobre la mejor manera de administrar fragmentos, lea nuestra publicación de blog sobre cómo administrar fragmentos de MongoDB.

Proteger MongoDB

Recursos relacionados ClusterControl para MongoDB Automatización y gestión de MongoDB con ClusterControl

MongoDB viene con muy poca seguridad lista para usar:por ejemplo, la autenticación está deshabilitada de forma predeterminada. En otras palabras:por defecto, cualquiera tiene derechos de root sobre cualquier base de datos. Uno de los cambios que aplicó MongoDB para mitigar los riesgos fue cambiar su enlace predeterminado a 127.0.0.1. Esto evita que se vincule a la dirección IP externa, pero, naturalmente, esto será revertido por la mayoría de las personas que lo instalen. ClusterControl elimina los errores humanos y brinda acceso a un conjunto de funciones de seguridad para proteger automáticamente sus bases de datos contra ataques y otras amenazas. Anteriormente publicamos un breve video con consejos de seguridad.

La nueva versión de ClusterControl ofrece soporte SSL para conexiones MongoDB. Habilitar SSL agrega otro nivel de seguridad para la comunicación entre las aplicaciones (incluido ClusterControl) y la base de datos. Los clientes de MongoDB abren conexiones cifradas a los servidores de la base de datos y verifican la identidad de esos servidores antes de transferir cualquier información confidencial.

Para habilitar la conexión SSL, debe usar el cliente s9s más reciente. Puedes instalarlo con

wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh

O siga otros posibles métodos de instalación descritos aquí.

Una vez que haya instalado las herramientas s9s (versión mínima 1.7-93.1), puede usar el indicador --enable-ssl para habilitar la conexión SSL.

Ejemplo a continuación:

[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 &&  runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.

ClusterControl ejecutará todos los pasos necesarios, incluida la creación de la certificación en todos los nodos del clúster. Dichos certificados se pueden mantener más adelante en la pestaña Administración de claves.

Gestión de claves de ClusterControl

Monitoreo

Cuando trabaje con sistemas de bases de datos, debería poder monitorearlos. Eso le permitirá identificar tendencias, planificar actualizaciones o mejoras o reaccionar de manera efectiva ante cualquier problema o error que pueda surgir.

Descripción general de ClusterControl MongoDB

El nuevo ClusterControl 1.7.1 agrega monitoreo de alta resolución basado en MongoDB. Utiliza Prometheus como almacén de datos con el lenguaje de consulta PromQL. La lista de paneles incluye MongoDB Server, MongoDB ReplicaSet, System Overview y Cluster Overview Dashboards. ClusterControl instala los agentes de Prometheus, configura las métricas y mantiene el acceso a la configuración de los exportadores de Prometheus a través de su GUI, para que pueda administrar mejor la configuración de los parámetros, como indicadores de recopiladores para los exportadores (Prometheus). Describimos en detalle lo que se puede monitorear recientemente en el artículo Cómo monitorear MongoDB con Prometheus y ClusterControl.

Paneles de control ClusterControl MongoDB SCUMM

Alerta

Como operador de una base de datos, debemos estar informados cada vez que ocurra algo crítico en nuestra base de datos. Los tres métodos principales en ClusterControl para recibir una alerta incluyen:

  • notificaciones por correo electrónico
  • integraciones
  • asesores

Puede configurar las notificaciones por correo electrónico a nivel de usuario. Vaya a Configuración> Notificaciones por correo electrónico. Donde se puede elegir entre criticidad y tipo de alerta a enviar.

El siguiente método es utilizar los servicios de integración. Esto es para pasar la categoría específica de eventos al otro servicio, como boletos de ServiceNow, Slack, PagerDuty, etc., para que pueda crear métodos de notificación avanzados e integraciones dentro de su organización.

Servicios de integración de ClusterControl

El último consiste en incluir análisis de métricas sofisticados en la sección Asesor, donde puede crear comprobaciones y disparadores inteligentes. Un ejemplo aquí podría ser una predicción del uso del espacio en disco o un escalado de clúster al agregar nodos cuando la carga de trabajo alcanza el nivel preestablecido.

Asesores de control de clúster para MongoDB

Copia de seguridad y recuperación

Ahora que tiene su réplica de MongoDB configurada y funcionando, y tiene su monitoreo en su lugar, es hora del siguiente paso:asegúrese de tener una copia de seguridad de sus datos.

ClusterControl Crear política de copia de seguridad

ClusterControl proporciona una interfaz para la gestión de copias de seguridad de MongoDB con soporte para programación e informes creativos. Le ofrece dos opciones para los métodos de copia de seguridad.

  • Mongodump
  • Copia de seguridad coherente con Mongodb

Mongodump vuelca todos los datos en formato Binary JSON (BSON) en la ubicación especificada. Más tarde, Mongorestore puede usar los archivos BSON para restaurar su base de datos. La copia de seguridad coherente de ClusterControl MongoDB incluye las transacciones del registro de operaciones que se estaban ejecutando mientras se realizaba la copia de seguridad.

ClusterControl Backup Encryption

Una buena estrategia de copia de seguridad es una parte fundamental de cualquier sistema de gestión de bases de datos. ClusterControl ofrece muchas opciones para copias de seguridad y recuperación/restauración.

Control de programación de copias de seguridad de ClusterControl

La retención de copias de seguridad de ClusterControl es configurable; puede optar por conservar su copia de seguridad durante cualquier período de tiempo o no eliminar nunca las copias de seguridad. El cifrado AES256 se emplea para proteger sus copias de seguridad contra elementos no autorizados. Para una recuperación rápida, las copias de seguridad se pueden restaurar directamente en el clúster de copia de seguridad:ClusterControl maneja el proceso de restauración completo desde el inicio hasta la recuperación del clúster, eliminando los pasos manuales propensos a errores del proceso.