Guía de uso de Bases de Datos como Servicio

Rate this post

Introducción

Con Arsys Bases de Datos como Servicio (DBaaS) puedes configurar y gestionar rápidamente una base de datos sin necesidad de preocuparte por el hardware físico, instalar software o configurar y gestionar su mantenimiento. Con una conexión a Internet asegurada, todos los trabajadores y programas siempre tienen acceso a la información relevante. 

En esta guía intentaremos mostrar cómo dar de alta una base de datos gestionada de nuestro servicio DBaaS, en sus versiones PostgreSQL y MongoDB, desde nuestra interfaz gráfica Data Center Designer y cómo configurar un acceso público a la misma.

1. Requisitos previos

Lo primero es acceder al Data Center Designer (DCD) en la url https://dcd.arsys.es/latest/ con nuestras credenciales.

Data Center Designer
Dashboard del Data Center Designer

Previo a la creación de nuestra base de datos como servicio, deberemos crear, si no disponemos ya, de un servidor con conexión a internet bidireccional y activar una segunda tarjeta de red (NIC), configurando en esta una IP privada en el mismo rango de IP que posteriormente configuraremos en nuestro cluster de base de datos.

 Para ello nos dirigimos al menú superior y crearemos un Data Center en la Región  que deseemos:

Crear Data Center

Posteriormente, desde la paleta lateral, arrastramos un servidor al dashboard, lo conectaremos al Ítem de Internet y añadiremos un disco duro, donde instalaremos el Sistema Operativo

Añadir disco duro

Al conectarlo a internet, se activa por defecto al NIC0. Nos situamos sobre la pestaña Network, y pulsamos añadir una segunda NIC (+ ADD NIC), que será nuestro enlace privado con la base de datos. Realizaremos los ajustes necesarios en este punto.

Ajustes de Network

Una vez creado el sistema, pulsaremos el icono PROVISIONING CHANGES sito en la parte interior derecha, y se lanzará un proceso de creación del Data Center.

2. Alta de una base de datos

La gestión de nuestras bases de datos en el servicio de DBaaS, incluyendo nuevas altas,  se gestiona desde el menú de Manager Resources en la opción Database Manager.

Database Manager
Databases

En la parte superior se puede ver la suma de recursos que tenemos asignados a todos nuestros clústers de base de datos. El número disponible de CPUs, RAM, almacenamiento y clústeres de bases de datos se añade a las limitaciones por defecto para un contrato VDC pero también tienen una limitación propia del producto:

  • 10 clusters de BBDD Postgres
  • 5 clusters de BBDD MongoDB
  • 16 núcleos de CPU
  • 32 GB DE RAM
  • 1500 GB de espacio en disco

Estos límites pueden ser ampliados mediante solicitud al equipo de Soporte. El límite máximo de recursos está marcado por Compute Engine:

  • de 27 hasta 51 cores, dependiendo de la localización
  • 230 GB de RAM
  • 4 TB de espacio en disco HDD/SSD

1.1. Alta de clúster PostgreSQL

Para dar de alta un nuevo clúster de PostgreSQL utilizaremos el botón +Add

Añadir clúster de PostgreSQL
Campos obligatorios

Los campos marcados * son obligatorios, a continuación describimos las principales opciones de configuración:

  • Display Name (obligatorio): Nombre descriptivo para nuestra base de datos
  • Create from Backup (opcional): A través de esta opción se puede crear la base de datos a partir de un backup realizado de otra de nuestras bases de datos gestionadas. 
  • Location (obligatorio): Ubicación donde se desea crear el clúster.

Nota: debe ser el mismo donde tengamos creado el VDC al que se va a conectar.

  • Backup Location: Toma un valor por defecto para la ubicación de los backups, pero se permite elegir distintas localizaciones.  
  • Cluster to Datacenter Connection (obligatorio): nuestra base de datos tiene que conectarse a una red privada de alguno de nuestros VDC para ello deberemos elegir el VDC al que queremos conectarnos y la VLAN. En el campo Private IP / Subnet indicaremos los datos de la conexión.

Ejemplo:

Cluster to Datacenter Connection

