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

Creación de una base de datos de alta disponibilidad para Moodle mediante la replicación de MySQL

Moodle es un sistema de gestión de aprendizaje de código abierto, ampliamente utilizado por escuelas y universidades de todo el mundo. El proyecto iniciado en 2002 por Martin Dougiamas, con el objetivo de proporcionar a los estudiantes, profesores y educadores una plataforma segura, robusta, abierta y gratuita para entornos de aprendizaje.

El software en sí está escrito en PHP y es compatible con varios RDBMS, como:Oracle, MySQL, PostgreSQL, MariaDB, etc.

En este blog, analizaremos cómo hacer que la base de datos de Moodle sea resistente mediante la replicación de MySQL, que es necesaria para admitir una implementación de Moodle de alta disponibilidad. Implementaremos a través de ClusterControl una configuración de base de datos que consiste en una replicación de MySQL maestro/esclavo con balanceadores de carga de base de datos redundantes.

Arquitectura

La replicación de MySQL es una forma popular de lograr redundancia para la base de datos. Es importante asegurarse de que todas las escrituras se envíen al maestro, mientras que las lecturas se pueden equilibrar entre los esclavos. Para hacer eso, usaremos ProxySQL, que es un balanceador de carga consciente de la base de datos que se encarga de dividir el tráfico de escritura y enviarlo al maestro. Dado que la función de maestro puede trasladarse a otro servidor, por ejemplo, en caso de un bloqueo de la base de datos, ProxySQL puede realizar un seguimiento del nuevo maestro y asegurarse de que el tráfico de escritura se enruta en consecuencia. Keepalived administra una IP virtual para garantizar un punto final de base de datos resistente para todos los servidores de aplicaciones de Moodle.

Supervisión y gestión de conmutación por error

En el diagrama anterior, sugerimos dos réplicas esclavizadas fuera de la base de datos maestra. En caso de falla maestra, una de las réplicas será promovida a nueva maestra. Todavía quedará una réplica para manejar cosas como lecturas, copias de seguridad, informes, etc. 

La conexión de la aplicación utiliza un VIP (dirección IP virtual) en la cadena de conexión de la base de datos, por lo que si algo sucede en el lado de la base de datos, minimizará el impacto de su aplicación y no necesitará volver a configurar cualquier cosa. ClusterControl es el componente que vigila las bases de datos y automatiza la conmutación por error, por ejemplo, promoviendo una de las réplicas a un nuevo maestro y recuperando el servidor de base de datos fallido.

Configuración de la base de datos

Haremos uso de ClusterControl para implementar la configuración de nuestra base de datos.

Primero, debe tener un servidor dedicado para la configuración de ClusterControl. La instalación es muy fácil, solo necesita descargar install-cc desde el repositorio de varios nueves, otorgar permiso de ejecución en el archivo y ejecutarlo. Como se muestra a continuación:  

$ wget http://www.severalnines.com/downloads/cmon/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Puede ejecutar el script anterior en cualquier tipo de variante de Linux. Implementará cualquier cosa que requiera ClusterControl.

Una vez que tenga ClusterControl en funcionamiento, seleccione el botón Implementar en el panel de control de ClusterControl.

 

Se mostrará una nueva página que muestra algunas opciones. Elegiremos la primera opción de implementación para nuestra configuración de replicación de MySQL.

Debe tener acceso al servidor de la base de datos de destino a través de SSH. No olvide habilitar SSH sin contraseña y otorgar acceso sudo al usuario. Defina el nombre del clúster y haga clic en Continuar como se muestra a continuación:

En la página siguiente, debe elegir el proveedor de la base de datos, versión de la base de datos que desea instalar, la contraseña raíz, el puerto del servidor si desea tener puertos personalizados o específicos y el directorio de datos de MySQL.

Después de completar toda la información, puede pasar al siguiente paso, que es la página Definir la topología. Complete la dirección IP del servidor de la base de datos, en este caso, ya que configuramos la replicación MyQL con 1 maestro y 2 réplicas.

La implementación ahora activará un trabajo que "Creará un clúster", solo debe esperar hasta que termine el trabajo.

Configuración de ProxySQL

Después de implementar la base de datos, puede pasar por Load Balancer desde el menú de su clúster. Vaya a Administrar -> Equilibrador de carga. Se mostrará a continuación:

La implementación de ProxySQL requiere que complete cierta información, como la dirección IP donde desea instalar ProxySQL, contraseña para administración y supervisión de usuarios, y habilitar la instancia para equilibrar la carga. Después de eso, simplemente haga clic en Implementar. Para una alta disponibilidad, necesita al menos 2 balanceadores de carga instalados frente a la base de datos.

Configuración de mantenimiento

El servicio Keepalived se usa para hacer que su balanceador de carga esté altamente disponible. La configuración es realmente sencilla, aún en la página Load Balancer, hay una pestaña para Keepalived como se muestra a continuación:

Elija el tipo de implementación del balanceador de carga, en este caso usamos ProxySQL, seleccione el servicio ProxySQL para keepalived. Complete la dirección IP virtual y la interfaz de red. Después de eso, simplemente haga clic en Implementar Keepalived, automáticamente activará un nuevo trabajo para configurar el servicio.

Configuración de la aplicación

Antes de configurar la aplicación Moodle, debe preparar las credenciales de usuario y la base de datos en sí. Para las credenciales, puede ir a:Administrar -> Esquemas y usuarios.

Debe completar cierta información, por ejemplo:nombre de usuario, contraseña, nombre de host y privilegio. Después de eso, simplemente haga clic en Crear usuario. Esto le permite crear un usuario para la aplicación moodle:

Para crear la base de datos, puede elegir la pestaña Crear base de datos en el mismo página como Usuarios.

El siguiente paso es configurar las credenciales en el lado de ProxySQL, puede importar el credenciales que había creado en ProxySQL. Puede ir al nodo ProxySQL, elegir la pestaña Usuarios, hay un botón Importar usuario en el lado derecho.

Busque el usuario moodle_application y luego seleccione el usuario. En la página siguiente, debe definir el grupo de host predeterminado para el usuario y luego importar usuarios.

Repita los pasos para importar los usuarios en el otro nodo ProxySQL, o puede utilizar Instancias de sincronización en el menú ProxySQL.

Debe descargar la aplicación Moodle del sitio web oficial de Moodle (re. https ://download.moodle.org/), la última versión cuando se escribe este blog es 3.9.1. Proporcionan dos tipos de archivos comprimidos, el zip comprimido y el tar zip. Descargue el archivo zip y coloque el archivo en sus servidores de aplicaciones. Consulte los requisitos para el software Moodle, es decir:servidor web, biblioteca PHP.

Extraiga los archivos zip al directorio temporal, cree el directorio /var/www/html/moodle, copie el directorio extraído a la carpeta. No olvide dar permiso 0755 para el directorio. Después de eso, puede acceder al navegador web para la siguiente configuración. Elija el idioma como se muestra a continuación:

Seleccione el controlador de base de datos para su configuración de MySQL como se muestra a continuación:

Debe completar la información de las credenciales de la base de datos que había creado anteriormente, para ejemplo:nombre de usuario, contraseña, host, base de datos, puerto. El nombre de host debe ser su dirección IP virtual y el puerto es el puerto ProxySQL, que es 6032.

El host de la base de datos sería su dirección IP virtual. Una vez que haya completado los campos, haga clic en Siguiente y listo.

Crear una base de datos de alta disponibilidad para Moodle usando ClusterControl es muy fácil y directo, puede crear su propia base de datos que soportará el 99,99 % del tiempo de actividad del servicio.