Usar una base de datos externa

Esta pagina describe como configurar Cyberwatch para usar una base de datos externa en lugar de la base de datos en contenedor de la instancia Cyberwatch.

Requisitos de software

Cyberwatch soporta las siguientes bases de datos:

  • MariaDB 11.4 o 11.8
  • MySQL 8.X

    Recomendamos usar MariaDB 11.8, o, si usa MySQL, la version 8.4 LTS como mínimo.

Requisitos de hardware

Cyberwatch recomienda la siguiente configuración de hardware en el servidor que aloja la base de datos para asegurar el correcto funcionamiento de la aplicación:

  • 2 vCPU
  • 12 GB de RAM
  • 100 GB de espacio en disco

Casos de uso de una base de datos externa

Cyberwatch usa por defecto una base de datos MariaDB en contenedor.

El uso de una base de datos externalizada en lugar de contenedor se vuelve necesario en ciertos casos.

Cyberwatch requiere el uso de una base de datos externalizada para cualquier instancia que supervise 5000 o mas activos. El uso de una base externalizada también es posible para instancias mas pequenas, considerando las ventajas y limitaciones a continuación.

Ventajas del uso de una base externalizada

  • posibilidad de personalizar la configuración de la base
  • uso de un servidor dedicado, que permite asignar recursos con mayor precision
  • mejor rendimiento
  • mecanismos de replicacion y backups mas finamente configurables

Limitaciones del uso de una base externalizada

  • el uso de un servidor dedicado conlleva necesidades de infraestructura adicionales
  • el mantenimiento de la base de datos y del servidor dedicado no corresponde a Cyberwatch, aunque nuestros equipos están disponibles para aconsejarle en caso necesario

Creación de un usuario y una base externa dedicada

En el caso de usar un servidor de base de datos dedicado, es necesario crear una base otorgando todos los privilegios a un usuario dedicado. Por defecto, Cyberwatch usa una base de datos y un usuario llamados olympe.

Estas operaciones pueden realizarse ejecutando los siguientes comandos desde el servidor de base de datos:

CREATE DATABASE olympe;
CREATE USER 'olympe'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON olympe.* TO 'olympe'@'%';
FLUSH PRIVILEGES;

Al asignar los privilegios, es necesario reemplazar % por la dirección IP del servidor Cyberwatch, o su nombre de dominio, en el formato %.example.com, siempre que la resolución inversa sea funcional. En el caso de una arquitectura con varios nodos, esta operación debe repetirse para cada satélite, si la asignación de privilegios se realiza por dirección IP.

Configuración del socle Cyberwatch

Generación de un backup de la base en contenedor

En el caso de una migración de una base de datos en contenedor existente, se debe realizar un backup de la base de datos de la aplicación.

Para ello, use el comando:

sudo cyberwatch backup save

El dump generado esta disponible en el directorio /var/lib/cyberwatch/backups/ y permitirá restaurar la base de datos Cyberwatch.

Configurar los nodos Cyberwatch para usar la base de datos externa

El uso de una base de datos externalizada requiere configurar el nodo maestro Cyberwatch con la opción --no-db. En el caso de una instancia de un solo nodo, con el comando:

sudo cyberwatch configure --no-db

En el caso de una instancia multi-nodos, es necesario especificar todas las opciones de configuración. Configurar el nodo maestro con el siguiente comando:

sudo cyberwatch configure --no-db --master

Configurar luego los satelites con el comando siguiente:

sudo cyberwatch configure --no-db --satellite

La opción --no-db permite indicar a Cyberwatch el uso de una base de datos externa y desactiva el uso de la base en contenedor.

En caso de que los archivos de configuración ya existan, el ejecutable cyberwatch solicitara al usuario si desea realizar cambios de configuración.

Responder afirmativamente a las solicitudes de cambios de configuración le permitirá configurar los certificados TLS así como una parte de las variables de conexión a la base de datos.

Generación de certificados

El ejecutable cyberwatch permite generar los certificados necesarios para implementar un cifrado TLS para la comunicación entre las instancias Cyberwatch y la base de datos dedicada.

Estos certificados permiten a las instancias Cyberwatch verificar que se conectan al servicio esperado, pero no permiten que estos servicios verifiquen la identidad de los clientes que se conectan. Una buena forma de endurecer en este caso la configuración de TLS unidireccional es limitar los privilegios de acceso a la base de datos, definiendo una lista exhaustiva de las fuentes de los clientes.

Por lo tanto, durante las solicitudes de información para la generación de certificados, debe indicar la dirección IP y el/los nombres DNS de los servicios a los que se conectaran las instancias.

Para la base de datos, los certificados utiles son los siguientes:

  • /etc/cyberwatch/certs/cbw-root-ca-cert.pem: certificado raiz usado para generar los certificados de los servicios. Permite a las instancias Cyberwatch verificar los certificados instalados en la base de datos y la base Redis
  • /etc/cyberwatch/certs/cbw-db-cert.pem: certificado para la base de datos
  • /etc/cyberwatch/certs/cbw-db-key.pem: clave privada para la base de datos

Estos tres archivos deben copiarse en el servidor de base de datos y declararse en el archivo de configuración de la base. Estos elementos se detallan mas abajo.

Agregar el certificado raiz a la aplicación cyberwatch

En el caso de implementar un par de claves firmado por una autoridad de certificacion externa, es necesario declararla como autoridad de confianza adicional en Cyberwatch. Para ello, basta con concatenar el certificado raiz de esa autoridad y el de Cyberwatch.

Docker-Swarm

En Docker Swarm, esta operación puede realizarse con el comando siguiente:

sudo cat camino_del_certificado_raiz_de_la_autoridad_externa.pem >> /etc/cyberwatch/cbw-root-ca-cert.pem

Kubernetes

En Kubernetes, esto pasa por crear un secreto dedicado con el comando siguiente, reemplazando YOUR_CA_FILE.pem por el nombre del archivo que contiene el certificado raiz:

kubectl -n cyberwatch create secret generic db-root-ca --from-file=db-root-ca.pem=YOUR_CA_FILE.pem

Luego el nombre del secreto generado debe indicarse en el archivo values.yml del chart helm:

database:
  external: true

  tls:
    mode: required
    secret: db-root-ca

Luego el chart debe desplegarse según el procedimiento indicado Actualizar la aplicación y el socle Cyberwatch en Kubernetes.

Adaptar la configuración de Cyberwatch a la base externa

A continuación, es necesario reemplazar la contraseña MYSQL_PASSWORD por la del usuario dedicado en el archivo /etc/cyberwatch/secrets.env.


Volver arriba

English Français Español