sql >> Base de Datos >  >> RDS >> MariaDB

Migración de Maxscale a ProxySQL Load Balancer

Un balanceador de carga de base de datos, o proxy, es un servicio de middleware entre la capa de aplicación y la capa de base de datos. La aplicación se conecta al proxy de la base de datos y el proxy reenvía la conexión a la base de datos. Hay algunos beneficios al usar un proxy de base de datos, por ejemplo:dividir consultas de lectura y escritura, almacenar consultas en caché, distribuir consultas en función de algún algoritmo de enrutamiento, reescribir consultas y escalar su carga de trabajo de solo lectura. Un proxy de base de datos también abstrae la topología de la base de datos (y cualquier cambio) para la capa de la aplicación, por lo que las aplicaciones solo necesitan conectarse a un único punto final.

Existen varios proxies de base de datos, desde opciones comerciales hasta opciones de código abierto, por ejemplo, HAProxy, Nginx, ProxySQL, Maxscale, etc. En este blog, discutiremos cómo migrar proxies de base de datos de Maxscale a ProxySQL con la ayuda de ClusterControl.

Arquitectura actual con Maxscale

Considere una arquitectura de base de datos de alta disponibilidad que consta de 3 nodos en un Galera Cluster y, además, 2 servicios Maxscale y Keepalived para una alta disponibilidad del proxy de la base de datos. Galera Cluster es replicaciones "virtualmente" sincrónicas, utiliza una certificación basada en la replicación que garantiza que sus datos estarán disponibles en todos los nodos. La arquitectura actual se muestra a continuación:

Maxscale es un proxy de base de datos de MariaDB Corporation, que actúa como middleware entre aplicaciones y bases de datos.

Esta es la arquitectura de topología para los balanceadores de carga Galera Cluster y Maxscale en ClusterControl. Puede implementar todo esto directamente desde ClusterControl o importar bases de datos existentes y nodos de proxy en ClusterControl. Puede ver la topología de su base de datos en la pestaña Topología.

Implementar ProxySQL y Keepalived

ProxySQL es otro proxy de base de datos de ProxySQL, que ofrece algunas funciones, como almacenamiento en caché de consultas, reescritura de consultas, división de consultas para escritura y lectura según el patrón de consultas. Para implementar ProxySQL en ClusterControl, debe ir a Administrar -> Equilibradores de carga en su clúster. ClusterControl admite algunos proxies de base de datos diferentes; HAProxy, ProxySQL, MaxScale.

Elija ProxySQL y se mostrará la siguiente página:

Debemos elegir la dirección del servidor donde se instalará ProxySQL. Podemos instalar en los nodos existentes o si desea tener un nodo dedicado para ProxySQL, simplemente escriba la dirección IP en la lista. Complete la contraseña para los usuarios de Administración y Monitoreo, agregue el usuario de la aplicación en ProxySQL o puede configurarlo más tarde. Habilite los servidores de bases de datos para que se incluyan en el conjunto de equilibrio de carga en ProxySQL. Haga clic en el botón Implementar ProxySQL. Necesitamos tener al menos 2 ProxySQL para alta disponibilidad.

Si olvidamos agregar un usuario de base de datos en ProxySQL durante la configuración, podemos configurarlo en la pestaña de usuario de ProxySQL como se muestra a continuación:

ProxySQL también requiere que los usuarios de la base de datos estén configurados en ProxySQL.

Después de implementar ProxySQL, continuamos configurando Keepalived en cada host ProxySQL. Los servicios Keepalived actuarán como roles maestros/de respaldo en las instancias de ProxySQL. El servicio Keepalived utiliza VIP (dirección IP virtual), por lo que la aplicación se conectará a una dirección IP virtual en el rol de maestro y reenviará la conexión al ProxySQL local. Si los servicios fallan, el VIP pasará automáticamente a otro nodo.

La implementación de keepalived en ClusterControl se realiza en la misma página que el proxy de la base de datos, solo necesita elegir la pestaña Keepalived. Elija el tipo de balanceadores de carga, que es ProxySQL, y luego agregue el ProxySQL actual para Keepalived1 y Keepalived2. Rellene la dirección IP virtual y la interfaz de red. Y finalmente, haga clic en el botón Implementar Keepalived.

Ejecutar dos ProxySQL con servicios Keepalived nos brinda una capa de proxy de alta disponibilidad. En ClusterControl, se muestra en la siguiente vista de topología:

Conmutación

La conmutación del tráfico es realmente sencilla, solo necesita cambiar la conexión de la dirección IP en la capa de la aplicación para usar la dirección IP virtual para ProxySQL y luego monitorear el tráfico a través de ProxySQL.