Moodle is een open source leerbeheersysteem dat veel wordt gebruikt door scholen en universiteiten over de hele wereld. Het project is in 2002 gestart door Martin Dougiamas, met als doel leerlingen, docenten en onderwijzers een veilig, robuust, open en gratis platform voor leeromgevingen te bieden.
De software zelf is geschreven in PHP en ondersteunt verschillende RDBMS, zoals:Oracle, MySQL, PostgreSQL, MariaDB, enz.
In deze blog bespreken we hoe u de Moodle-database veerkrachtig kunt maken met MySQL-replicatie, die nodig is om een Moodle-implementatie met hoge beschikbaarheid te ondersteunen. We zullen via ClusterControl een database-setup implementeren die bestaat uit master/slave MySQL-replicatie, ondersteund door redundante database-load balancers.
Architectuur
MySQL-replicatie is een populaire manier om redundantie voor de database te bereiken. Het is belangrijk om ervoor te zorgen dat alle schrijfbewerkingen naar de master worden verzonden, terwijl de leesbewerkingen tussen de slaves kunnen worden verdeeld. Om dat te doen, zullen we ProxySQL gebruiken, een databasebewuste load balancer die zorgt voor het splitsen van het schrijfverkeer en het naar de master stuurt. Omdat de masterrol naar een andere server kan worden verplaatst, bijvoorbeeld in het geval van een databasecrash, kan ProxySQL de nieuwe master volgen en ervoor zorgen dat het schrijfverkeer dienovereenkomstig wordt gerouteerd. Een VirtualIP wordt beheerd door Keepalive om te zorgen voor één veerkrachtig database-eindpunt voor alle Moodle-toepassingsservers.
Bewaking en failoverbeheer
In het bovenstaande diagram stellen we twee replica's voor die gebruik maken van de hoofddatabase. In het geval van een mastercrash, wordt een van de replica's gepromoveerd tot nieuwe master. Er zal nog steeds een replica over zijn om zaken als leesbewerkingen, back-ups, rapportage, enz. af te handelen.
De toepassingsverbinding maakt gebruik van een VIP (virtueel IP-adres) in de databaseverbindingsreeks, dus als er iets gebeurt aan de databasezijde, minimaliseert dit de impact van uw toepassing en hoeft u niet opnieuw te configureren iets. ClusterControl is het onderdeel dat de databases in de gaten houdt en failover automatiseert, bijvoorbeeld het promoveren van een van de replica's naar nieuwe master en het herstellen van de defecte databaseserver.
Database instellen
We zullen ClusterControl gebruiken om onze database-setup te implementeren.
Eerst hebt u een speciale server nodig voor het instellen van ClusterControl. De installatie is heel eenvoudig, je hoeft alleen maar install-cc te downloaden uit de repository van meerdere negens, toestemming te geven voor het uitvoeren van het bestand en het uit te voeren. Zoals hieronder weergegeven:
$ wget http://www.severalnines.com/downloads/cmon/install-cc
$ chmod +x install-cc
$ sudo ./install-cc # omit sudo if you run as root
Je kunt het bovenstaande script in elke Linux-variant uitvoeren. Het zal alles implementeren wat ClusterControl nodig heeft.
Zodra u ClusterControl actief hebt, kiest u de knop Deploy in het ClusterControl-dashboard.
Er wordt een nieuwe pagina weergegeven met enkele opties. We kiezen de eerste Deploy-optie voor onze MySQL-replicatieconfiguratie.
U moet toegang hebben tot de doeldatabaseserver via SSH. Vergeet niet om wachtwoordloze SSH in te schakelen en sudo toegang te geven aan de gebruiker. Definieer de clusternaam en klik op Doorgaan zoals hieronder weergegeven:
Op de volgende pagina moet u de leverancier van de database kiezen, versie van de database die u wilt installeren, het root-wachtwoord, serverpoort als u aangepaste of specifieke poorten wilt hebben, en MySQL-gegevensmap.
Nadat alle informatie is ingevuld, kunt u naar de volgende stap gaan, dat is Definieer de pagina Topologie. Vul het ip-adres van de databaseserver in, in dit geval omdat we de MyQL-replicatie hebben ingesteld met 1 master en 2 replica's.
Deploy activeert nu een taak die "Cluster maken" zal moet wachten tot de taak is voltooid.
ProxySQL-configuratie
Nadat de database is geïmplementeerd, kunt u de Load Balancer vanuit uw clustermenu doorlopen. Ga naar Beheren -> Load Balancer. Het wordt als volgt weergegeven:
Voor het implementeren van ProxySQL moet u bepaalde informatie invullen, zoals het IP-adres waar u ProxySQL, wachtwoord voor beheer en monitoring van gebruikers, wilt installeren en de instantie wilt laten verdelen over de belasting. Klik daarna op Implementeren. Voor hoge beschikbaarheid heeft u minimaal 2 load balancers nodig die vóór de database zijn geïnstalleerd.
Installatie behouden
Keepalived-service wordt gebruikt om uw load balancer maximaal beschikbaar te maken. De installatie is heel eenvoudig, nog steeds op de Load Balancer-pagina is er een tabblad voor Keepalive zoals hieronder weergegeven:
Kies het type load balancer-implementatie, in dit geval gebruiken we ProxySQL, selecteer de ProxySQL-service voor keepalive. Vul het virtuele IP-adres en de netwerkinterface in. Klik daarna op Deploy Keepalived, het zal automatisch een nieuwe taak activeren om de service in te stellen.
Toepassing instellen
Voordat je de Moodle-toepassing instelt, moet je de gebruikersgegevens en de database zelf voorbereiden. Voor de inloggegevens gaat u naar:Beheren -> Schema's en gebruikers.
Je moet wat informatie invullen, bijvoorbeeld:gebruikersnaam, wachtwoord, hostnaam en voorrecht. Klik daarna op Gebruiker maken. Hiermee kunt u een gebruiker voor de Moodle-toepassing maken:
Voor het maken van de database kunt u op hetzelfde pagina als gebruikers.
De volgende stap is het configureren van de inloggegevens aan de ProxySQL-kant, u kunt de referenties die u had gemaakt in ProxySQL. U kunt naar het ProxySQL-knooppunt gaan, het tabblad Gebruikers kiezen, er is een knop Gebruiker importeren aan de rechterkant.
Zoek de moodle_application-gebruiker en selecteer de gebruiker. Op de volgende pagina moet u de standaard Hostgroep voor de gebruiker definiëren en vervolgens Gebruikers importeren.
Herhaal de stappen om de gebruikers op het andere ProxySQL-knooppunt te importeren, of u kunt de Sync-instanties in het ProxySQL-menu gebruiken.
Je moet de Moodle-applicatie downloaden van de officiële Moodle-website (re. https ://download.moodle.org/), de laatste versie bij het schrijven van deze blog is 3.9.1. Ze bieden twee soorten gecomprimeerde bestanden, de gecomprimeerde zip en de tar-zip. Download het zipbestand en plaats het bestand op uw applicatieservers. Bekijk de vereisten voor Moodle-software, dat wil zeggen:Web Server, PHP-bibliotheek.
Pak de zip-bestanden uit in de tijdelijke map, maak de map /var/www/html/moodle aan, kopieer de uitgepakte map naar de map. Vergeet niet om 0755 toestemming te geven voor de directory. Daarna hebt u toegang tot de webbrowser voor de volgende installatie. Kies de taal zoals hieronder weergegeven:
Selecteer het databasestuurprogramma voor uw MySQL-configuratie zoals hieronder:
Je moet de gegevens van de databasegegevens invullen die je eerder had gemaakt, voor voorbeeld:gebruikersnaam, wachtwoord, host, database, poort. De hostnaam moet uw virtuele IP-adres zijn en de poort is ProxySQL-poort, dat is 6032.
De databasehost is uw virtuele IP-adres. Nadat u de velden heeft ingevuld, klikt u op Volgende en bent u klaar.
Het bouwen van een zeer beschikbare database voor Moodle met behulp van ClusterControl is heel eenvoudig en ongecompliceerd, u kunt uw eigen database bouwen die uw 99,99% service-uptime ondersteunt.