Tras añadir la conexión es necesario hacer click en el botón de Add connection.

  • Postgres Version (obligatorio): Actualmente DBaaS soporta PostgreSQL 11, 12, 13 y 14.
  • Instances (obligatorio): Número de instancias de nuestro clúster. Podemos tener varias bases de datos pero sólo una de ellas está activa.
    • Clúster de un solo nodo: Un clúster de un solo nodo está formado solamente por el nodo maestro. Este nodo acepta las conexiones de los usuarios y realiza las operaciones de lectura y escritura. 
    • Clúster de varios nodos: Además del nodo maestro, este clúster contiene nodos en warm standby (no sirven peticiones de lectura) que pueden tomar el rol de maestro si éste falla. Los nodos están repartidos por zonas de disponibilidad. 
  • Synchronization Mode: Valor por defecto asíncrono, afecta al modo de replicación:
    • Asíncrono: Se permite que el clúster pierda algunas transacciones comprometidas para garantizar la disponibilidad.
    • Síncrono: Permite que el maestro se ejecute de forma autónoma. No se perderá ninguna transacción durante el failover.
    • Síncrono estricto: Igual que el modo síncrono con el añadido de que requiere que haya 2 nodos en funcionamiento.
Synchronization Mode
  • CPU Cores: número de cores en saltos de 1 que queremos asignar como recursos a cada nodo de nuestro clúster de BBDD. 
  • RAM Size (GB): RAM en saltos de 1 que queremos asignar como recursos a cada nodo de nuestro clúster de BBDD. 
  • Storage Type: HDD, SSD Estándar y SSD Premium
  • Storage Size (GB): Límite máximo de almacenamiento es 1500GB. 

Nota: Si hemos configurado varias instancias, opción recomendable para tener “Alta disponibilidad”, cada una de las instancias de nuestro clúster se crea con el número de recursos seleccionados.

Database User Credentials
  • Database User Credentials: Usuario y contraseña para nuestro acceso a la base de datos.
  • Maintenance Window: Venta de 4 horas de mantenimiento para la actualización de la plataforma. 
    • Tratándose de un servicio gestionado Arsys se encarga de actualizar y parchear los clúster de base de datos para alcanzar altos estándares de funcionalidad y seguridad. Esto incluye parches menores para PostgreSQL, así como parches para el sistema operativo subyacente. Siempre se intenta que estas actualizaciones sean imperceptibles para el usuario, sin embargo, ocasionalmente puede ser necesario reiniciar las instancia de PostgreSQL para permitir que los cambios tengan efecto. Estas interrupciones sólo se producirán durante la ventana de mantenimiento de la base de datos, que es una ventana semanal de cuatro horas.
    • Cuando un clúster sólo contiene una instancia, puede experimentar un breve tiempo de inactividad durante esta ventana de mantenimiento (máx. 4 horas), mientras que la instancia de base de datos se actualiza. En un clúster replicado, actualizamos primero las bases de datos en espera y luego se realiza una conmutación para cambiar el nodo maestro provocando una mínima desconexión (segundos).

Una vez introducidos los datos haremos click en el botón de Save y se lanzará la creación de nuestra base de datos. 

Maintenance Window

Podemos consultar su estado en la lista de nuestros clusters de Postgres:

Lista de clústers

1.2. Alta de clúster MongoDB

Para dar de alta un nuevo clúster de MongoDB utilizaremos el botón +Add sobre el marco de MongoDB Clusters:

Alta de clúster MongoDB
Crear clúster MongoDB

Los campos marcados * son obligatorios, a continuación describimos las principales opciones de configuración:

  • Display Name (obligatorio): Nombre descriptivo para nuestra base de datos
  • Location (obligatorio): Ubicación donde se desea crear el clúster.

Nota: debe ser el mismo donde tengamos creado el VDC al que se va a conectar.

  • Edition: Edición sobre la que deseamos crear el cluster. Elegiremos Playground si queremos probar el producto y Business o Enterprise si queremos una bbdd MongoDB con todas sus funcionalidades.
Edición Clúster
  • Template: En función de la edición elegida se nos ofrecerán diferentes plantillas (CPU/RAM/Disco) para las instancias de nuestro clúster:
Template Clúster

DBaas MongoDB funciona en pago por uso según la plantilla seleccionada. 

  • Instances: Número de instancias de nuestro clúster. Por defecto en clústeres multinodo se trabaja con un nodo maestro y varias réplicas que toman el rol de maestros en caso de problemas con el nodo principal, mantenimientos, etc…
    Según la plantilla y número de instancias seleccionadas se nos ofrece una estimación de costes de nuestro clústers si siempre permanece encendido:
Número de instancias del clúster
  • Cluster to Datacenter Connection (obligatorio): nuestra base de datos tiene que conectarse a una red privada de alguno de nuestros VDC para ello deberemos elegir el VDC al que queremos conectarnos y la VLAN. En el campo Private IP / Subnet indicaremos los datos de la conexión.

