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
- Access scopes: Set access for each API
- 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
- Custom Image
- Identity and API access
- Access scopes: Set access for each API
- Compute Engine: Read Write
- Storage: Full
- Access scopes: Set access for each API
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.