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

Cómo implementar MongoDB para alta disponibilidad

Introducción

MongoDB tiene un gran soporte para alta disponibilidad a través de ReplicaSets. Sin embargo, implementar un ReplicaSet no es suficiente para un sistema listo para producción. Esto último requiere un poco de planificación. La implementación es solo el paso inicial, luego debemos armar a los equipos operativos con monitoreo, alertas, seguridad, detección de fallas o anomalías, recuperación automática/conmutación por error, administración de copias de seguridad y otras herramientas para mantener el entorno en funcionamiento.

Requisitos

Antes de que pueda comenzar con su implementación de MongoDB con ClusterControl, se requieren algunos preparativos. Las plataformas admitidas son RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS y Debian 7.x/8.x. Los requisitos mínimos de recursos del sistema operativo son 2 GB de RAM, 2 CPU y 20 GB de espacio en disco que se ejecutan en x86. arquitectura. ClusterControl en sí puede ejecutarse en máquinas virtuales regulares o hosts barebone que se ejecutan en las instalaciones, detrás de un firewall o en máquinas virtuales en la nube.

Además, ClusterControl requiere que se abran o habiliten los puertos utilizados por los siguientes servicios:
ICMP (respuesta/solicitud de eco)
SSH (el valor predeterminado es 22)
HTTP (el valor predeterminado es 80)
HTTPS (el valor predeterminado es 443)
MySQL (el valor predeterminado es 3306) (base de datos interna)
CMON RPC (el valor predeterminado es 9500)
CMON RPC TLS (el valor predeterminado es 9501)
Eventos de CMON (el valor predeterminado es 9510)
CMON SSH (el valor predeterminado es 9511)
CMON Cloud (el valor predeterminado es 9518)

Puerto de transmisión para copias de seguridad a través de netcat (el valor predeterminado es 9999)

La forma más fácil y conveniente de instalar ClusterControl es usar el script de instalación proporcionado por Variousnines. Simplemente descargue el script y ejecútelo como usuario root o usuario con permiso sudo root. Si necesita un enfoque más manual, por ejemplo, si sus servidores no tienen acceso a Internet, puede seguir las instrucciones proporcionadas en la documentación de ClusterControl.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Siga el asistente de instalación donde lo guiarán para configurar un servidor de base de datos interno de ClusterControl y sus credenciales, la contraseña común para el uso de ClusterControl, etc. Debería obtener la siguiente línea una vez que se haya completado la instalación:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

El siguiente paso es generar una clave SSH que usaremos para configurar el SSH sin contraseña más adelante. Si tiene un par de claves que le gustaría usar, puede omitir la creación de una nueva.

Puede usar cualquier usuario en el sistema, pero debe tener la capacidad de realizar operaciones de superusuario (sudoer). En este ejemplo, elegimos al usuario root:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Configure SSH sin contraseña para todos los nodos que le gustaría monitorear/administrar a través de ClusterControl. En este caso, configuraremos esto en todos los nodos de la pila (incluido el propio nodo ClusterControl). En el nodo ClusterControl, ejecute los siguientes comandos para copiar claves ssh y especifique la contraseña raíz cuando se le solicite:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Luego puede verificar si funciona ejecutando el siguiente comando en el nodo ClusterControl:

$ ssh [email protected] "ls /root"

Asegúrese de poder ver el resultado del comando anterior sin necesidad de ingresar una contraseña.
Cuando se complete la instalación, debería poder iniciar sesión en la interfaz web a través de

https://<your_vm_name>/clustercontrol/#

Después del primer inicio de sesión, verá una ventana con opciones para comenzar con su primera implementación o importar un clúster existente.

ClusterControl Implementar e importar un clúster existente

Configurar repositorios

Antes de comenzar a implementar, echemos un vistazo al sistema de administración de paquetes. El proceso de implementación de ClusterControl es compatible con todo el proceso de instalación del clúster. Eso incluye los ajustes del sistema operativo y la descarga e instalación del paquete. Si los nodos de su base de datos tienen acceso limitado a Internet y no puede descargar paquetes directamente desde el nodo, puede crear un repositorio de paquetes directamente en el host de ClusterControl.

Repositorio de paquetes de ClusterControl

Hay tres formas de mantener los paquetes de MongoDB en ClusterControl.

Usar repositorios de proveedores

Instale el software configurando y utilizando el repositorio de software favorito del proveedor de la base de datos. ClusterControl instalará la última versión de lo que está almacenado en el repositorio de MongoDB.

No configurar repositorios de proveedores

Instale el software utilizando el repositorio de software preexistente ya configurado en el sistema operativo. 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 del paquete. Esto es bueno si los nodos de la base de datos se ejecutan sin conexión a Internet y su empresa tiene un sistema de paquetes externo con paquetes MongoDB implementados.

Usar repositorios reflejados (Crear nuevo repositorio)

