Crear Múltiples Instancias de MariaDB en Google Cloud

Introducción

Vamos a instalar la base de datos MariaDB usando una Virtual Machine Instance en el componente Compute Engine de la Google Cloud Platform como base para la generación de más instancias de MariaDB.
Nuestra primera instancia se personalizará de acuerdo a nuestras necesidades y luego vamos a generar una Imágen y una Plantilla de Instancia para una fácil duplicación futura.

Instancia Servidor de MariaDB

Seleccionar un Proyecto de Google Cloud

Inicia sesión en tu Google Cloud Console y selecciona tu proyecto:

En Google Cloud Platform -> Project button -> New Project

  • Project name: Databases-2020
  • Location: No Organization

Crea una Máquina Virtual

Crea una nueva Máquina Virtual con los siguientes parámetros:

En Google Cloud Platform - Compute Engine - VM Instances - Create Instance

  • Name: patomariadb
  • Type: f1-micro (1 vCPU, 0.6 GB memory)
  • Image: Ubuntu 19.10
    • Standard persistent disk: 10GB
  • Identity and API access
    • Access scopes: Set access for each API
      • Compute Engine: Read Write
      • Storage: Full
  • Networking
    • Hostname: patomariadb.databases

Acceso vía SSH

Usando PuTTYgen genera una llave privada del tipo RSA 2048 bits y pon tu usuario en el campo Key comment. Guarda tu llave privada en tu laptop y copia-pega la llave pública en:

Google Cloud Platform -> Compute Engine -> Metadata -> SSH Keys -> Edit -> Add Item

ssh-rsa AAA ... ... uQ== pato

Ahora accede a tu máquina virtual como usuario@IP-Externa usando PuTTY cargando tu llave privada.

Instalación de Software

Una vez dentro, actualiza el Ubuntu y configura tu zona horaria:

$ sudo apt update && sudo apt upgrade -y
$ sudo timedatectl set-timezone America/Mexico_City

Instala MariaDB Server, y luego habilita el servicio de MariaDB para que inicie automáticamente al arranque del servidor, y valida la instalación checando la versión:

$ sudo apt-get install mariadb-server

$ sudo systemctl enable mariadb

$ mysql --version

Instala la herramienta de respaldo MariaDB Backup y crea el directorio de respaldo con los permisos adecuados:

$ sudo apt-get install mariadb-backup
$ sudo -p mkdir /respaldo
$ sudo chown -R mysql:mysql /respaldo

Habilitar el Acceso Remoto

Permite el tráfico hacia el puerto de MariaDB 3306 en el Google Cloud Firewall usando los siguiente parámetros:

En Google Cloud Platform -> Networking -> VPC Network -> Firewall -> Create Firewall Rule

  • Name: patonet-mariadb
  • Network: default
  • Priority: 1000
  • Direction of traffic: Ingress
  • Action on match: Allow
  • Targets: All instances in the network
  • Source Filter: IP Ranges
  • Source IP Ranges: 0.0.0.0/0
  • Protocols and ports: Specified protocols and ports
    • tcp: 3306

Habilita las conexiones remotas comentando el bind address hacia el host local en la configuración del servidor:

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
...
#bind-address            = 127.0.0.1
...

Usuarios y Seguridad

Define una contraseña para el usuario root y asegura tu instalación con el procedimiento mysql_secure_installation:

$ sudo mysql_secure_installation
Set root password? [Y/n] Y
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]

Crea un usuario administrador con el plugin unix_socket para una conexión local sin contraseña:

$ sudo mysql

MariaDB [(none)]> CREATE USER 'pato'@'localhost' IDENTIFIED VIA unix_socket;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'pato'@'localhost' WITH GRANT OPTION;

Crea un usuario remoto que pueda conectarse desde cualquier host @'%':

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'remoto'@'%' IDENTIFIED BY '********';

Crea un usuario para hacer respaldos con los permisos adecuados:

MariaDB [(none)]> GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO respalda@localhost IDENTIFIED BY '********';

y da el comando flush privileges para que los nuevos permisos se activen:

MariaDB [(none)]> FLUSH PRIVILEGES;

Detener la Instancia

Ya que terminamos nuestras personalizaciones necesitamos detener la instancia para continuar con los siguientes pasos.

patomariadb $ sudo shutdown

Replicar la Instancia Virtual de MariaDB

Ahora que hemos instalado y personalizado nuestra instancia vamos a crear más Virtual Machines duplicando la que acabamos de generar.

Crear una Imágen

Crea una Imágen del disco que usamos en la máquina virtual base.

En Google Cloud Platform -> Compute Engine -> Images -> Create Image

  • Name: patomariadb-image
  • Source: Disk
  • Source disk: patomariadb
  • Location: Multi-regional us (United States)

Crear la Plantilla de Instancia

Crea una Plantilla de Instancia con las características que requieras para tus futuras máquinas virtuales y usa nuestra imagen recientemente creada como el disco de arranque:

En Google Cloud Platform -> Compute Engine -> Instance Templates -> Create Instance Template

  • Name: patomariadb-template
  • Machine Type: f1-micro (1 vCPU, 0.6 GB memory)
  • Boot Disk
    • Custom Image
      • Image: patomariadb-image
      • Standard persistent disk: 10GB
  • Identity and API access
    • Access scopes: Set access for each API
      • Compute Engine: Read Write
      • Storage: Full

Generar Nueva(s) Instancia(s)

Con la Imágen y la Plantilla listas, para generar una nueva instancia de MariaDB sólo necesitas proporcionar el nombre y hostname de la nueva máquina virtual:

En Google Cloud Platform - Compute Engine - VM Instances - Create Instance - New VM Instance from template

  • Select template: patomariadb-template
  • Name: patomariavm2
  • Networking
    • Hostname: patomariavm2.databases

o si prefieres usar Cloud Shell, genera la nueva instancia de esta forma:

$ gcloud config set compute/zone us-central1-f

$ gcloud compute instances create patomariavm2 --hostname patomariavm2.databases --source-instance-template patomariadb-template

Created [https://www.googleapis.com/compute/v1/projects/databases-20202/zones/us-central1-f/instances/patomariavm2].
NAME          ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
patomariavm2  us-central1-f  f1-micro                   10.128.0.38  35.224.125.50  RUNNING

Y eso es todo, puedes generar fácilmente tantas instancias como requieras e incluso borrarlas cuando ya no las necesites. Sólo necesitas preservar tu Imágen base y tu Plantilla y podrás recrearlas de nuevo.

Conclusión

Fuimos capaces de crear una imagen base de una instancia MariaDB para su futura duplicación. Esto nos permitió revisar los principales pasos de una instalación normal.

Con el uso de las funcionalidades de Imágen y Plantilla de Instancia de Google Cloud podemos crear más Virtual Machines similares evitando la reinstalación y personalización. Este enfoque de máquinas virtuales te ayudará a tener múltiples instancias de MariaDB para hacer clusters y replicación o para cualquier otra prueba que requieras hacer, con una aproximación más tipo Producción que usando tecnología de contenedores.