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

Cómo implementar la base de datos Chamilo MariaDB para alta disponibilidad

Las plataformas del Sistema de gestión de aprendizaje (LMS) le permiten aprender/enseñar de forma remota, algo que es realmente importante debido a la situación actual en todo el mundo.

Dicho esto, también podemos decir que la alta disponibilidad es imprescindible en este tipo de plataforma, de lo contrario, podría no ser accesible cuando se necesita.

En este blog, veremos cómo implementar una base de datos MariaDB para alta disponibilidad que se utilizará para una de las opciones de plataforma LMS más populares, Chamilo LMS.

¿Qué es Chamilo?

Chamilo LMS es un sistema de gestión de aprendizaje (LMS) gratuito diseñado para la educación en línea y desarrollado a través de la colaboración de muchas empresas y desarrolladores individuales.

Como docente, usando Chamilo puedes acceder a una serie de herramientas útiles para crear un ambiente de aprendizaje efectivo. Algunas de estas herramientas son:

  • Importe o cree documentos (audio, video, imágenes) y publíquelos
  • Cree pruebas y exámenes con puntajes automatizados y comentarios según sea necesario
  • Establecer y recibir asignaciones virtuales
  • Describa los componentes del curso a través de las secciones de descripción
  • Comuníquese a través de foros o chat
  • Publicar anuncios
  • Añadir enlaces
  • Crear grupos de trabajo o grupos de laboratorio
  • Configurar un aula virtual
  • Crear encuestas
  • Agregue un wiki para crear documentos en colaboración
  • Utilice un glosario y una agenda
  • Habilite el seguimiento de los alumnos en sus cursos
  • Registrar asistencia
  • Elabore un diario de clase y más

La plataforma Chamilo es extremadamente flexible. Todas sus herramientas se pueden personalizar según las necesidades de cada curso. Proporciona una interfaz de usuario amigable e intuitiva que no requiere conocimientos o habilidades técnicas previas especiales.

Entonces, la pregunta es, ¿cómo puede implementar una base de datos MariaDB para alta disponibilidad para que se use en este sistema?

Base de datos MariaDB para alta disponibilidad

Existen diferentes enfoques para implementar una base de datos MariaDB para alta disponibilidad. Veamos las dos opciones principales.

Replicación maestro-esclavo de MariaDB

Puede ejecutar una configuración maestro-esclavo mediante replicación asincrónica o semisíncrona. La ventaja de esta sencilla opción es que, cuando el maestro no está disponible, puede ascender a uno de los esclavos y seguir trabajando como de costumbre. El problema principal con esta configuración es que la conmutación por error debe realizarse manualmente o incluso con una herramienta externa como ClusterControl. Significa que tendrá un tiempo de inactividad (corto), que podría ser aceptable o no para su empresa.

Clúster MariaDB

Otro enfoque sería usar un Galera Cluster para almacenar los datos de Chamilo LMS. Puede comenzar a usarlo con tres nodos y puede manejar automáticamente la falla de uno de estos nodos. Los dos nodos restantes seguirán funcionando recibiendo conexiones desde la aplicación Chamilo. Significa que no tendrá tiempo de inactividad en este caso, pero como es una topología más compleja, necesitará más conocimiento sobre esta tecnología y, dependiendo de la carga de trabajo, podría no ser la mejor opción.

Equilibradores de carga

Para mejorar la alta disponibilidad, ambas opciones requerirán un Load Balancer frente a ellas, que manejaría el tráfico y lo redirigiría a un nodo disponible/en buen estado.

ProxySQL es un balanceador de carga dedicado para MySQL que viene con una variedad de funciones que incluyen la redirección de consultas, el almacenamiento en caché de consultas y la configuración del tráfico. Se puede usar para configurar fácilmente una división de lectura y escritura y redirigir consultas a nodos de back-end separados.

HAProxy es un balanceador de carga que distribuye el tráfico desde un origen a uno o más destinos y puede definir reglas y/o protocolos específicos para esta tarea. Si alguno de los destinos deja de responder, se marca como desconectado y el tráfico se envía al resto de destinos disponibles.

Keepalived es un servicio que le permite configurar una dirección IP virtual dentro de un grupo activo/pasivo de servidores. Esta dirección IP virtual se asigna a un servidor activo. Si este servidor falla, la dirección IP se migra automáticamente al servidor pasivo "Secundario", lo que le permite continuar trabajando con la misma dirección IP de forma transparente para los sistemas.

Usar solo un nodo de Load Balancer agregará un único punto de falla en su topología, por lo que puede usar la combinación de ProxySQL+Keepalived o HAProxy+Keepalived usando dos nodos de Load Balancer (al menos) y Keepalive entre ellos.

Ahora, veamos cómo ClusterControl puede ayudarlo a implementar una base de datos MariaDB agregando Equilibradores de carga y una dirección IP virtual para usar en su aplicación Chamilo.

Despliegue de base de datos Chamilo MariaDB

Como ejemplo, implementaremos una replicación maestro-esclavo de MariaDB, que será utilizada por la aplicación Chamilo. Para esto, usaremos ClusterControl para implementar 2 nodos de base de datos MariaDB (maestro-esclavo) y 2 balanceadores de carga HAProxy con Keepalived configurado entre ellos.