Cree y refleje el repositorio del proveedor actual y luego implemente usando el repositorio local reflejado. También le permite "congelar" las versiones recientes de los paquetes de software utilizados para aprovisionar un clúster de base de datos para un proveedor específico (es decir, usar solo paquetes de Percona).

ClusterControl automatiza la creación de repositorios de paquetes internos

Implementar conjunto de réplicas

ClusterControl es compatible con MongoDB/Percona Server para MongoDB 3.x ReplicaSet. Para comenzar con la implementación del nuevo clúster, vaya a la opción de implementación en la esquina superior derecha. Cuando instale los nodos de su base de datos, use siempre máquinas virtuales limpias y mínimas. Las dependencias de paquetes existentes pueden eliminarse si es necesario. Se instalarán nuevos paquetes y los paquetes existentes se pueden eliminar al aprovisionar el nodo con el software necesario.

El primer paso del proceso de implementación es proporcionar las credenciales ssh adecuadas para los hosts en los que está implementando su clúster. Como ClusterControl usa ssh sin contraseña para conectarse y configurar sus hosts, se requiere una clave ssh.

ClusterControl implementa el asistente de clúster de MongoDB

Es recomendable utilizar una cuenta de usuario sin privilegios para iniciar sesión en los hosts, por lo que se puede proporcionar una contraseña sudo para facilitar las tareas administrativas. Si la cuenta de usuario no solicita una contraseña sudo, no es necesaria. También tiene la opción de deshabilitar iptables y AppArmor o SELinux en el host para evitar el problema con la implementación inicial.

En la siguiente pantalla, puede optar por instalar los binarios de MongoDB desde MongoDB Inc o desde Percona. Aquí también, debe especificar su cuenta de usuario administrativo y contraseña de MongoDB, ya que la seguridad a nivel de usuario es obligatoria.

Asistente de implementación de MongoDB de ClusterControl, ReplicaSet

En esta pantalla, también puede ver qué plantilla de configuración se está utilizando. ClusterControl utiliza plantillas de archivos de configuración para garantizar implementaciones repetibles. Las plantillas se almacenan en el host de ClusterControl y se pueden editar directamente mediante la línea de comandos o a través de la interfaz de usuario de ClusterControl. También puede optar por utilizar los repositorios de proveedores, si lo desea, o elegir su propio repositorio. Además, puede crear automáticamente un nuevo repositorio en el host de ClusterControl. Esto permite congelar la versión de MongoDB que ClusterControl implementará en la versión actual. Una vez que haya realizado la configuración adecuada aquí, haga clic en Implementar para continuar.

Implementar fragmentación

ClusterControl también puede implementar clústeres fragmentados. Se admiten dos métodos para hacerlo. Primero, puede convertir un MongoDB ReplicaSet existente en un clúster fragmentado, como se muestra a continuación.

ClusterControl Implementar fragmentos de MongoDB

Cuando se hace clic en "Convertir en fragmento", se le solicita que agregue al menos un servidor de configuración (para entornos de producción, debe agregar tres) y un enrutador, también conocido como proceso "mongos". La etapa final es elegir sus plantillas de configuración de MongoDB para el servidor de configuración y el enrutador, así como su directorio de datos. Finalmente, haga clic en implementar. Cuando esté completo, aparecerá en la vista de clústeres de su base de datos. Mostrará la salud de su fragmento en lugar de instancias individuales. También es posible agregar fragmentos adicionales según sea necesario.

Convertir en fragmento

Si tiene problemas de escalado, puede escalar este ReplicaSet agregando más elementos secundarios o escalando mediante fragmentación. Puede convertir un ReplicaSet existente en un clúster fragmentado, pero este es un proceso largo en el que podría cometer errores fácilmente. En ClusterControl, hemos automatizado este proceso, donde agregamos automáticamente los servidores de configuración, fragmentamos los enrutadores y habilitamos la fragmentación.

Para convertir un ReplicaSet en un clúster fragmentado, simplemente puede activarlo a través del menú desplegable de acciones:

ClusterControl Convertir a fragmento

Política de copia de seguridad programada

Es esencial mantener la copia de seguridad de su base de datos y que su base de datos tenga un buen y fácil proceso de copia de seguridad. ClusterControl es compatible con copias de seguridad y restauraciones totalmente coherentes de su conjunto de réplicas o clúster fragmentado de MongoDB.

Las copias de seguridad se pueden realizar manualmente o se pueden programar. Se admite la centralización de las copias de seguridad, con copias de seguridad almacenadas en el sistema de archivos del controlador, incluidos los directorios montados en la red o cargadas en un proveedor de nube preconfigurado; los proveedores compatibles actualmente son Google Cloud Platform, Amazon Web Services y Microsoft Azure. Esto le permite aprovechar al máximo la funcionalidad avanzada de administración del ciclo de vida proporcionada por Amazon y Google para características tales como cronogramas de retención personalizados, archivado a largo plazo y cifrado en reposo, entre otros.

