¿Qué es MaxScale? Un proxy para bases de datos MariaDB y MySQL
Team Host.it 5 min de lectura
Contenido
Ya hemos hablado de cómo MaxScale nos permite tener bases de datos de alto rendimiento y construir arquitecturas flexibles. Ahora entraremos en detalles sobre las características y funcionalidades de este proxy de base de datos.
Un proxy es un servidor que actúa como intermediario en una conexión: recibe solicitudes de un cliente y las redirige a otros servidores que son los destinatarios de las solicitudes. En otras palabras, un proxy es un medio para redirigir una conexión entre dos computadoras para que no estén conectadas directamente. Un proxy funciona como una centralita: recibe la llamada de quien quiere llamar y la desvía a la extensión deseada.
MaxScale se puede insertar de forma transparente entre la aplicación y el servidor MySQL, exactamente como lo hace un proxy web entre nuestro navegador (por ejemplo, Firefox) y el sitio que intentamos visitar. Gracias a un proxy es posible tener:
Redundancia: utilizar más de una base de datos detrás del proxy. Un único servidor no proporciona confiabilidad ni alta disponibilidad en caso de que una máquina esté fuera de servicio.
Reducción de costos de infraestructura: porque generalmente dos servidores pequeños son menos costosos que un solo servidor de alto rendimiento.
Veremos dos tipos de servidores proxy de bases de datos:
Proxies de capa de transporte como HAProxy
Proxies de capa de aplicación como MaxScale
HAProxy: un proxy eficiente, rápido y funcional Hasta la fecha, el proxy más utilizado en el entorno MySQL es el HAProxy que trabaja a un nivel inferior (nivel 4: transporte). HAproxy no sabe nada sobre MySQL y solo se preocupa por equilibrar las conexiones entre múltiples servidores. Es muy rápido, ligero y eficaz, sin embargo este equilibrio se realiza sin saber qué clasifica. Esto hace que el sistema sea menos eficiente ya que un servidor puede recibir muchas solicitudes pesadas, mientras que otros servidores pueden descargarse. Entonces HAProxy no es la opción ganadora en todos los casos.
MaxScale: un proxy que puede hacer cosas increíbles
MaxScale trabaja en un nivel superior (nivel 7: aplicación), al monitorear los servidores es capaz de comprender lo que sucede dentro de la infraestructura. Conociendo el protocolo MySQL, puedes intervenir manipulando el tráfico entre el cliente y el servidor. Estas son algunas de sus principales características:
Filtrado de consultas de base de datos
Gestión de enrutamiento: enrutamiento de solicitudes a uno o más servidores de bases de datos.
Edite consultas sobre la marcha antes de que lleguen a la base de datos
Posibilidad de ocultar la estructura interna de la infraestructura dejando un único punto de acceso.
Alta confiabilidad y escalabilidad del sistema.
Capacidad de mover una base de datos del servidor local a un servidor externo sin cambiar la configuración de la aplicación
Divide automáticamente las escrituras en el servidor MAESTRO y las lecturas en una o más bases de datos ESCLAVAS.
MaxScale puede proporcionar equilibrio de carga de conexiones sin la necesidad de utilizar aplicaciones o CMS que proporcionen esta funcionalidad. Esto significa que CMS como Joomla! o WordPress puede beneficiarse del uso de la replicación maestro/esclavo para hacer que su sitio sea escalable.
Características de MaxScale El punto fuerte de MaxScale es sin duda su modularidad, que permite una libertad considerable al adaptarse a muchos casos de uso. Escala máxima es:
Modular: un sistema de módulos define su funcionalidad
Extensible: es posible aplicar múltiples filtros incluso en cascada
Flexible: los módulos y filtros se pueden agregar dinámicamente
A continuación se muestran los 5 módulos que constituyen el corazón de MaxScale:
Protocolo: ofrece la posibilidad de utilizar múltiples protocolos, p.e. Cliente MySQL, http, telnet
Autenticación: el sistema de autenticación permite a los clientes acceder a MaxScale utilizando las credenciales presentes en los servidores Backend.
Monitor: lee la configuración del estado del sistema directamente desde los servidores backend
Enrutador: enruta las conexiones a una o más bases de datos backend.
Filtro y registro: los filtros le permiten modificar consultas o escribir un archivo de registro con todas las solicitudes y respuestas recibidas.
1. Protocolo de conexión Los clientes se conectan a MaxScale en lugar de a la base de datos MySQL sin saber la diferencia. Pueden utilizar las mismas bibliotecas de conexión utilizadas hasta ahora: p.e. Cliente MySQL o cliente MariaDB.
2. Autenticación MaxScale no cuenta con un sistema de autenticación ni base de datos de usuarios. Se utilizan los mismos usuarios presentes en las bases de datos backend, cargadas cuando se inicia la aplicación.
3. Monitor Se utiliza para comprender en cualquier momento el estado de todas las bases de datos backend conectadas a MaxScale. De esta forma se puede saber cuál es el servidor Maestro y cuántos Esclavos están replicando correctamente los datos. El monitor se puede utilizar para controlar un Galera Cluster.
4. Enrutador Dirige el tráfico desde el cliente a los servidores usando una regla específica:
Enrutamiento de conexión: enrutador normal para conectarse a una base de datos
Enrutador dividido de lectura/escritura: divide las solicitudes de escritura en el MAESTRO y las solicitudes de lectura en uno de los ESCLAVOS conectados
5. Filtros y registros de consultas Entre las herramientas más poderosas puestas a disposición por MaxScale se encuentran ciertamente los filtros que permiten realizar operaciones avanzadas sobre consultas sin cambiar el comportamiento de la aplicación:
Procesamiento de consultas y resultados SQL
Usando una expresión regular simple
Analizando, modificando o rechazando consultas
Colocando múltiples filtros en cascada
Durante nuestras pruebas de MariaDB comprendimos que este producto puede ayudarnos a escalar nuestra plataforma Joomla Cloud Hosting, manteniendo la compatibilidad con todas las versiones de Joomla. y utilizar los servidores de bases de datos más actualizados al mismo tiempo. La versión 1.0.4-estable se lanzó hace unas semanas. Aunque el proyecto aún es joven, lo recomendaría a cualquiera que tenga un sitio muy grande y quiera tener la capacidad de escalar el rendimiento de la base de datos sin cambiar el código CMS.
En el próximo artículo veremos cómo creamos un entorno de desarrollo usando Docker y Vagrant. Si está utilizando MaxScale para uno de sus proyectos, deje un comentario para compartir esta experiencia con nosotros.
Hosting WordPress
Hosting optimizado para WordPress
SSD, backups, SSL y Application Manager: publica y actualiza tu sitio con asistencia en italiano.
Artículos relacionados
Del blog
Del archivo