Learning Management System (LMS) platforme giver dig mulighed for at lære/undervise på afstand, noget der er virkelig vigtigt på grund af den nuværende situation rundt om i verden.
Når det er sagt, kan vi også sige, at høj tilgængelighed er et must i denne type platform, ellers kunne den ikke være tilgængelig, når det er nødvendigt.
I denne blog vil vi se, hvordan man implementerer en MariaDB-database for High Availability, der skal bruges til en af de mest populære LMS-platformsmuligheder, Chamilo LMS.
Hvad er Chamilo?
Chamilo LMS er et gratis Learning Management System (LMS) designet til online undervisning og udviklet i samarbejde med mange virksomheder og enkeltudviklere.
Som lærer kan du ved hjælp af Chamilo få adgang til en række nyttige værktøjer til at skabe et effektivt læringsmiljø. Nogle af disse værktøjer er:
- Importer eller opret dokumenter (lyd, video, billeder) og udgiv dem
- Byg test og eksamener med automatiserede scoringer og feedback efter behov
- Indstil og modtag virtuelle opgaver
- Beskriv komponenterne i kurset gennem beskrivelsessektioner
- Kommunikere gennem fora eller chat
- Offentliggør meddelelser
- Tilføj links
- Opret arbejdsgrupper eller laboratoriegrupper
- Opret et virtuelt klasseværelse
- Opret undersøgelser
- Tilføj en wiki for at oprette dokumenter i fællesskab
- Brug en ordliste og en dagsorden
- Aktivér sporing af elever i dine kurser
- Registrer tilstedeværelser
- Udarbejdelse af en klassedagbog og mere
Chamilo-platformen er ekstremt fleksibel. Alle dets værktøjer kan tilpasses efter behovene for hvert kursus. Det giver en venlig og intuitiv brugergrænseflade, der ikke kræver nogen speciel forudgående teknisk viden eller færdigheder.
Så spørgsmålet er, hvordan kan du implementere en MariaDB-database for High Availability, der skal bruges til dette system?
MariaDB-database for høj tilgængelighed
Der er forskellige tilgange til at implementere en MariaDB-database for høj tilgængelighed. Lad os se de to hovedmuligheder.
MariaDB Master-Slave Replication
Du kan køre en master-slave-opsætning ved hjælp af asynkron eller semi-synkron replikering. Fordelen ved denne enkle mulighed er, at når masteren ikke er tilgængelig, kan du promovere en af slaverne og fortsætte med at arbejde som normalt. Hovedproblemet med denne opsætning er, at failover skal udføres manuelt eller endda ved hjælp af et eksternt værktøj som ClusterControl. Det betyder, at du vil have en (kort) nedetid, som kan være acceptabel eller ej for din virksomhed.
MariaDB Cluster
En anden fremgangsmåde ville være at bruge en Galera Cluster til at gemme dataene fra Chamilo LMS. Du kan begynde at bruge det med tre noder, og det kan automatisk håndtere fejlen i en af disse noder. De resterende to noder vil fortsætte med at modtage forbindelser fra Chamilo-applikationen. Det betyder, at du ikke vil have nedetid i dette tilfælde, men da det er en mere kompleks topologi, vil du kræve mere viden om denne teknologi, og afhængigt af arbejdsbyrden kan det ikke være den bedste løsning.
Load Balancers
For at forbedre High Availability vil begge muligheder kræve en Load Balancer foran dem, som vil håndtere trafikken og omdirigere den til en tilgængelig/sund knude.
ProxySQL er en dedikeret belastningsbalancer til MySQL, som kommer med en række funktioner, herunder omdirigering af forespørgsler, cachelagring af forespørgsler og trafikformning. Det kan bruges til nemt at konfigurere en læse-skrive-split og omdirigere forespørgsler til separate backend-noder.
HAProxy er en belastningsbalancer, der distribuerer trafik fra én oprindelse til en eller flere destinationer og kan definere specifikke regler og/eller protokoller for denne opgave. Hvis en af destinationerne holder op med at svare, markeres den som offline, og trafikken sendes til resten af de tilgængelige destinationer.
Keepalived er en tjeneste, der giver dig mulighed for at konfigurere en virtuel IP-adresse inden for en aktiv/passiv gruppe af servere. Denne virtuelle IP-adresse er tildelt en aktiv server. Hvis denne server fejler, migreres IP-adressen automatisk til den "sekundære" passive server, så den kan fortsætte med at arbejde med den samme IP-adresse på en gennemsigtig måde for systemerne.
Brug af kun én Load Balancer-knude vil tilføje et enkelt fejlpunkt i din topologi, så du kan bruge kombinationen af ProxySQL+Keepalived eller HAProxy+Keepalived ved at bruge to Load Balancer-noder (mindst) og Hold i live mellem dem.
Lad os nu se, hvordan ClusterControl kan hjælpe dig med at implementere en MariaDB-database tilføjelse Load Balancers og en virtuel IP-adresse, der skal bruges i din Chamilo-applikation.
Chamilo MariaDB-databaseimplementering
Som et eksempel vil vi implementere en MariaDB Master-Slave-replikering, som vil blive brugt af Chamilo-applikationen. Til dette vil vi bruge ClusterControl til at implementere 2 MariaDB-databasenoder (master-slave) og 2 HAProxy Load Balancers med Keepalved konfigureret imellem dem.
MariaDB-databaseimplementering
For at udføre en implementering fra ClusterControl skal du blot vælge indstillingen "Deploy" og følge instruktionerne, der vises.
Når du vælger MySQL-replikering, skal du angive bruger, nøgle eller adgangskode og Port for at forbinde med SSH til dine servere. Du kan også tilføje et navn til din nye klynge, og hvis du ønsker, at ClusterControl skal installere den tilsvarende software og konfigurationer for dig.
Når du har konfigureret SSH-adgangsoplysningerne, skal du vælge databaseleverandøren /version, og definer databaselegitimationsoplysningerne, porten og databiblioteket. Du kan også angive, hvilket lager der skal bruges.
I næste trin skal du tilføje dine servere til den klynge, som du vil oprette ved hjælp af IP-adressen eller værtsnavnet.
Når opgaven er færdig, kan du se din nye MariaDB-klynge i hovedskærmen ClusterControl.
Nu har du oprettet din klynge, du kan udføre flere opgaver på den, som at tilføje en Load Balancer eller en ny replika.
Load Balancer-implementering
For at udføre en Load Balancer-implementering skal du vælge indstillingen "Tilføj Load Balancer" i klyngehandlingerne og udfylde de anmodede oplysninger.
Du behøver kun at tilføje IP eller værtsnavn, port, politik og noder du skal bruge til belastningsbalancering. Du kan implementere den ved hjælp af to forskellige porte (læse/skrive og skrivebeskyttet), eller du kan bruge kun én læse/skrive port til at sende al trafik dertil.
Keelived implementering
For at udføre en Keepalive-implementering skal du vælge indstillingen "Tilføj Load Balancer" i klyngehandlingerne og derefter gå til fanen Keepalved.
Her skal du vælge HAProxy-noder og angive den virtuelle IP-adresse, der vil bruges til at få adgang til databasen.
Lad os nu forbinde dette miljø med Chamilo-applikationen.
Chamilo-databasekonfiguration
Under Chamilo-implementeringen, i trin 4, skal du tilføje databasekonfigurationen.
Her skal du bruge den virtuelle IP-adresse til at få adgang til din MariaDB-database, og databasen legitimationsoplysninger.
For flere detaljer om Chamilo-konfigurationen kan du se den officielle dokumentation.
Det var det! Du har din Chamilo-applikation ved hjælp af en MariaDB-database med høj tilgængelighed.
ClusterControl Autogendannelsesfunktion
I tilfælde af fejl, vil ClusterControl promovere den mest avancerede slaveknude, der skal mestres, samt give dig besked om problemet. Det mislykkes også over resten af slaveknuderne at replikere fra den nye masterserver.
Som standard er HAProxy konfigureret med to forskellige porte:read-write og read-only. I read-write-porten har du din master-knudepunkt som online og resten af noderne som offline, og i read-only-porten har du både master- og slavenoderne online.
Når HAProxy registrerer, at en af dine noder ikke er tilgængelig, markerer den den automatisk som offline og tager den ikke i betragtning for at sende trafik til den. Detektion udføres af sundhedstjekscripts, der er konfigureret af ClusterControl på tidspunktet for implementeringen. Disse kontrollerer, om forekomsterne er oppe, om de er under gendannelse eller er skrivebeskyttede.
Når ClusterControl promoverer en slavenode, markerer HAProxy den gamle master som offline for begge porte og sætter den promoverede node online i læse-skriveporten.
Hvis din aktive HAProxy, som er tildelt en virtuel IP-adresse, som dine systemer forbinder til, fejler, migrerer Keepalved denne IP-adresse til din passive HAProxy automatisk. Det betyder, at dine systemer så kan fortsætte med at fungere normalt.
MariaDB-databaseimplementering ved hjælp af ClusterControl CLI
Hvis du foretrækker at implementere MariaDB Cluster ved hjælp af kommandolinje, kan du bruge ClusterControl-kommandolinjeklientværktøjet kaldet "s9s". Dette værktøj sender et implementeringsjob til ClusterControl-serveren, og det udfører alle de nødvendige trin for at implementere klyngen.
Du kan f.eks. køre følgende kommando på ClusterControl-serveren for at oprette en MariaDB master-slave-replikering:
$ s9s cluster --create \
--cluster-type=mysqlreplication \
--nodes='10.10.10.136;10.10.10.137' \
--vendor=mariadb \
--provider-version='10.5' \
--db-admin-passwd='root123' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='MariaDB1' \
--log
Du vil se jobloggen i konsollen, så du kan overvåge implementeringsforløbet der, eller du kan også overvåge jobfremskridtet fra ClusterControl UI -> Aktivitet -> Jobs. Når det er færdigt, kan du se det opført i ClusterControl UI.
Konklusion
I denne blog nævnte vi nogle muligheder for at implementere en MariaDB-database for høj tilgængelighed ved hjælp af ClusterControl, og hvordan man bruger den på en Chamilo LMS-applikation.
Vi brugte en simpel master-slave-implementering, der tilføjede belastningsbalancere for at forbedre High Availability på denne topologi, men du kan forbedre dette miljø endnu mere ved at bruge en anden tilgang som Galera+ProxySQL eller en anden kombination af dem .