La retención de copias de seguridad es configurable; puede optar por conservar su copia de seguridad durante cualquier período de tiempo o no eliminar nunca las copias de seguridad. Se emplea el cifrado AES256 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.

Habilitar informes operativos

Con ClusterControl puede programar informes entre entornos como "Informe diario del sistema", "Informe de actualización de paquetes", "Informe de cambio de esquema", así como "Copias de seguridad" y "Disponibilidad". Estos informes lo ayudarán a mantener su entorno seguro y operativo. También verá recomendaciones sobre cómo corregir las lagunas. Los informes en formato HTML se pueden enviar por correo electrónico a SysOps, DevOps o incluso a los administradores que deseen recibir actualizaciones periódicas sobre el estado de un sistema determinado.

Asesores de rendimiento

Los asesores brindan consejos específicos sobre cómo abordar problemas en áreas como el rendimiento, la seguridad, la administración de registros, la configuración, el espacio de almacenamiento y otros. ClusterControl viene con una lista de asesores predefinidos que están destinados a rastrear el estado de diferentes métricas y el estado de sus bases de datos. Cuando es necesario, se crea una alerta. Se pueden ampliar con scripts manuales. Para obtener más información, siga nuestro blog reciente sobre "Cómo automatizar el análisis de la carga de trabajo de la base de datos con los asesores de rendimiento de ClusterControl".

Entre varios asesores de rendimiento del sistema operativo, puede encontrar los siguientes relacionados con MongoDB.

MongoDB asesores de fragmentación
conexiones utilizadas
verificación de replicación
ventana de replicación

Implementar en la nube

A partir de la versión 1.6, ClusterControl le permite crear un MongoDB 3.4 ReplicaSets en la nube. Las plataformas en la nube admitidas son Amazon AWS, Google Cloud y Microsoft Azure.

El asistente lo guiará a través de la creación de máquinas virtuales y la configuración de MongoDB, todo en un solo lugar.

ClusterControl implementa MongoDB ReplicaSet en la nube

El proceso le permite elegir los parámetros del sistema operativo, incluida la configuración de la red. No es necesario copiar las claves SSH, se agregarán automáticamente. Una vez finalizado el trabajo, verá su clúster en el panel principal. A partir de ahora, puede administrar su clúster MongoDB como cualquier otro en ClusterControl.

ClusterControl implementar MongoDb RelicaSet en la nube, configuración de red de VM

Consejos de seguridad

En este punto, su nuevo clúster debería estar en funcionamiento. Antes de permitir que los usuarios y los procesos de la aplicación accedan a los datos, debe definir la configuración de seguridad del clúster. En nuestros blogs anteriores, planteamos inquietudes sobre la configuración de seguridad predeterminada. Estas son algunas de las cosas principales que debe tener en cuenta antes de pasar su nuevo clúster a otros equipos.

Cambiar puertos predeterminados - De forma predeterminada, MongoDB se vinculará a puertos estándar:27017 para MongoDB ReplicaSets o Shard Routers, 27018 para shards y 27019 para servidores de configuración. No se recomienda el uso de puertos estándar, ya que simplifica la posibilidad de un ataque de piratas informáticos.

Habilitar autenticación - sin autenticación, los usuarios pueden iniciar sesión sin contraseña. Habilite la autenticación en todos sus entornos (desarrollo, certificación y producción).

security:
    Authentication: on

Use contraseñas seguras - si es necesario, utilice un generador de contraseñas para generar contraseñas complejas.

Agregar archivo de clave de replicación - con el archivo de claves habilitado, la autenticación del flujo de replicación se cifrará.

Cifre sus copias de seguridad - ClusterControl le permite cifrar sus copias de seguridad.

Para leer más, tenemos un blog sobre cómo asegurar MongoDB.

Habilitar la recuperación automática del clúster

La última característica, pero no menos importante, para habilitar sería la recuperación automática de nodos y clústeres.

ClusterControl puede trabajar para usted como un miembro extendido del equipo de DBA las 24 horas del día, los 7 días de la semana. Hay dos funciones principales aquí. Recuperación automática de nodos y recuperación automática de clústeres.

Cuando la recuperación automática de nodos está habilitada, ClusterControl reaccionará a los problemas de los nodos y, en caso de fallas, intentará recuperar los nodos individuales. Esto es para abordar cosas como un proceso que se ejecuta en la memoria o un servicio que requiere un inicio después de un corte de energía, lo que sea que esté causando un problema con el servicio caído.

La opción de recuperación de clústeres es aún más sofisticada. Realizará un cambio si es necesario.

En ese caso, la reversión de los cambios que no se replican en los esclavos se colocará en una carpeta de "retroceso", por lo que depende del administrador restaurarlo.

Para configurar la recuperación automática de nodos y clústeres, solo necesita habilitarlos en el panel principal.