Saltar al contenido
Joomla

Un entorno de desarrollo para MaxScale con Docker y Vagrant

Team Host.it 3 min de lectura

Contenido

¿Por qué utilizar la ventana acoplable? Es muy rápido para desarrollo/pruebas locales.

Es fácil compartir imágenes de Docker dentro del equipo

Los contenedores también se pueden compartir fuera del equipo a través de Dockerfile.

Garantiza el máximo aislamiento de procesos sin tener que crear una máquina virtual para cada servicio.

Es la solución ideal para probar arquitecturas localmente con múltiples hosts interactuando a través de la red.

Docker: una plataforma para gestionar contenedores

Con Docker puedes crear, lanzar y destruir contenedores de aplicaciones a la velocidad de la luz. Hay muchas imágenes listas para usar publicadas por la comunidad, incluida la de MaxScale.

Para nuestra prueba elegimos utilizar estos tres contenedores:

MaxScale: en versión beta (Dockerfile)

MariaDB: versión 10.0 (Dockerfile)

MySQL: versión 5.1 (Dockerfile)

Docker es una opción ganadora para este tipo de experimentación: podemos crear un contenedor de aplicaciones e iniciar nuestras aplicaciones usando un archivo simple llamado Dockerfile. En unos segundos es posible disponer de todas las bases de datos MySQL/MariaDB necesarias para realizar las pruebas. Desde la línea de comandos o usando las API de Docker puedes crear y destruir contenedores con MaxScale, MariaDB y MySQL.

Para automatizar la creación de la infraestructura elegimos utilizar Vagrant: un sistema ágil que permite crear y configurar infraestructuras de desarrollo reproducibles y portátiles.

Vagrant: cree entornos de desarrollo rápidamente

Vagrant es una herramienta de código abierto para gestionar entornos de desarrollo mediante el uso de diferentes proveedores, incluidos VirtualBox y Docker. A través del Vagrantfile es posible definir la infraestructura del sistema y, como ya ocurre en Docker, crearla y destruirla mediante comandos de línea de comandos muy simples. En nuestra prueba elegimos Docker Provider para definir los contenedores utilizados y las conexiones entre ellos.

Es posible definir dos tipos de conexiones:

volúmenes-desde: para conectar el volumen a un contenedor dedicado al almacenamiento

enlace: para permitir que un contenedor vea otro

En este punto hemos creado una configuración muy similar a la de producción compuesta por:

Un contenedor MySQL 5.1 que corresponde a la base de datos utilizada para Joomla! instalaciones 1.5.x

Un contenedor MariaDB 10.0 configurado como MAESTRO

Un contenedor MariaDB 10.0 configurado como ESCLAVO, conectado al MAESTRO

Un contenedor MaxScale que puede llegar a todas las bases de datos.

El siguiente paso consiste en configurar MaxScale en esta infraestructura.

MaxScale: un proxy para bases de datos MySQL y MariaDB

Parte de nuestra prueba fue usar MaxScale como proxy para enviar tráfico a la base de datos con MySQL 5.1 y copiar todas las consultas a las bases de datos MariaDB para analizar el tráfico y verificar el comportamiento correcto del enrutador dividido de lectura/escritura.

El contenedor con MySQL 5.1 se utilizó para probar el funcionamiento del filtro MaxScale y verificar el TIPO de reescritura en CREATE TABLE:

Consulta de ejemplo aceptada en MySQL 5.1:

CREAR TABLA Persona (id int, nombre varchar(255)) TIPO=MyISAM;

Por ej. consulta desde MySQL/MariaDB versión 5.5 en adelante:

CREAR TABLA Persona (id int, nombre varchar(255)) MOTOR=MyISAM;

Por lo tanto configuramos MaxScale de esta manera:

Un oyente escuchando /var/lib/mysql/mysql.sock y en el puerto 3306

Enrutador: el tráfico que llega del oyente se dirige al enrutador principal. Tráfico enviado al servidor MySQL 5.1 sin ninguna modificación.

El tráfico se copia al enrutador dividido de lectura/escritura.

El enrutador dividido de lectura/escritura se encarga de separar las consultas de solo lectura de las de solo escritura. Antes de enviarlas a los servidores Maestro/Esclavo de MariaDB, las consultas pasan a través de CreateTableFilter.

CreateTableFilter que modifica las consultas CREATE TABLE que contienen el parámetro TYPE en lugar de ENGINE

Un monitor para cada servidor backend para permitir a MaxScale conocer constantemente la situación y el estado de la replicación.

Compartir entre múltiples equipos de desarrollo

Gracias a Docker y Vagrant fue posible compartir una infraestructura compleja no solo dentro de nuestro equipo de desarrollo, sino también externamente con el equipo de MariaDB MaxScale.

En el próximo artículo explicaré cómo fue posible llevar a producción esta configuración, minimizando el tiempo de inactividad de las máquinas a unos minutos.

Hosting Joomla

Hosting Joomla en Italia

Planes con backups, certificados SSL y herramientas para desarrolladores y agencias.

Del blog

WordPress

WordPress 7.0 e l’AI

Cosa cambia per le web agency

Sicurezza

Patch a caldo, sito acceso

CVE kernel senza riavvii a raffica

Del archivo

Joomla

Por qué Host.it eligió Joomla 4 como interfaz

Joomla

Día de la Protección de Datos - La importancia de la Privacidad y la Seguridad