sql >> Base de Datos >  >> RDS >> Mysql

Cómo migrar Moodle independiente a una configuración escalable de base de datos en clúster

El aprendizaje en línea hoy en día está ganando terreno rápidamente desde que ocurrió la pandemia de COVID-19. La mayoría de las instituciones educativas tienen que configurar plataformas para el aprendizaje en línea, y casi todos los estudiantes tienen que acceder a la plataforma para aprender e interactuar con los profesores. Moodle es uno de los sistemas de gestión del aprendizaje de código abierto para el aprendizaje en línea, 

Tener una alta disponibilidad de la plataforma Moodle es imprescindible para las instituciones, de lo contrario interrumpirá y detendrá el proceso de aprendizaje en línea. Dado que muchos estudiantes acceden a la plataforma al mismo tiempo, la disponibilidad y la escalabilidad son importantes. En este punto, las instituciones educativas necesitan tener conocimiento y arquitectura de la plataforma de alta disponibilidad y escalabilidad de Moodle. Si desea obtener más información sobre cómo migrar Moodle independiente a una base de datos escalable en clúster, puede seguir esta guía.

Moodle en modo “Punto único de falla”

La plataforma Moodle independiente consta de un servidor y todo lo que está instalado en el servidor (la base de datos y el servidor de aplicaciones en un solo lugar). O tiene 2 servidores, que es para el servidor de aplicaciones y el servidor de base de datos como se describe en la siguiente imagen:

Ambas arquitecturas carecen de la disponibilidad y escalabilidad del servicio. Desde la perspectiva de la disponibilidad, puede imaginar que si el servidor falla, no tiene ningún servicio ejecutándose en el servidor. Si el servidor de aplicaciones falla o la base de datos falla, el servicio deja de funcionar.

Por otro lado, la escalabilidad también es importante, más usuarios significa más tráfico y más conexiones a la base de datos. La escalabilidad se puede lograr agregando más recursos en los servidores, o agregando más servidores para que el tráfico se pueda distribuir entre los nodos; de lo contrario, el rendimiento se verá afectado.

Conversión de base de datos independiente a agrupada

Migrar su nodo independiente a una base de datos en clúster puede llevar algún tiempo y no es una operación libre de riesgos. A continuación se detallan los pasos que debemos seguir:

  1. Debe realizar una copia de seguridad (use mysqldump o xtrabackup).
  2. Instalar base de datos en todos los nodos de base de datos réplica.
  3. Restaurar la copia de seguridad en los nodos de réplica.
  4. Conecte el nodo de réplica al maestro.
  5. Configurar ProxySQL y mantener vivo frente a los nodos de la base de datos
  6. Configure los balanceadores de carga de ProxySQL (p. ej., cree grupos de host, servidores, usuarios).
  7. Apunte la configuración de Moodle a la nueva dirección IP virtual.

Cómo puede ayudar ClusterControl 

ClusterControl es un software de administración de bases de datos que lo ayuda a implementar, monitorear y administrar su base de datos de código abierto. Intentaremos migrar desde la arquitectura independiente de Moodle como se muestra a continuación:

A una arquitectura de base de datos en clúster basada en replicación:

Necesitará al menos dos servidores para la base de datos y dos para la base de datos proxy (usaremos ProxySQL como balanceador de carga) y servicio de mantenimiento para servir una dirección IP virtual.

Suponiendo que tenemos una base de datos MySQL independiente ejecutándose:

Agregar más nodos de base de datos en ClusterControl es realmente sencillo, puede ir a la Menú de clúster en el lado derecho de su clúster y Agregar esclavo de replicación.

Mostrará un nuevo diálogo para agregar un nuevo esclavo, solo necesita completar la dirección IP y luego haga clic en el botón Agregar nuevo esclavo como se muestra a continuación:

Como puede ver en la captura de pantalla, es posible sembrar el esclavo con datos de una copia de seguridad existente. Esto es para evitar transmitir todos los datos desde la base de datos maestra en ejecución. Una vez que se implementa la base de datos esclava, se preparará con datos maestros y ClusterControl se asegurará de que la esclava se sincronice con la maestra.

Puede repetir el paso para agregar otro nodo de réplica.

La nueva arquitectura será como se muestra a continuación:

El siguiente paso es agregar un equilibrador de carga delante de la base de datos. Un balanceador de carga como ProxySQL es útil ya que puede redirigir las solicitudes de escritura al maestro y las solicitudes de lectura a los esclavos. De esta manera, está distribuyendo el tráfico de Moodle. Tenga en cuenta que también es posible realizar una configuración maestro-maestro basada en Galera Cluster para MySQL o MariaDB.

Usaremos dos balanceadores de carga para una alta disponibilidad. Puede ir a Administrar -> Equilibradores de carga en el clúster.

Debe completar cierta información como la dirección del servidor, la contraseña administrativa y del monitor, agregue el usuario de Moodle en ProxySQL y luego simplemente haga clic en Implementar ProxySQL. Activará un nuevo trabajo. Repita la implementación en el otro nodo del balanceador de carga.

Lo último es configurar keepalive para los balanceadores de carga. Vaya a Administrar -> Equilibradores de carga, hay una pestaña para Keepalived

Solo necesita elegir el tipo de equilibrador de carga y agregarlo a keepalived . Rellene la dirección IP virtual y la interfaz de red. Haga clic en el botón Implementar Keepalived.

La arquitectura final de nuestra base de datos Moodle agrupada de alta disponibilidad será como se muestra a continuación:

Solo necesita cambiar la configuración de conexión en config.php apuntando al dbhost a la Dirección IP Virtual que habíamos configurado.

Después de migrar todo a la base de datos agrupada, es posible que desee poner un poco de monitoreo en su base de datos de Moodle, que puede seguir esta guía.