Moodle er et meget kendt Learning Management System, som er beregnet til at hjælpe uddannelsesorganisationer med at organisere deres online læringsaktiviteter. Som du kan forestille dig, i betragtning af onlineskiftet i 2020 forårsaget af COVID-19, blev sådanne systemer meget populære, og den belastning, som disse systemer skal håndtere, er steget betydeligt. Mange administratorer spekulerer på, hvordan man kan forbedre ydeevnen af databasen, der sikkerhedskopierer Moodle-installationen. Heldigvis, hvis du kører Moodle 3.9 eller nyere, har du nogle indbyggede muligheder, der kan hjælpe dig med at øge ydeevnen. I dette blogindlæg viser vi dig, hvordan du gør det.
Først og fremmest antager vi, at du har en Moodle-installation med en enkelt databaseknude. Lad os tage et kig på de trin, du måske ønsker at tage for at forbedre ydeevnen af din Moodle-database. Selvfølgelig kan alle de trin, vi forklarer her, udføres i hånden. Vi vil bruge ClusterControl til det, da vi værdsætter vores tid.
Forudsat at du har ClusterControl installeret, vil det første trin være at importere en eksisterende databasenode.
SSH-forbindelsen ved hjælp af en nøgle uden adgangskode skal være på plads. Vi har det sat op som en root-bruger med en SSH-nøgle placeret i /root/.ssh/id_rsa.
Som næste trin definerede vi superbrugeren og dens adgangskode. Vi aktiverede også informationsskema-forespørgsler (som vi ved, at vi ikke har titusindvis af tabeller) og begge autogendannelsesmuligheder, så ClusterControl vil være i stand til at gendanne vores database, hvis det er nødvendigt.
Efter et kort øjeblik vises vores database på listen over klynger:
Nu kan vi begynde at skalere vores klynge ud ved at tilføje flere slaver. Vi bør sikre, at masteren har binære logfiler aktiveret. Hvis ikke, kan det gøres fra ClusterControl. Husk på, at aktivering af binære logfiler kræver genstart, så du vil sandsynligvis gøre det på et tidspunkt, hvor belastningen er den laveste, og ideelt set giver brugerne af din Moodle-platform nogle beskeder.
Vi har videregivet IP (eller værtsnavn) for den node, vi vil bruge som slave. ClusterControl forsyner den med dataene fra vores masterknude. Vi kunne også bruge sikkerhedskopier til at klargøre en slave, men vi har ikke taget nogen sikkerhedskopier ved hjælp af ClusterControl indtil videre.
Installationen vil tage et par minutter, vi kan følge udviklingen ved at se ved jobloggene i ClusterControl.
At tilføje en slave til vores system gør ingen forskel. Vi er nødt til at fortælle Moodle om faktisk at begynde at bruge det. Heldigvis har Moodle en funktion, der lader dig konfigurere slaveknuder, og så vil de "sikre" skrivninger blive omdirigeret til dem, hvilket reducerer belastningen på masteren og forbedrer den samlede ydeevne.
I konfigurationsfilen (config-dist.php) kan du se 'skrivebeskyttet' sektionen af 'dboptions'-arrayet. På det sted kan du definere en eller flere slaveknuder, som Moodle bruger til at sende trafikken til.
'readonly' => [ // Set to read-only slave details, to get safe reads
// from there instead of the master node. Optional.
// Currently supported by pgsql and mysqli variety classes.
// If not supported silently ignored.
'instance' => [ // Readonly slave connection parameters
[
'dbhost' => '10.0.0.132',
'dbport' => '', // Defaults to master port
'dbuser' => '', // Defaults to master user
'dbpass' => '', // Defaults to master password
],
[...],
],
Som du kan se, kan vi tilføje mere end én slavevært, hvilket giver os mulighed for at sprede de sikre læsninger på tværs af flere noder, som du nemt kan levere fra ClusterControl og reducere belastningen på klyngen.
Hvis du er interesseret i mere avancerede, meget tilgængelige databaseopsætninger til Moodle, har vi flere blogindlæg om dette emne, der blandt andet beskriver, hvordan du kan bruge Moodle med Galera Cluster som backend. Vi beskrev også de mere avancerede skaleringsteknikker til Moodle, der involverer ProxySQL-belastningsbalancering.
Fortæl os dine tanker og erfaringer med at arbejde med Moodle.