Moodle è un sistema di gestione dell'apprendimento open source, ampiamente utilizzato da scuole e università di tutto il mondo. Il progetto è iniziato nel 2002 da Martin Dougiamas, con l'obiettivo di fornire a studenti, insegnanti, educatori una piattaforma sicura, solida, aperta e gratuita per ambienti di apprendimento.
Il software stesso è scritto in PHP e supporta vari RDBMS, come:Oracle, MySQL, PostgreSQL, MariaDB, ecc.
In questo blog, discuteremo come rendere resiliente il database Moodle utilizzando la replica MySQL, necessaria per supportare un'implementazione Moodle ad alta disponibilità. Distribuiremo tramite ClusterControl una configurazione del database composta da una replica MySQL master/slave supportata da sistemi di bilanciamento del carico del database ridondanti.
Architettura
La replica MySQL è un modo popolare per ottenere la ridondanza del database. È importante assicurarsi che tutte le scritture vengano inviate al master, mentre le letture possono essere bilanciate nel carico tra gli slave. Per fare ciò, utilizzeremo ProxySQL che è un sistema di bilanciamento del carico sensibile al database che si occupa di dividere il traffico di scrittura e di inviarlo al master. Poiché il ruolo master può spostarsi su un altro server, ad esempio in caso di arresto anomalo del database, ProxySQL può tenere traccia del nuovo master e assicurarsi che il traffico di scrittura venga instradato di conseguenza. Un VirtualIP è gestito da Keepalived per garantire un endpoint del database resiliente per tutti i server delle applicazioni Moodle.
Monitoraggio e gestione del failover
Nel diagramma sopra, suggeriamo due replicazioni che assorbono il database master. In caso di arresto anomalo del master, una delle repliche verrà promossa a nuovo master. Rimarrà ancora una replica per gestire cose come letture, backup, report e così via
La connessione dell'applicazione utilizza un VIP (indirizzo IP virtuale) nella stringa di connessione del database, quindi se accade qualcosa sul lato database, ridurrà al minimo l'impatto dell'applicazione e non sarà necessario riconfigurare qualsiasi cosa. ClusterControl è il componente che tiene d'occhio i database e automatizza il failover, ad esempio promuovendo una delle repliche a nuovo master e ripristinando il server di database guasto.
Impostazione database
Utilizzeremo ClusterControl per implementare la configurazione del nostro database.
In primo luogo, è necessario disporre di un server dedicato per la configurazione di ClusterControl. L'installazione è molto semplice, devi solo scaricare install-cc dal repository diversinines, dare il permesso di esecuzione sul file ed eseguirlo. Come mostrato di seguito:
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
Puoi eseguire lo script sopra in qualsiasi tipo di variante Linux. Distribuirà tutto ciò che è richiesto da ClusterControl.
Una volta che ClusterControl è attivo e funzionante, scegli il pulsante Distribuisci dalla dashboard di ClusterControl.
Viene visualizzata una nuova pagina che mostra alcune opzioni. Sceglieremo la prima opzione di distribuzione per la nostra configurazione di replica MySQL.
È necessario avere accesso al server del database di destinazione tramite SSH. Non dimenticare di abilitare SSH senza password e di dare sudo l'accesso all'utente. Definisci il nome del cluster e fai clic su Continua come mostrato di seguito:
Nella pagina successiva, è necessario scegliere il fornitore del database, versione del database che desideri installare, la password di root, la porta del server se desideri avere porte personalizzate o specifiche e la directory dei dati MySQL.
Dopo che tutte le informazioni sono state inserite, puoi andare al passaggio successivo, che è la pagina Definisci la topologia. Inserisci l'indirizzo IP del server del database, in questo caso poiché impostiamo la replica MyQL con 1 master e 2 repliche.
La distribuzione ora attiverà un lavoro che "Crea cluster", basta devi aspettare fino al termine del lavoro.
Impostazione proxySQL
Dopo che il database è stato distribuito, puoi scorrere il Load Balancer dal menu del tuo cluster. Per favore vai su Gestisci -> Load Balancer. Verrà mostrato come di seguito:
La distribuzione di ProxySQL richiede la compilazione di alcune informazioni come l'indirizzo IP in cui si desidera installare ProxySQL, password per l'amministrazione e il monitoraggio degli utenti e abilitare il bilanciamento del carico dell'istanza. Successivamente, fai clic su Distribuisci. Per la disponibilità elevata, sono necessari almeno 2 bilanciatori di carico installati davanti al database.
Impostazione mantenuta
Il servizio Keepalived viene utilizzato per rendere il sistema di bilanciamento del carico altamente disponibile. L'installazione è davvero semplice, sempre nella pagina Load Balancer, c'è una scheda per Keepalived come mostrato di seguito:
Scegli il tipo di distribuzione del bilanciamento del carico, in questo caso utilizziamo ProxySQL, selezionare il servizio ProxySQL per Keep Alive. Inserisci l'indirizzo IP virtuale e l'interfaccia di rete. Dopodiché, fai clic su Distribuisci Keepalived, attiverà automaticamente un nuovo lavoro per configurare il servizio.
Impostazione dell'applicazione
Prima di configurare l'applicazione moodle, è necessario preparare le credenziali dell'utente e il database stesso. Per le credenziali, puoi andare su:Gestisci -> Schemi e Utenti.
È necessario inserire alcune informazioni, ad esempio:nome utente, password, nome host e privilegio. Successivamente, fai clic su Crea utente. Ciò ti consente di creare un utente per l'applicazione moodle:
Per creare il database, puoi scegliere la scheda Crea database sullo stesso pagina come Utenti.
Il passaggio successivo è configurare le credenziali lato ProxySQL, è possibile importare il credenziali che avevi creato in ProxySQL. Puoi andare al nodo ProxySQL, scegliere la scheda Utenti, c'è un pulsante Importa utente sul lato destro.
Cerca l'utente moodle_application, quindi seleziona l'utente. Nella pagina successiva, è necessario definire il gruppo host predefinito per l'utente e quindi Importa utenti.
Ripeti i passaggi per importare gli utenti sull'altro nodo ProxySQL oppure puoi utilizzare Sincronizza istanze nel menu ProxySQL.
Devi scaricare l'applicazione moodle dal sito web ufficiale di moodle (rif. https ://download.moodle.org/), l'ultima versione al momento della stesura di questo blog è la 3.9.1. Forniscono due tipi di file compressi, lo zip compresso e lo zip tar. Scarica il file zip e inserisci il file nei server delle applicazioni. Controlla i requisiti per il software moodle, ovvero:Web Server, libreria PHP.
Estrai i file zip nella directory temporanea, crea la directory /var/www/html/moodle, copia la directory estratta nella cartella. Non dimenticare di dare il permesso 0755 per la directory. Successivamente, è possibile accedere al browser Web per la configurazione successiva. Scegli la lingua come mostrato di seguito:
Seleziona il driver del database per la configurazione di MySQL come di seguito:
È necessario inserire alcune informazioni sulle credenziali del database che avevi creato in precedenza, per esempio:nome utente, password, host, database, porta. Il nome host dovrebbe essere il tuo indirizzo IP virtuale e la porta è la porta ProxySQL, che è 6032.
L'host del database sarebbe il tuo indirizzo IP virtuale. Dopo aver compilato i campi, fare clic su Avanti e il gioco è fatto.
Costruire un database ad alta disponibilità per Moodle utilizzando ClusterControl è molto semplice e diretto, puoi creare il tuo database che supporterà il tuo tempo di attività del servizio del 99,99%.