Learning Management System (LMS)-platforms stellen je in staat om op afstand te leren/onderwijzen, iets wat erg belangrijk is vanwege de huidige situatie over de hele wereld.
Dat gezegd hebbende, kunnen we ook zeggen dat hoge beschikbaarheid een must is in dit soort platformen, anders zou het niet toegankelijk kunnen zijn wanneer het nodig is.
In deze blog zullen we zien hoe we een MariaDB-database voor hoge beschikbaarheid kunnen implementeren die kan worden gebruikt voor een van de meest populaire LMS-platformopties, Chamilo LMS.
Wat is Chamilo?
Chamilo LMS is een gratis Learning Management System (LMS) ontworpen voor online onderwijs en ontwikkeld in samenwerking met vele bedrijven en individuele ontwikkelaars.
Als docent heb je met Chamilo toegang tot een reeks handige tools om een effectieve leeromgeving te creëren. Sommige van deze tools zijn:
- Importeer of creëer documenten (audio, video, afbeeldingen) en publiceer ze
- Bouw tests en examens met geautomatiseerde scores en feedback zoals vereist
- Virtuele opdrachten instellen en ontvangen
- Beschrijf de onderdelen van de cursus door middel van beschrijvingssecties
- Communiceren via forums of chat
- Aankondigingen publiceren
- Links toevoegen
- Werkgroepen of laboratoriumgroepen maken
- Een virtueel klaslokaal opzetten
- Enquêtes maken
- Een wiki toevoegen om samen documenten te maken
- Gebruik een woordenlijst en een agenda
- Schakel het volgen van studenten in uw cursussen in
- Aanwezigheden registreren
- Een klasagenda maken en meer
Het Chamilo-platform is extreem flexibel. Al zijn tools kunnen worden aangepast aan de behoeften van elke cursus. Het biedt een gebruiksvriendelijke en intuïtieve gebruikersinterface die geen speciale voorafgaande technische kennis of vaardigheden vereist.
Dus de vraag is, hoe kun je een MariaDB-database voor hoge beschikbaarheid implementeren om voor dit systeem te gebruiken?
MariaDB-database voor hoge beschikbaarheid
Er zijn verschillende benaderingen om een MariaDB-database voor hoge beschikbaarheid te implementeren. Laten we eens kijken naar de twee belangrijkste opties.
MariaDB Master-Slave-replicatie
Je kunt een master-slave-installatie uitvoeren met asynchrone of semi-synchrone replicatie. Het voordeel van deze eenvoudige optie is dat u, wanneer de master niet beschikbaar is, een van de slaven kunt promoveren en gewoon kunt blijven werken. Het belangrijkste probleem met deze opstelling is dat de failover handmatig moet worden uitgevoerd, of zelfs met behulp van een externe tool zoals ClusterControl. Het betekent dat u een (korte) uitvaltijd zult hebben, wat al dan niet acceptabel kan zijn voor uw bedrijf.
MariaDB-cluster
Een andere benadering zou zijn om een Galera-cluster te gebruiken om de gegevens van Chamilo LMS op te slaan. U kunt het gaan gebruiken met drie knooppunten en het kan automatisch het falen van een van deze knooppunten afhandelen. De overige twee knooppunten blijven werken en ontvangen verbindingen van de Chamilo-toepassing. Dit betekent dat u in dit geval geen uitvaltijd heeft, maar omdat het een complexere topologie is, heeft u meer kennis over deze technologie nodig, en afhankelijk van de werkbelasting is dit misschien niet de beste optie.
Loadbalancers
Om de hoge beschikbaarheid te verbeteren, hebben beide opties een Load Balancer nodig, die het verkeer afhandelt en omleidt naar een beschikbaar/gezond knooppunt.
ProxySQL is een speciale load balancer voor MySQL die wordt geleverd met een verscheidenheid aan functies, waaronder het omleiden van zoekopdrachten, het cachen van zoekopdrachten en het vormgeven van verkeer. Het kan worden gebruikt om eenvoudig een lees-schrijf-splitsing in te stellen en query's om te leiden naar afzonderlijke backend-knooppunten.
HAProxy is een load balancer die verkeer van de ene herkomst naar een of meer bestemmingen verdeelt en specifieke regels en/of protocollen voor deze taak kan definiëren. Als een van de bestemmingen niet meer reageert, wordt deze gemarkeerd als offline en wordt het verkeer naar de overige beschikbare bestemmingen gestuurd.
Keepalived is een service waarmee je een virtueel IP-adres kunt configureren binnen een actieve/passieve groep servers. Dit virtuele IP-adres is toegewezen aan een actieve server. Als deze server uitvalt, wordt het IP-adres automatisch gemigreerd naar de "secundaire" passieve server, waardoor deze op een transparante manier voor de systemen met hetzelfde IP-adres kan blijven werken.
Het gebruik van slechts één Load Balancer-knooppunt voegt een enkel storingspunt toe aan uw topologie, dus u kunt de combinatie van ProxySQL+Keepalived of HAProxy+Keepalived gebruiken met behulp van twee Load Balancer-knooppunten (ten minste) en Tussen hen bewaard.
Laten we eens kijken hoe ClusterControl u kan helpen bij het implementeren van een MariaDB-database Load Balancers en een virtueel IP-adres voor gebruik in uw Chamilo-toepassing.
Chamilo MariaDB Database-implementatie
Als voorbeeld zullen we een MariaDB Master-Slave-replicatie implementeren, die zal worden gebruikt door de Chamilo-toepassing. Hiervoor zullen we ClusterControl gebruiken om 2 MariaDB Database-knooppunten (master-slave) en 2 HAProxy Load Balancers te implementeren met Keepalive ertussen geconfigureerd.
MariaDB Database-implementatie
Als u een implementatie wilt uitvoeren vanuit ClusterControl, selecteert u gewoon de optie "Deploy" en volgt u de instructies die verschijnen.
Als u MySQL-replicatie selecteert, moet u Gebruiker, Sleutel of Wachtwoord opgeven en Poort om via SSH verbinding te maken met uw servers. U kunt ook een naam voor uw nieuwe cluster toevoegen en als u wilt dat ClusterControl de bijbehorende software en configuraties voor u installeert.
Na het instellen van de SSH-toegangsinformatie, moet u de databaseleverancier selecteren /version en definieer de databasereferenties, poort en gegevensdirectory. Je kunt ook aangeven welke repository je wilt gebruiken.
In de volgende stap moet u uw servers toevoegen aan het cluster dat u gaat maken met behulp van het IP-adres of de hostnaam.
Zodra de taak is voltooid, kunt u uw nieuwe MariaDB-cluster in de hoofdscherm van ClusterControl.
Nu je je cluster hebt gemaakt, kun je er verschillende taken op uitvoeren, zoals het toevoegen van een Load Balancer of een nieuwe replica.
Load Balancer-implementatie
Als u een Load Balancer-implementatie wilt uitvoeren, selecteert u de optie "Load Balancer toevoegen" in de clusteracties en vult u de gevraagde informatie in.
U hoeft alleen IP of hostnaam, poort, beleid en de knooppunten die u gaat gebruiken voor taakverdeling. Je kunt het inzetten met twee verschillende poorten (lezen/schrijven en alleen-lezen), of je kunt slechts één lees-/schrijfpoort gebruiken om al het verkeer daarheen te sturen.
Behoud implementatie
Als u een Keepalive-implementatie wilt uitvoeren, selecteert u de optie "Load Balancer toevoegen" in de clusteracties en gaat u vervolgens naar het tabblad Keepalived.
Selecteer hier de HAProxy-knooppunten en specificeer het virtuele IP-adres dat worden gebruikt om toegang te krijgen tot de database.
Laten we deze omgeving nu verbinden met de Chamilo-applicatie.
Chamilo-databaseconfiguratie
Tijdens de Chamilo-implementatie, in stap 4, moet u de databaseconfiguratie toevoegen.
Hier moet u het virtuele IP-adres gebruiken om toegang te krijgen tot uw MariaDB-database, en de databasegegevens.
Voor meer details over de Chamilo-configuratie kunt u de officiële documentatie raadplegen.
Dat is het! U heeft uw Chamilo-toepassing met een MariaDB-database met hoge beschikbaarheid.
ClusterControl-functie voor automatisch herstel
In geval van een storing, zal ClusterControl de meest geavanceerde slave-node tot master promoveren en u op de hoogte stellen van het probleem. Het faalt ook om de rest van de slave-knooppunten te repliceren vanaf de nieuwe masterserver.
HAProxy is standaard geconfigureerd met twee verschillende poorten:lezen-schrijven en alleen-lezen. In de read-write-poort heb je je master-node als online en de rest van de nodes als offline, en in de read-only-poort heb je zowel de master- als de slave-nodes online.
Wanneer HAProxy detecteert dat een van uw nodes niet toegankelijk is, markeert het deze automatisch als offline en houdt er geen rekening mee voor het verzenden van verkeer ernaar. Detectie wordt uitgevoerd door scripts voor statuscontrole die zijn geconfigureerd door ClusterControl op het moment van implementatie. Deze controleren of de instanties actief zijn, of ze worden hersteld of alleen-lezen zijn.
Als ClusterControl een slave-node promoot, markeert HAProxy de oude master als offline voor beide poorten en zet de gepromote node online in de read-write-poort.
Als uw actieve HAProxy, waaraan een virtueel IP-adres is toegewezen waarmee uw systemen verbinding maken, faalt, migreert Keepalive dit IP-adres automatisch naar uw passieve HAProxy. Dit betekent dat uw systemen dan normaal kunnen blijven functioneren.
MariaDB Database-implementatie met behulp van de ClusterControl CLI
Als u er de voorkeur aan geeft de MariaDB Cluster te implementeren via de opdrachtregel, kunt u de ClusterControl-opdrachtregelclienttool "s9s" gebruiken. Deze tool stuurt een implementatietaak naar de ClusterControl-server en voert alle noodzakelijke stappen uit om de cluster te implementeren.
U kunt bijvoorbeeld de volgende opdracht uitvoeren op de ClusterControl-server om een MariaDB-master-slave-replicatie te maken:
$ 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
U ziet het taaklogboek in de console, zodat u de voortgang van de implementatie daar kunt volgen, of u kunt de taakvoortgang ook volgen via ClusterControl UI -> Activiteit -> Taken. Als het klaar is, kun je het zien in de ClusterControl-gebruikersinterface.
Conclusie
In deze blog hebben we enkele opties genoemd om een MariaDB-database voor hoge beschikbaarheid te implementeren met ClusterControl en hoe deze te gebruiken op een Chamilo LMS-toepassing.
We gebruikten een eenvoudige master-slave-implementatie door load balancers toe te voegen om de hoge beschikbaarheid van deze topologie te verbeteren, maar u kunt deze omgeving nog meer verbeteren door een andere benadering te gebruiken, zoals Galera+ProxySQL of een andere combinatie daarvan. .