Despliegue de base de datos MariaDB

Para realizar un deployment desde ClusterControl, simplemente seleccione la opción “Deploy” y siga las instrucciones que aparecen.

Al seleccionar MySQL Replication, debe especificar Usuario, Clave o Contraseña y Puerto para conectarse por SSH a sus servidores. También puede agregar un nombre para su nuevo clúster y si desea que ClusterControl instale el software y las configuraciones correspondientes por usted.

Después de configurar la información de acceso SSH, debe seleccionar el proveedor de la base de datos /versión y defina las credenciales de la base de datos, el puerto y el directorio de datos. También puede especificar qué repositorio usar.

En el siguiente paso, debe agregar sus servidores al clúster que va a crear utilizando la dirección IP o el nombre de host.

Una vez finalizada la tarea, puede ver su nuevo clúster de MariaDB en la pantalla principal de ClusterControl.

Ahora que ha creado su clúster, puede realizar varias tareas en él, como agregar un Load Balancer o una nueva réplica.

Implementación del equilibrador de carga

Para realizar una implementación de Load Balancer, seleccione la opción "Add Load Balancer" en las acciones del clúster y complete la información solicitada.

Solo necesita agregar IP o nombre de host, puerto, política y el nodos que va a utilizar para el equilibrio de carga. Puede implementarlo usando dos puertos diferentes (lectura/escritura y solo lectura), o puede usar solo un puerto de lectura/escritura para enviar todo el tráfico allí.

Implementación mantenida

Para realizar una implementación de Keepalived, seleccione la opción "Agregar Load Balancer" en las acciones del clúster y luego vaya a la pestaña Keepalived.

Aquí, seleccione los nodos HAProxy y especifique la dirección IP virtual que ser utilizado para acceder a la base de datos.

Ahora, conectemos este entorno a la aplicación Chamilo.

Configuración de la base de datos de Chamilo

Durante la implementación de Chamilo, en el paso 4, deberá agregar la configuración de la base de datos.

Aquí debe usar la dirección IP virtual para acceder a su base de datos MariaDB y las credenciales de la base de datos.

Para obtener más detalles sobre la configuración de Chamilo, puede consultar la Documentación oficial.

¡Eso es todo! Tienes tu Aplicación Chamilo usando una Base de Datos MariaDB con Alta Disponibilidad.

Función de recuperación automática de ClusterControl

En caso de falla, ClusterControl promoverá el nodo esclavo más avanzado a maestro y le notificará el problema. También falla el resto de los nodos esclavos para replicar desde el nuevo servidor maestro.

De forma predeterminada, HAProxy está configurado con dos puertos diferentes:lectura-escritura y solo lectura. En el puerto de lectura y escritura, tiene su nodo maestro en línea y el resto de los nodos como fuera de línea, y en el puerto de solo lectura, tiene tanto el nodo maestro como el esclavo en línea.

Cuando HAProxy detecta que uno de sus nodos no es accesible, lo marca automáticamente como fuera de línea y no lo tiene en cuenta para enviarle tráfico. La detección se realiza mediante secuencias de comandos de comprobación de estado configuradas por ClusterControl en el momento de la implementación. Estos comprueban si las instancias están activas, si se están recuperando o si son de solo lectura.

Cuando ClusterControl promociona un nodo esclavo, HAProxy marca el antiguo maestro como fuera de línea para ambos puertos y pone el nodo promocionado en línea en el puerto de lectura y escritura.

Si su HAProxy activo, al que se le asigna una dirección IP virtual a la que se conectan sus sistemas, falla, Keepalived migra esta dirección IP a su HAProxy pasivo automáticamente. Esto significa que sus sistemas podrán continuar funcionando normalmente.

Implementación de la base de datos MariaDB mediante la CLI de ClusterControl

Si prefiere implementar MariaDB Cluster usando la línea de comandos, puede usar la herramienta de cliente de línea de comandos ClusterControl llamada "s9s". Esta herramienta enviará un trabajo de implementación al servidor ClusterControl y realizará todos los pasos necesarios para implementar el clúster.

Por ejemplo, puede ejecutar el siguiente comando en el servidor ClusterControl para crear una replicación maestro-esclavo de MariaDB:

$ s9s cluster --create \

--cluster-type=mysqlreplication \

--nodes='10.10.10.136;10.10.10.137' \

--vendor=mariadb \

--provider-version='10.5' \

--db-admin-passwd='root123' \

--os-user=root \

--os-key-file=/root/.ssh/id_rsa \

--cluster-name='MariaDB1' \

--log

Verá el registro del trabajo en la consola para que pueda monitorear el progreso de la implementación allí, o también puede monitorear el progreso del trabajo desde la interfaz de usuario de ClusterControl -> Actividad -> Trabajos. Cuando haya terminado, podrá verlo en la lista de la interfaz de usuario de ClusterControl.

Conclusión

En este blog, mencionamos algunas opciones para implementar una base de datos MariaDB para alta disponibilidad usando ClusterControl y cómo usarla en una aplicación Chamilo LMS.

Usamos una implementación maestro-esclavo simple agregando balanceadores de carga para mejorar la alta disponibilidad en esta topología, pero puede mejorar este entorno aún más usando un enfoque diferente como Galera+ProxySQL o una combinación diferente de ellos .