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

Implementación de la replicación de MariaDB para alta disponibilidad

MariaDB Server ofrece replicación asíncrona y síncrona. Se puede configurar para tener una replicación de múltiples fuentes o con una configuración de múltiples maestros.

Para una aplicación intensiva de lectura y escritura, una configuración maestro-esclavo es común, pero puede diferir según la pila subyacente necesaria para crear un entorno de base de datos de alta disponibilidad.

Es posible que tener una configuración de replicación maestro-esclavo no satisfaga sus necesidades, especialmente en un entorno de producción. Un servidor MariaDB solo (configuración maestro-esclavo) no es suficiente para ofrecer alta disponibilidad, ya que todavía tiene un punto único de falla (SPOF).

MariaDB presentó un producto empresarial (MariaDB Platform) para abordar este problema de alta disponibilidad. Incluye varios componentes:una versión empresarial de MariaDB, MariaDB ColumnStore, MaxScale y conectores ligeros de MariaDB. En comparación con otros proveedores con la misma oferta de soluciones empresariales, podría ser una opción rentable; sin embargo, no todos necesitan este nivel de complejidad.

En este blog, le mostraremos cómo usar el servidor MariaDB mediante la replicación en un entorno de alta disponibilidad con la opción de elegir entre usar todas las herramientas gratuitas o nuestro software de administración rentable para ejecutar y monitorear su infraestructura del servidor MariaDB.

Configuración de topología de alta disponibilidad de MariaDB

Una configuración habitual para una topología maestro-esclavo con MariaDB Server utiliza un enfoque asíncrono o síncrono con solo un maestro que recibe escrituras, luego replica sus cambios en los esclavos tal como se muestra en el siguiente diagrama:

Pero, de nuevo, esto no ofrece alta disponibilidad y tiene un punto único de fallo. Si el maestro muere, entonces su aplicación cliente ya no funciona. Ahora, debemos agregar en la pila para tener un mecanismo de conmutación por error automático para evitar SPOF y también ofrece equilibrio de carga para dividir lecturas y escrituras y en forma de turno rotativo. Entonces, por ahora, terminaremos teniendo el tipo de topología,

Ahora, esta topología brinda más seguridad en términos de SPOF. MaxScale hará la división de lectura y escritura entre los nodos de la base de datos de su maestro contra los esclavos. MaxScale hace un enfoque perfecto cuando se trata de este tipo de configuración. MaxScale también tiene detección automática incorporada. Entonces, cualquier cambio que ocurra en el estado de los nodos de su base de datos, lo detectará y actuará en consecuencia. MaxScale tiene la disponibilidad para realizar una conmutación por error o incluso un cambio. Para saber más sobre su mecanismo de conmutación por error, lea nuestro blog anterior que aborda el mecanismo de conmutación por error de MariaDB MaxScale.

Tenga en cuenta que el mecanismo de conmutación por error MaxScale con MariaDB Monitor también tiene sus limitaciones. Es mejor aplicarlo solo para una configuración maestro-esclavo sin una configuración demasiado complicada. Esto significa que no se admite una configuración maestro-maestro. Sin embargo, MaxScale tiene más cosas que ofrecer. No solo equilibra la carga, ya que realiza divisiones de lectura y escritura, sino que también tiene un SmartRouter integrado que envía la consulta al nodo de mayor rendimiento. Aunque esto no agrega la característica de estar altamente disponible, ayuda a que los nodos no se atasquen en el tráfico y evita que ciertos nodos de la base de datos tengan un bajo rendimiento que puede causar tiempos de espera o un servidor totalmente no disponible causado por una actividad en curso con un uso intensivo de recursos. .

Una advertencia sobre el uso de MaxScale es que utilizan BSL (licencia de fuente comercial). Es posible que deba revisar las preguntas frecuentes antes de adoptar este software.

Otra opción para elegir es usar un enfoque más conveniente. Puede ser rentable para usted elegir usar ClusterControl y tener proxies en el medio usando HaProxy, MaxScale o ProxySQL, para lo cual este último puede configurarse desde una configuración liviana hasta una configuración más de nivel de producción que consulta el enrutamiento, filtrado de consultas, firewall o seguridad. Vea la ilustración a continuación:

Ahora, encima de ellos está el ClusterControl. ClusterControl está configurado con una alta disponibilidad, es decir, CMON HA. Alternativamente, la capa de proxy se puede elegir entre HaProxy, una opción muy liviana para elegir, MaxScale, como se mencionó anteriormente, o ProxySQL, que tiene un conjunto de parámetros más refinado si desea más flexibilidad y una configuración ideal para una escala alta. configuración de producción. ClusterControl manejará la detección automática en términos del estado de salud de los nodos, especialmente el maestro, que es el nodo principal para determinar si requiere una conmutación por error o no. Ahora, esto puede ser más autosuficiente, pero agrega más costos debido a la cantidad de nodos necesarios para implementar esta configuración y también al uso de la conmutación por error automática de ClusterControl, que se aplica a nuestra licencia avanzada y empresarial. Pero, por otro lado, le brinda toda la seguridad y la visibilidad de la infraestructura de su base de datos. En realidad, es más una implementación empresarial de bajo costo en comparación con las soluciones disponibles en el mercado global.

Implementación de su replicación maestro-esclavo de MariaDB para alta disponibilidad

Supongamos que tiene una configuración maestro-esclavo existente de MariaDB. Para este ejemplo, usaremos ClusterControl con la edición comunitaria gratuita que puede instalar y usar de forma gratuita. Simplemente hace que su trabajo sea fácil y rápido de configurar. Para hacer esto, solo tiene que importar su clúster de replicación de MariaDB existente. Consulte nuestro blog anterior sobre cómo administrar MariaDB con ClusterControl. Para este blog, tengo la siguiente configuración inicialmente como mi clúster de replicación de MariaDB, como se ve a continuación:

Ahora, usemos MaxScale aquí como una solución alternativa de MariaDB Platform que también ofrece alta disponibilidad. Para hacer eso, es muy fácil de usar con ClusterControl con solo unos pocos clics, luego puede configurar su MaxScale que se ejecuta sobre su clúster de replicación MariaDB existente. Para hacer eso, simplemente vaya a Administrar → Load Balancer → MaxScale, y podrá configurar y proporcionar los valores apropiados como se ve a continuación,

Luego habilite o haga clic en la opción de casilla de verificación para seleccionar qué servidores deben ser agregado como parte de su monitoreo MaxScale. Véase más abajo,

Suponiendo que tiene más de un nodo MaxScale para agregar, simplemente repita el mismos pasos.

Por último, configuraremos Keepalived para mantener nuestros nodos MaxScale siempre disponibles cuando sea necesario. Esto es muy rápido con solo pasos simples usando ClusterControl. Nuevamente, debe ir a Administrar → Equilibrador de carga, pero en su lugar, seleccione Keepalived,

Como habrás notado, coloqué mi Keepalived junto con MaxScale en el mismo nodo de mi esclavo (192.168.10.30). Mientras que, por otro lado, el segundo (2º) Keepalived se ejecuta en 192.168.10.40 junto con Maxscale en el mismo host.

El resultado de la topología está listo para la producción, lo que puede proporcionarle enrutamiento de consultas, alta disponibilidad y conmutación por error automática equipada con un amplio monitoreo y observabilidad mediante ClusterControl. Véase más abajo,

Conclusión

El uso exclusivo de la replicación del servidor MariaDB no ofrece alta disponibilidad. La extensión y el uso de herramientas de terceros lo equiparán para tener su pila de base de datos altamente disponible al no solo confiar en los productos MariaDB o incluso usar la plataforma MariaDB.

Hay maneras de lograr esto y administrarlo para que sea más rentable. Sin embargo, hacer uso de estas soluciones disponibles en el mercado, como ClusterControl, es una gran diferencia, ya que le brinda velocidad, menos molestias y, por supuesto, la máxima capacidad de observación con eventos actualizados y en tiempo real, no solo la salud. sino también los eventos que ocurren en su clúster de base de datos.