Ejemplo:

Cluster to Datacenter Connection

Tras añadir la conexión es necesario hacer click en el botón de Add connection.

  • MongoDB Version (obligatorio): Soportamos las versiones 5.0 y 6.0.
  • Maintenance Window: Venta de 4 horas de mantenimiento para la actualización de la plataforma. 
    • Tratándose de un servicio gestionado Arsys se encarga de actualizar y parchear los clúster de base de datos para alcanzar altos estándares de funcionalidad y seguridad. Esto incluye parches menores para MongoDB, así como parches para el sistema operativo subyacente. Siempre se intenta que estas actualizaciones sean imperceptibles para el usuario, sin embargo, ocasionalmente puede ser necesario reiniciar las instancia de MongoDB para permitir que los cambios tengan efecto. Estas interrupciones sólo se producirán durante la ventana de mantenimiento de la base de datos, que es una ventana semanal de cuatro horas.
    • Cuando un clúster sólo contiene una instancia, puede experimentar un breve tiempo de inactividad durante esta ventana de mantenimiento (máx. 4 horas), mientras que la instancia de base de datos se actualiza. En un clúster replicado, actualizamos primero las bases de datos en espera y luego se realiza una conmutación para cambiar el nodo maestro provocando una mínima desconexión (segundos).

Una vez introducidos los datos haremos click en el botón de Save y se lanzará la creación de nuestra base de datos. 

Maintenance Window

Podemos consultar su estado en la lista de nuestros clusters de MongoDB:

Lista de clústers

1.2.1. Gestión de usuarios en MongoDB

Una vez ha finalizado la creación de nuestra BBDD tendremos acceso a una nueva sección en la configuración para poder crear usuarios y roles en la misma. Además se nos ofrecerán los datos de conexión para conectar a nuestra base de datos: UUID, cadena de conexión, etc…

En la sección de user management:

Gestión de usuarios en MongoDB

Podremos crear usuarios para acceder a  nuestra base de datos con diferentes roles de acceso:

Diferentes roles de acceso

3. Configuración servidor de acceso

Prerrequisitos: 

  • Crear un servidor jump host con dos interfaces: una pública y otra con acceso a la LAN de la base de datos (e.g. LAN 2 / 192.168.1.40/24) (Como se describe en el apartado Requisitos previos)
  • Crear una base de datos gestionada y asignarle una LAN y una IP (e.g. LAN 2 / 192.168.1.100/24)

Para configurar un servidor y acceder a la base de datos se necesario configurar la red de acceso en nuestro servidor e instalar el paquete de PostgreSQL:

  1.  Instalar net tools

apt install net-tools

  1. Realizamos un ifconfig para ver la interfaz disponible. En este caso es la ens7
ifconfig
  1. Editamos el fichero netplan para configurar la nueva interfaz:

nano /etc/netplan/50-cloud-init.yaml

Edición fichero
  1. Aplicamos el Netplan

sudo netplan apply

Comprobamos con un ifconfig que se ha aplicado la configuración

Aplicar Netplan
  1. Podemos comprobar la conexión a la base de datos con un ping
Comprobar conexión
  1. Acceso a PosgreSQL
  1. Para conectar a la BBDD PostgreSQL:
  2. Instalamos el agente de postgre

apt install postgresql-client-common

apt install postgresql-client

  1. Nos conectamos con el comando:  psql -h 192.168.1.100 -d postgres -U &usuario
  2. Acceso a MongoDB
  1. Para conectar a la BBDD MongoDB instalaremos mongo shell para acceder por comandos a nuestra BBDD:
  1. Descargamos mongoshell https://www.mongodb.com/try/download/shell, en nuestro caso lo haremos para nuestra distribución de ubuntu. Sobre nuestros  equipos Windows, o directamente al servidor Linux
  2. Subiremos el fichero a nuestro servidor con Winscp o similar, realizando un wget url_archivo

ejemplo: wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.6.1_amd64.deb?_ga=2.139738166.447955232.1671455175-2044635492.1667391034

Nota: para obtener el enlace, clicamos con el botón derecho del ratón sobre el link de Download y copiaremos el enlace

Copiar enlace
  1. Instalaremos el paquete con el comando: dpkg – i nombre_paquete

ejemplo: dpkg -i mongodb-mongosh_1.6.1_amd64.deb

  1. Ya podemos acceder a nuestra base de datos con mongoshell, utilizando la string de conexión:
String de conexión
Base de datos Mongoshell

4. Configuración Interfaz Gráfica

  1. PostgreSQL (PgAdmin)

Para montar un acceso remoto a la base de datos a través de una interfaz gráfica, se puede hacer desde nuestro servidor de acceso, instalando pgAdmin. 

En este enlace explica como instalarlo en Ubuntu 20.04: https://computingforgeeks.com/how-to-install-pgadmin-4-on-ubuntu/

  1. Añadimos el el repositorio de pgAdmin4 en Ubuntu
    curl -fsSL https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg –dearmor -o /etc/apt/trusted.gpg.d/pgadmin.gpg

sudo sh -c ‘echo «deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main» > /etc/apt/sources.list.d/pgadmin4.list’

  1. Instalamos el paquete de pgAdmin 4

sudo apt update

sudo apt install pgadmin4

Ante la pregunta de “Do you want to continue?” Presionamos  y para continuar la instalación.

  1. Tras la instalación el servicio de Apache debería haber arrancado. Podemos revisarlo con systemctl status apache2
systemctl status apache2
  1. Configuramos el servidor web de Apache para pgAdmin4
    1. Iniciamos la configuración del servidor Apache
      sudo /usr/pgadmin4/bin/setup-web.sh
    2. Introducimos nuestro usuario y contraseña para pgadmin4
pgAdmin4
  1. Confirmamos la configuración del servidor
  2. Si tenemos un UFW Firewall configurado deberemos habilitar el tráfico http y https:

sudo ufw allow http

sudo ufw allow https

Una vez realizada la configuración se puede acceder al gestor desde: http://<ip>/pgadming4 con el usuario y contraseña configurados durante la instalación.

Acceso al gestor

Por último, añadimos el servidor Postgres con los datos de acceso a la base de datos:

Acceso base de datos
  • La IP privada que hemos configurado
  • Usuario
  • Contraseña
  • (Puerto por defecto 5050)
Connection

Y ya podremos visualizar nuestro servidor y base de datos en el menú de la izquierda.

Vista del servidor y base de datos
  1. MongoDB (Compass)

Para montar un acceso remoto a la base de datos a través de una interfaz gráfica, se puede hacer desde nuestro servidor de acceso, instalando MongoDB Compass. 

