Le piattaforme del sistema di gestione dell'apprendimento (LMS) ti consentono di apprendere/insegnare a distanza, cosa davvero importante vista la situazione attuale in tutto il mondo.
Detto questo, possiamo anche dire che l'alta disponibilità è un must in questo tipo di piattaforma, altrimenti potrebbe non essere accessibile quando è necessario.
In questo blog, vedremo come distribuire un database MariaDB per l'alta disponibilità da utilizzare per una delle opzioni della piattaforma LMS più popolari, Chamilo LMS.
Cos'è Chamilo?
Chamilo LMS è un Learning Management System (LMS) gratuito progettato per l'istruzione online e sviluppato grazie alla collaborazione di molte aziende e sviluppatori individuali.
Come insegnante, utilizzando Chamilo puoi accedere a una serie di strumenti utili per creare un ambiente di apprendimento efficace. Alcuni di questi strumenti sono:
- Importa o crea documenti (audio, video, immagini) e pubblicali
- Crea test ed esami con punteggi e feedback automatizzati come richiesto
- Imposta e ricevi incarichi virtuali
- Descrivi le componenti del corso attraverso sezioni descrittive
- Comunica tramite forum o chat
- Pubblica annunci
- Aggiungi collegamenti
- Crea gruppi di lavoro o gruppi di laboratorio
- Imposta un'aula virtuale
- Crea sondaggi
- Aggiungi un wiki per creare documenti in modo collaborativo
- Utilizza un glossario e un'agenda
- Abilita il monitoraggio degli studenti nei tuoi corsi
- Registra le presenze
- Elabora un diario di classe e altro ancora
La piattaforma Chamilo è estremamente flessibile. Tutti i suoi strumenti possono essere personalizzati in base alle esigenze di ogni corso. Fornisce un'interfaccia utente amichevole e intuitiva che non richiede conoscenze o abilità tecniche precedenti.
Quindi, la domanda è:come puoi distribuire un database MariaDB per l'alta disponibilità da utilizzare per questo sistema?
Database MariaDB per alta disponibilità
Esistono diversi approcci per distribuire un database MariaDB per l'alta disponibilità. Vediamo le due opzioni principali.
Replica master-slave MariaDB
Puoi eseguire una configurazione master-slave utilizzando la replica asincrona o semi-sincrona. Il vantaggio di questa semplice opzione è che, quando il master non è disponibile, puoi promuovere uno degli slave e continuare a lavorare come al solito. Il problema principale con questa configurazione è che il failover deve essere eseguito manualmente o anche utilizzando uno strumento esterno come ClusterControl. Significa che avrai un (breve) tempo di inattività, che potrebbe essere accettabile o meno per la tua attività.
Cluster MariaDB
Un altro approccio sarebbe utilizzare un cluster Galera per archiviare i dati da Chamilo LMS. Puoi iniziare a usarlo con tre nodi e può gestire automaticamente l'errore di uno di questi nodi. I restanti due nodi continueranno a funzionare ricevendo connessioni dall'applicazione Chamilo. Significa che in questo caso non avrai tempi di inattività, ma poiché si tratta di una topologia più complessa, avrai bisogno di maggiori conoscenze su questa tecnologia e, a seconda del carico di lavoro, potrebbe non essere l'opzione migliore.
Bilanciatori di carico
Per migliorare l'alta disponibilità, entrambe le opzioni richiederanno un Load Balancer davanti a loro, che gestirà il traffico e lo reindirizzerà a un nodo disponibile/integro.
ProxySQL è un sistema di bilanciamento del carico dedicato per MySQL che viene fornito con una varietà di funzionalità tra cui il reindirizzamento delle query, la memorizzazione nella cache delle query e la modellazione del traffico. Può essere utilizzato per impostare facilmente una suddivisione in lettura-scrittura e reindirizzare le query a nodi back-end separati.
HAProxy è un sistema di bilanciamento del carico che distribuisce il traffico da un'origine a una o più destinazioni e può definire regole e/o protocolli specifici per questa attività. Se una qualsiasi delle destinazioni smette di rispondere, viene contrassegnata come offline e il traffico viene inviato alle altre destinazioni disponibili.
Keepalived è un servizio che consente di configurare un indirizzo IP virtuale all'interno di un gruppo di server attivo/passivo. Questo indirizzo IP virtuale è assegnato a un server attivo. Se questo server si guasta, l'indirizzo IP viene automaticamente migrato sul server passivo "Secondario", consentendogli di continuare a lavorare con lo stesso indirizzo IP in modo trasparente per i sistemi.
L'utilizzo di un solo nodo Load Balancer aggiungerà un singolo punto di errore nella topologia, quindi è possibile utilizzare la combinazione di ProxySQL+Keepalived o HAProxy+Keepalived utilizzando due nodi Load Balancer (almeno) e Mantieniti in vita tra loro.
Ora, vediamo come ClusterControl può aiutarti a distribuire un database MariaDB aggiungendo Load Balancer e un indirizzo IP virtuale da utilizzare nella tua applicazione Chamilo.
Distribuzione del database Chamilo MariaDB
Ad esempio, implementeremo una replica master-slave MariaDB, che verrà utilizzata dall'applicazione Chamilo. Per questo, utilizzeremo ClusterControl per distribuire 2 nodi di database MariaDB (master-slave) e 2 bilanciatori di carico HAProxy con Keepalived configurato tra di loro.
Distribuzione del database MariaDB
Per eseguire un deployment da ClusterControl, seleziona semplicemente l'opzione “Deploy” e segui le istruzioni che appaiono.
Quando si seleziona MySQL Replication, è necessario specificare Utente, Chiave o Password e Porta per connetterti tramite SSH ai tuoi server. Puoi anche aggiungere un nome per il tuo nuovo cluster e se vuoi che ClusterControl installi per te il software e le configurazioni corrispondenti.
Dopo aver impostato le informazioni di accesso SSH, è necessario selezionare il fornitore del database /version e definire le credenziali del database, la porta e la directory dei dati. Puoi anche specificare quale repository utilizzare.
Nel passaggio successivo, devi aggiungere i tuoi server al cluster che creerai utilizzando l'indirizzo IP o il nome host.
Una volta terminata l'attività, puoi vedere il tuo nuovo cluster MariaDB nel schermata principale di ClusterControl.
Ora che hai creato il tuo cluster, puoi eseguire diverse attività su di esso, come aggiungere un Load Balancer o una nuova replica.
Distribuzione del sistema di bilanciamento del carico
Per eseguire una distribuzione di Load Balancer, seleziona l'opzione "Aggiungi Load Balancer" nelle azioni del cluster e completa le informazioni richieste.
Devi solo aggiungere IP o nome host, porta, criterio e il nodi che utilizzerai per il bilanciamento del carico. Puoi implementarlo utilizzando due porte diverse (lettura/scrittura e sola lettura) oppure puoi utilizzare solo una porta di lettura/scrittura per inviare tutto il traffico lì.
Distribuzione mantenuta
Per eseguire una distribuzione Keepalived, seleziona l'opzione "Aggiungi Load Balancer" nelle azioni del cluster, quindi vai alla scheda Keepalived.
Qui, seleziona i nodi HAProxy e specifica l'indirizzo IP virtuale che essere utilizzato per accedere al database.
Ora colleghiamo questo ambiente all'applicazione Chamilo.
Configurazione database Chamilo
Durante la distribuzione di Chamilo, nel passaggio 4, dovrai aggiungere la configurazione del database.
Qui dovresti usare l'indirizzo IP virtuale per accedere al tuo database MariaDB e le credenziali del database.
Per maggiori dettagli sulla configurazione di Chamilo puoi fare riferimento alla Documentazione Ufficiale.
Ecco fatto! La tua applicazione Chamilo utilizza un database MariaDB con disponibilità elevata.
Funzione di ripristino automatico ClusterControl
In caso di errore, ClusterControl promuoverà il nodo slave più avanzato a master e ti avviserà del problema. Inoltre, esegue il failover del resto dei nodi slave per replicare dal nuovo server master.
Per impostazione predefinita, HAProxy è configurato con due porte diverse:lettura-scrittura e sola lettura. Nella porta di lettura-scrittura, hai il tuo nodo master come online e il resto dei nodi come offline, e nella porta di sola lettura hai sia il nodo master che quello slave online.
Quando HAProxy rileva che uno dei tuoi nodi non è accessibile, lo contrassegna automaticamente come offline e non ne tiene conto per l'invio del traffico ad esso. Il rilevamento viene eseguito dagli script di controllo dello stato configurati da ClusterControl al momento della distribuzione. Questi controllano se le istanze sono attive, se sono in fase di ripristino o sono di sola lettura.
Quando ClusterControl promuove un nodo slave, HAProxy contrassegna il vecchio master come offline per entrambe le porte e mette il nodo promosso online nella porta di lettura-scrittura.
Se il tuo HAProxy attivo, a cui è assegnato un indirizzo IP virtuale a cui si connettono i tuoi sistemi, fallisce, Keepalived migra automaticamente questo indirizzo IP al tuo HAProxy passivo. Ciò significa che i tuoi sistemi potranno continuare a funzionare normalmente.
Distribuzione del database MariaDB tramite ClusterControl CLI
Se si preferisce distribuire il cluster MariaDB utilizzando la riga di comando, è possibile utilizzare lo strumento client della riga di comando ClusterControl chiamato "s9s". Questo strumento invierà un processo di distribuzione al server ClusterControl ed eseguirà tutti i passaggi necessari per distribuire il cluster.
Ad esempio, puoi eseguire il seguente comando sul server ClusterControl per creare una replica master-slave 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
Vedrai il registro del lavoro nella console in modo da poter monitorare l'avanzamento della distribuzione lì, oppure puoi anche monitorare l'avanzamento del lavoro dall'interfaccia utente di ClusterControl -> Attività -> Lavori. Al termine, puoi vederlo elencato nell'interfaccia utente di ClusterControl.
Conclusione
In questo blog, abbiamo menzionato alcune opzioni per distribuire un database MariaDB per l'alta disponibilità utilizzando ClusterControl e come utilizzarlo su un'applicazione Chamilo LMS.
Abbiamo utilizzato una semplice distribuzione master-slave aggiungendo bilanciatori del carico per migliorare l'alta disponibilità su questa topologia, ma puoi migliorare ulteriormente questo ambiente utilizzando un approccio diverso come Galera+ProxySQL o una combinazione diversa di essi .