Online læring i dag vinder hurtigt indpas, siden COVID-19-pandemien fandt sted. De fleste af uddannelsesinstitutionerne skal oprette platforme for online læring, og stort set alle studerende skal have adgang til platformen for at lære og interagere med lærerne. Moodle er et af open source-læringsstyringssystemer til online læring,
At have høj tilgængelighed af Moodle-platformen er et must for institutioner, ellers vil det afbryde og stoppe online-læringsprocessen. Med mange studerende, der har adgang til platformen på samme tid, er tilgængeligheden og skalerbarheden vigtig. På dette tidspunkt skal uddannelsesinstitutionerne have viden og arkitektonisk platforms høj tilgængelighed og skalerbarhed af Moodle. Hvis du gerne vil vide mere om, hvordan du migrerer selvstændig Moodle til en Clustered Database Scalable, kan du følge denne guideline.
Moodle i tilstanden "Single Point of Failure"
Den selvstændige Moodle-platform består af én server og alt installeret på serveren (databasen og applikationsserveren på ét sted). Eller du har 2 servere, som er til applikationsserveren og databaseserveren som beskrevet på billedet nedenfor:
Begge arkitekturer mangler tilgængeligheden og skalerbarheden af tjenesten. Fra tilgængelighedsperspektivet kan du forestille dig, at hvis serveren går ned, har du ingen tjenester kørende på serveren. Hvis applikationsserveren går ned eller databasen går ned, holder tjenesten op med at fungere.
På den anden side er skalerbarhed også vigtig, flere brugere betyder mere trafik og flere forbindelser til databasen. Skalerbarhed kan opnås ved at tilføje flere ressourcer i serverne eller tilføje flere servere, så trafikken kan fordeles på tværs af noderne, ellers vil ydeevnen lide.
Konvertering fra selvstændig til klyngedatabase
Migrering af din selvstændige node til en klyngedatabase kan tage noget tid, og det er ikke en risikofri operation. Nedenfor er de trin, vi skal tage:
- Du skal tage en sikkerhedskopi (brug mysqldump eller xtrabackup).
- Installer database i alle replika-databasenoder.
- Gendan sikkerhedskopien i replikaknuderne.
- Forbind replika-noden til masteren.
- Opsæt ProxySQL og hold live foran databasenoderne
- Konfigurer ProxySQL-belastningsbalancerne (f.eks. opret værtsgrupper, servere, brugere).
- Peg Moodle-konfigurationen til den nye virtuelle IP-adresse.
Hvordan ClusterControl kan hjælpe
ClusterControl er databasestyringssoftware, der hjælper dig med at implementere, overvåge og administrere din open source-database. Vi vil forsøge at migrere fra selvstændig Moodle-arkitektur som vist nedenfor:
Til en klynget databasearkitektur baseret på replikering:
Du skal bruge mindst to servere til databasen og to til databasen proxy (vi bruger ProxySQL som belastningsbalancer) og keepalive-tjeneste til at betjene en virtuel IP-adresse.
Forudsat at vi har en selvstændig MySQL-database kørende:
At tilføje flere databasenoder i ClusterControl er virkelig ligetil, du kan gå til Klyngemenu på højre side af din klynge og Tilføj replikeringsslave.
Det vil vise en ny dialog for Tilføjelse af ny slave, du skal bare udfylde IP-adressen, og klik derefter på knappen Tilføj ny slave som vist nedenfor:
Som du kan se på skærmbilledet, er det muligt at seede slaven med data fra en eksisterende backup. Dette er for at undgå at streame alle data fra den kørende masterdatabase. Når først slavedatabasen er implementeret, vil den blive primet med masterdata, og ClusterControl sørger for, at slaven synkroniserer med masteren.
Du kan gentage trinnet for at tilføje endnu en replika-node.
Den nye arkitektur vil være som vist nedenfor:
Det næste trin er at tilføje en load balancer foran databasen. En load balancer som ProxySQL er nyttig, da den kan omdirigere skriveanmodninger til masteren og læseanmodningerne til slaverne. På denne måde distribuerer du Moodle-trafikken. Bemærk, at det også er muligt at lave en master-master opsætning baseret på Galera Cluster til MySQL eller MariaDB.
Vi vil bruge to belastningsbalancere for høj tilgængelighed. Du kan gå til Administrer -> Load Balancers i klyngen.
Du skal udfylde nogle oplysninger som f.eks. serveradresse, administrations- og monitoradgangskode, tilføj moodle-brugeren til ProxySQL, og klik derefter på Deploy ProxySQL. Det vil udløse et nyt job. Gentag implementeringen på den anden belastningsbalancer node.
Sidste ting er at konfigurere Keepalive for belastningsbalancerne. Gå til Administrer -> Load Balancers, der er fane for Keepalived
Du skal bare vælge load balancer-typen og tilføje den til keepalived . Udfyld den virtuelle IP-adresse og netværksgrænsefladen. Klik på Implementer Keepalive-knappen.
Den endelige arkitektur af vores klyngede højtilgængelige Moodle-database vil være som vist nedenfor:
Du skal bare ændre forbindelseskonfigurationen i config.php og pege på dbhost til den virtuelle IP-adresse, som vi havde konfigureret.
Efter alt er migreret til Clustered Database, vil du måske lægge noget overvågning i din Moodle-database, som du kan følge denne guideline.