En este enlace explica como instalarlo en un servidor Windows (para Linux seguir instrucciones en https://www.mongodb.com/docs/compass/master/install/): 

  1. Descargaremos la aplicación de MongoDB Compass desde la web: https://www.mongodb.com/try/download/compass
Descargar MongoDB Compass
  1. Realizaremos la instalación siguiendo los pasos indicados.
  2. Accederemos a la aplicación:
Crear nueva conexión
  1. Crearemos una nueva conexión haciendo click en New connection e introduciremos el string de conexión de nuestra bbdd obtenido al crear nuestro clúster:
Nueva conexión creada
  1. Haremos click en las opciones avanzadas para incluir la información de autenticación
Información de autenticación
  1. Una vez introducidos los datos haremos click en conect y ya habremos accedido a nuestra BBDD MongoDB
BBDD MongoDB

5. Acceso por IP Pública

  1. Usando NAT

Para exponer la base de datos públicamente es necesario realizar un nateo en el jump host o servidor de acceso. Para ello:

  1. Habilitaremos el forward, con el fin de permitir la comunicación entre tarjetas:
    1. editar el archivo /etc/default/ufw para configurar DEFAULT_FORWARD_POLICY=»ACCEPT»
    2. editar el archivo /etc/ufw/sysctl.conf y descomentar el forwarding IPv4: net.ipv4.ip_forward=1
    3. habilitamos el ufw si está deshabilitado -> ufw enable
Forward
  1. Introduciremos las directivas NAT en iptables. Es necesario para redirigir el tráfico de la IP pública a la ip privada y además cambiar la IP por la privada:
  1. iptables -t nat -A PREROUTING -i ens6 -d 93.93.115.26 -p tcp –dport 5432 -j DNAT –to-destination 192.168.1.100:5432
  2. iptables -t nat -A POSTROUTING –destination 192.168.1.100/32 -j SNAT –to-source 192.168.1.40
Directivas NAT

En nuestro ejemplo 93.93.115.26 es la IP pública y 192.168.1.100 y 192.168.1.40 nuestras IPs privadas.

Configuramos el NATeo entre el jump host y la base de datos, con los datos que tengamos definidos en cada caso (IP pública y de lan privada)

NOTA: Al reiniciar la máquina el iptables vuelve a los valores de origen, por lo que es necesario configurarlos para que sean persistentes o añadir los comandos para que se ejecuten a la inicialización del servidor.

  1. Con Túnel SSH
    1. PostgreSQL

Desde consola

Para montar un túnel ssh haremos uso de la siguiente instrucción: 

 ssh -fNg -L [puerto local]:[ip privada BBDD]:5432 [usuario servidor de acceso]@[ip servidor de acceso]

ejemplo:  ssh -fNg -L 5434:10.7.222.6:5432 usuarioSSH@93.93.115.225

  • 5434 puerto local donde estableceremos el tunel a la base de datos
  • 10.7.222.6 ip de la base de datos
  • 5432 puerto por defecto que se usa en postgres
  • usuarioSSH, usuario de acceso a nuestro servidor de acceso
  • 93.93.115.225 ip pública de nuestro servidor de acceso

Y una vez tenemos el tunel configurado ya podemos acceder a la base de datos como si estuviera en nuestro puerto local 5434:

psql -U [usuario bbdd] -d [bbdd] -p [puerto local] -h localhost

ejemplo: psql -U eoroz -d postgres -p 5434 -h localhost

Nos pedirá la clave de acceso del usuario de nuestra bbdd y ya estaremos dentro:

Clave acceso bbdd

Desde interfaz gráfica

Otra opción para acceder a nuestra base de datos configurada en una red privada es realizarlo a través de un túnel ssh sobre nuestro servidor con ip pública.

Configurar un túnel SSH es muy sencillo de realizar desde programas como PgAdmin (Configuración Interfaz Gráfica PgAdmin) o HeidiSQL.

Ejemplo de PgAdmin:

1- Abrimos la ventana de registro de servidor:

Registrar de servidor
Registro de servidor

2- En la pestaña de Connection introduciremos los datos de acceso de nuestra bbdd en red privada:

  • IP Privada
  • Username, configurado en el alta
  • Password, del usuario configurado
Datos de acceso bbdd

3- En la pestaña SSH Tunel introducimos los datos de nuestro servidor con IP Pública que es donde se va a realizar el túnel:

  • Tunnel host: IP Pública del servidor
  • Username: usuarioSSH en nuestro caso de ejemplo
  • Password: del usuario usuarioSSH
Datos servidor IP Pública

4- Le damos a Save y automáticamente realizará la conexión con la BBDD y veremos el servidor con el nombre que le hemos dado:

Conexión con la BBDD
  1. MongoDB

Desde consola

Es necesario tener instalado por ejemplo Mongo Shell en nuestro servidor para realizar las conexiones a Base de datos, para ello seguir las instrucciones de descarga e instalación de: https://www.mongodb.com/try/download/shell

Para montar un túnel ssh haremos uso de la siguiente instrucción: 

 ssh -fNg -L [puerto local]:[ip privada BBDD]:27017 [usuario servidor de acceso]@[ip servidor de acceso]

ejemplo:  ssh -fNg -L 27018:10.7.222.21:27017 usuarioSSH@93.93.115.225

  • 27018 puerto local donde estableceremos el túnel a la base de datos
  • 10.7.222.21 ip de la base de datos
  • 27017 puerto por defecto que se usa en mongodb
  • usuarioSSH, usuario de acceso a nuestro servidor de acceso
  • 93.93.115.225 ip pública de nuestro servidor de acceso

Y una vez tenemos el túnel configurado ya podemos acceder a la base de datos como si estuviera en nuestro puerto local 27018 :

mongosh –port [puerto local] 

ejemplo: mongosh –port 27018 –tls –tlsAllowInvalidHostnames

Base de datos

Nota: En algunos casos, se detecta que se genera un error de certificados, por lo que es necesario añadir un parámetro extra al comando anterior

mongosh –port [puerto local] –tls –tlsAllowInvalidHostnames –sslAllowInvalidHostnames

Desde interfaz gráfica

Otra opción para acceder a nuestra base de datos configurada en una red privada MongoDB es realizarlo a través de un túnel ssh sobre nuestro servidor (linux) con ip pública.

Configurar un túnel SSH es muy sencillo de realizar desde programas como MongoDB Compass. En las opciones avanzadas en la pestaña Proxy/SSH bastará con introducir los datos de nuestro servidor intermedio con acceso público (IP -> SSH Hostname) y nuestras credenciales de usuario del servidor con permiso para poder realizar el SSH:

Configurar túnel SSH