Mysql
 sql >> Database >  >> RDS >> Mysql

Come migrare Moodle autonomo a una configurazione scalabile di database in cluster

L'apprendimento online al giorno d'oggi sta rapidamente guadagnando terreno da quando si è verificata la pandemia di COVID-19. La maggior parte delle istituzioni educative deve creare piattaforme per l'apprendimento online e praticamente tutti gli studenti devono accedere alla piattaforma per l'apprendimento e interagire con gli insegnanti. Moodle è uno dei sistemi di gestione dell'apprendimento open source per l'apprendimento online, 

Avere un'elevata disponibilità della piattaforma Moodle è un must per le istituzioni, altrimenti interromperà e interromperà il processo di apprendimento online. Con molti studenti che accedono alla piattaforma contemporaneamente, la disponibilità e la scalabilità sono importanti. A questo punto, le istituzioni educative devono avere conoscenze e progettare l'elevata disponibilità e scalabilità della piattaforma di Moodle. Se desideri saperne di più su come migrare Moodle autonomo in un database scalabile in cluster, puoi seguire queste linee guida.

Moodle in modalità "Punto di guasto singolo"

La piattaforma Moodle standalone è composta da un server e tutto ciò che è installato sul server (il database e il server delle applicazioni in un unico posto). Oppure hai 2 server, che sono per il server delle applicazioni e il server del database come descritto nell'immagine seguente:

Entrambe le architetture mancano della disponibilità e della scalabilità del servizio. Dal punto di vista della disponibilità, puoi immaginare che se il server si arresta in modo anomalo, non ci sono servizi in esecuzione sul server. Se il server delle applicazioni si arresta in modo anomalo o il database si arresta in modo anomalo, il servizio smette di funzionare.

D'altra parte, anche la scalabilità è importante, più utenti significano più traffico e più connessioni al database. La scalabilità può essere ottenuta aggiungendo più risorse nei server o aggiungendo più server in modo che il traffico possa essere distribuito tra i nodi, altrimenti le prestazioni ne risentiranno.

Conversione da database autonomo a database in cluster

La migrazione del nodo autonomo a un database in cluster potrebbe richiedere del tempo e non è un'operazione priva di rischi. Di seguito sono riportati i passaggi che dobbiamo compiere:

  1. Devi fare un backup (usa mysqldump o xtrabackup).
  2. Installa il database in tutti i nodi del database di replica.
  3. Ripristina il backup nei nodi di replica.
  4. Collega il nodo di replica al master.
  5. Imposta ProxySQL e mantieni attivo di fronte ai nodi del database
  6. Configura i bilanciatori di carico ProxySQL (es. crea gruppi host, server, utenti).
  7. Punta la configurazione di Moodle sul nuovo indirizzo IP virtuale.

Come ClusterControl può aiutare 

ClusterControl è un software di gestione del database che ti aiuta a distribuire, monitorare e gestire il tuo database open source. Proveremo a migrare dall'architettura Moodle standalone come mostrato di seguito:

In un'architettura di database in cluster basata sulla replica:

Avrai bisogno di almeno due server per il database e due per il database proxy (useremo ProxySQL come sistema di bilanciamento del carico) e servizio keepalived per servire un indirizzo IP virtuale.

Supponendo di avere un database MySQL autonomo in esecuzione:

L'aggiunta di più nodi di database in ClusterControl è davvero semplice, puoi andare al Menu del cluster sul lato destro del cluster e Aggiungi slave di replica.

Mostrerà una nuova finestra di dialogo per l'aggiunta di un nuovo slave, devi solo riempire l'indirizzo IP e quindi fare clic sul pulsante Aggiungi nuovo slave come mostrato di seguito:

Come puoi vedere dallo screenshot, è possibile eseguire il seeding dello slave con i dati di un backup esistente. Questo per evitare lo streaming di tutti i dati dal database master in esecuzione. Una volta distribuito, il database slave verrà caricato con i dati master e ClusterControl si assicurerà che lo slave si sincronizzi con il master.

Puoi ripetere il passaggio per aggiungere un altro nodo di replica.

La nuova architettura sarà la seguente:

Il passaggio successivo consiste nell'aggiungere un sistema di bilanciamento del carico davanti al database. Un sistema di bilanciamento del carico come ProxySQL è utile in quanto può reindirizzare le richieste di scrittura al master e le richieste di lettura agli slave. In questo modo, stai distribuendo il traffico Moodle. Si noti che è anche possibile eseguire una configurazione master-master basata su Galera Cluster per MySQL o MariaDB.

Utilizzeremo due sistemi di bilanciamento del carico per un'elevata disponibilità. Puoi andare su Gestisci -> Bilanciatori di carico nel cluster.

È necessario inserire alcune informazioni come indirizzo del server, password amministrativa e di monitoraggio, aggiungi l'utente moodle in ProxySQL, quindi fai semplicemente clic su Distribuisci ProxySQL. Innescherà un nuovo lavoro. Ripetere la distribuzione sull'altro nodo del servizio di bilanciamento del carico.

L'ultima cosa è configurare keepalived per i sistemi di bilanciamento del carico. Vai su Gestisci -> Bilanciatori di carico, c'è una scheda per Keepalived

Devi solo scegliere il tipo di bilanciamento del carico e aggiungerlo a keepalived . Riempi l'indirizzo IP virtuale e l'interfaccia di rete. Fai clic sul pulsante Distribuisci Keepalived.

L'architettura finale del nostro database Moodle ad alta disponibilità in cluster sarà la seguente:

Devi solo cambiare la configurazione della connessione in config.php puntando a dbhost all'indirizzo IP virtuale che avevamo configurato.

Dopo che tutto è migrato al database cluster, potresti voler inserire un po' di monitoraggio nel tuo database Moodle, che puoi seguire questa linea guida.