sql >> Databasteknik >  >> RDS >> MariaDB

Hur man distribuerar Chamilo MariaDB-databasen för hög tillgänglighet

plattformar för Learning Management System (LMS) låter dig lära dig/undervisa på distans, något som är väldigt viktigt på grund av den rådande situationen runt om i världen.

Med det sagt kan vi också säga att hög tillgänglighet är ett måste i den här typen av plattform, annars kan den inte vara tillgänglig när den behövs.

I den här bloggen kommer vi att se hur man distribuerar en MariaDB-databas för High Availability som ska användas för ett av de mest populära LMS-plattformsalternativen, Chamilo LMS.

Vad är Chamilo?

Chamilo LMS är ett gratis Learning Management System (LMS) designat för onlineutbildning och utvecklat i samarbete med många företag och enskilda utvecklare.

Som lärare kan du använda Chamilo för att få tillgång till en rad användbara verktyg för att skapa en effektiv inlärningsmiljö. Några av dessa verktyg är:

  • Importera eller skapa dokument (ljud, video, bilder) och publicera dem
  • Skapa tester och prov med automatiska poäng och feedback efter behov
  • Ställ in och ta emot virtuella uppdrag
  • Beskriv komponenterna i kursen genom beskrivningsavsnitt
  • Kommunicera via forum eller chatt
  • Publicera meddelanden
  • Lägg till länkar
  • Skapa arbetsgrupper eller laboratoriegrupper
  • Skapa ett virtuellt klassrum
  • Skapa undersökningar
  • Lägg till en wiki för att skapa dokument tillsammans
  • Använd en ordlista och en agenda
  • Aktivera spårning av elever i dina kurser
  • Registrera närvaro
  • Utarbeta en klassdagbok och mer

Chamilo-plattformen är extremt flexibel. Alla dess verktyg kan anpassas efter behoven för varje kurs. Det ger ett vänligt och intuitivt användargränssnitt som inte kräver några speciella tekniska kunskaper eller färdigheter.

Så frågan är, hur kan du distribuera en MariaDB-databas för High Availability som ska användas för detta system?

MariaDB-databas för hög tillgänglighet

Det finns olika metoder för att distribuera en MariaDB-databas för hög tillgänglighet. Låt oss se de två huvudalternativen.

MariaDB Master-Slave Replication

Du kan köra en master-slave-installation med asynkron eller semi-synkron replikering. Fördelen med detta enkla alternativ är att när mastern inte är tillgänglig kan du marknadsföra en av slavarna och fortsätta arbeta som vanligt. Huvudproblemet med den här installationen är att failover måste utföras manuellt, eller till och med använda ett externt verktyg som ClusterControl. Det betyder att du kommer att ha en (kort) stilleståndstid, vilket kan vara acceptabelt eller inte för ditt företag.

MariaDB-kluster

En annan metod skulle vara att använda ett Galera-kluster för att lagra data från Chamilo LMS. Du kan börja använda den med tre noder, och den kan automatiskt hantera fel på en av dessa noder. De återstående två noderna kommer att fortsätta arbeta med att ta emot anslutningar från Chamilo-applikationen. Det betyder att du inte kommer att ha stillestånd i det här fallet, men eftersom det är en mer komplex topologi kommer du att kräva mer kunskap om denna teknik, och beroende på arbetsbelastningen kan det inte vara det bästa alternativet.

Load Balancers

För att förbättra hög tillgänglighet kräver båda alternativen en lastbalanserare framför sig, som skulle hantera trafiken och omdirigera den till en tillgänglig/frisk nod.

ProxySQL är en dedikerad lastbalanserare för MySQL som kommer med en mängd olika funktioner, inklusive omdirigering av frågor, cachelagring av frågor och trafikformning. Den kan användas för att enkelt ställa in en läs-skrivdelning och omdirigera frågor till separata backend-noder.

HAProxy är en lastbalanserare som distribuerar trafik från ett ursprung till en eller flera destinationer och kan definiera specifika regler och/eller protokoll för denna uppgift. Om någon av destinationerna slutar svara markeras den som offline och trafiken skickas till resten av de tillgängliga destinationerna.

Keeplived är en tjänst som låter dig konfigurera en virtuell IP-adress inom en aktiv/passiv grupp av servrar. Denna virtuella IP-adress tilldelas en aktiv server. Om denna server misslyckas migreras IP-adressen automatiskt till den "sekundära" passiva servern, vilket gör att den kan fortsätta arbeta med samma IP-adress på ett transparent sätt för systemen.

Användning av endast en belastningsbalanseringsnod kommer att lägga till en enda felpunkt i din topologi, så du kan använda kombinationen av ProxySQL+Keepalived eller HAProxy+Keepalived med två belastningsbalanseringsnoder (minst) och Levde mellan dem.

Nu ska vi se hur ClusterControl kan hjälpa dig att distribuera en MariaDB-databastillägg Lastbalanserare och en virtuell IP-adress som ska användas i din Chamilo-applikation.

Chamilo MariaDB Database Deployment

Som ett exempel kommer vi att distribuera en MariaDB Master-Slave Replication, som kommer att användas av Chamilo-applikationen. För detta kommer vi att använda ClusterControl för att distribuera 2 MariaDB Database noder (master-slave) och 2 HAProxy Load Balancers med Keepalved konfigurerad mellan dem.

MariaDB Database Deployment

För att utföra en distribution från ClusterControl, välj helt enkelt alternativet "Deploy" och följ instruktionerna som visas.

När du väljer MySQL-replikering måste du ange Användare, Nyckel eller Lösenord och Port för att ansluta med SSH till dina servrar. Du kan också lägga till ett namn för ditt nya kluster och om du vill att ClusterControl ska installera motsvarande programvara och konfigurationer åt dig.

När du har ställt in SSH-åtkomstinformationen måste du välja databasleverantör /version och definiera databasens referenser, port och datakatalog. Du kan också ange vilket arkiv som ska användas.

I nästa steg måste du lägga till dina servrar i klustret som du ska skapa med IP-adressen eller värdnamnet.

När uppgiften är klar kan du se ditt nya MariaDB-kluster i huvudskärmen för ClusterControl.

Nu har du skapat ditt kluster, du kan utföra flera uppgifter på det, som att lägga till en lastbalanserare eller en ny replik.

Load Balancer Deployment

För att utföra en Load Balancer-implementering väljer du alternativet "Lägg till Load Balancer" i klusteråtgärderna och fyller i den begärda informationen.

Du behöver bara lägga till IP eller värdnamn, port, policy och noder du ska använda för lastbalansering. Du kan distribuera den med två olika portar (läs/skriv och skrivskyddad), eller så kan du använda bara en läs/skrivport för att skicka all trafik dit.

Keelived Deployment

För att utföra en Keepalive-distribution, välj alternativet "Lägg till lastbalanserare" i klusteråtgärderna och gå sedan till Keepalved-fliken.

Här, välj HAProxy-noderna och ange den virtuella IP-adressen som ska användas för att komma åt databasen.

Låt oss nu ansluta den här miljön till Chamilo-applikationen.

Chamilo-databaskonfiguration

Under Chamilo-distributionen, i steg 4, måste du lägga till databaskonfigurationen.

Här ska du använda den virtuella IP-adressen för att komma åt din MariaDB-databas, och databasens autentiseringsuppgifter.

För mer information om Chamilo-konfigurationen kan du se den officiella dokumentationen.

Det är allt! Du har din Chamilo-applikation som använder en MariaDB-databas med hög tillgänglighet.

ClusterControl Autorecovery-funktion

I händelse av misslyckande kommer ClusterControl att marknadsföra den mest avancerade slavnoden att bemästra samt meddela dig om problemet. Det misslyckas också över resten av slavnoderna att replikera från den nya masterservern.

Som standard är HAProxy konfigurerad med två olika portar:läs-skriv och skrivskyddad. I läs-skrivporten har du din masternod som online och resten av noderna som offline, och i den skrivskyddade porten har du både master- och slavnoderna online.

När HAProxy upptäcker att en av dina noder inte är tillgänglig, markerar den automatiskt den som offline och tar inte hänsyn till den för att skicka trafik till den. Detektering görs av hälsokontrollskript som konfigureras av ClusterControl vid tidpunkten för distribution. Dessa kontrollerar om instanserna är uppe, om de genomgår återställning eller är skrivskyddade.

När ClusterControl marknadsför en slavnod, markerar HAProxy den gamla mastern som offline för båda portarna och lägger den marknadsförda noden online i läs-skrivporten.

Om din aktiva HAProxy, som är tilldelad en virtuell IP-adress som dina system ansluter till, misslyckas, migrerar Keepalved denna IP-adress till din passiva HAProxy automatiskt. Det betyder att dina system sedan kan fortsätta att fungera normalt.

MariaDB Database Deployment med ClusterControl CLI

Om du föredrar att distribuera MariaDB-klustret med hjälp av kommandoraden kan du använda kommandoradsklientverktyget ClusterControl som heter "s9s". Det här verktyget skickar ett distributionsjobb till ClusterControl-servern och det kommer att utföra alla nödvändiga steg för att distribuera klustret.

Du kan till exempel köra följande kommando på ClusterControl-servern för att skapa 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 kommer att se jobbloggen i konsolen så att du kan övervaka distributionsförloppet där, eller så kan du också övervaka jobbförloppet från ClusterControl UI -> Aktivitet -> Jobb. När den är klar kan du se den listad i ClusterControl UI.

Slutsats

I den här bloggen nämnde vi några alternativ för att distribuera en MariaDB-databas för hög tillgänglighet med ClusterControl och hur man använder den på en Chamilo LMS-applikation.

Vi använde en enkel master-slav-distribution som lade till lastbalanserare för att förbättra High Availability på denna topologi, men du kan förbättra den här miljön ännu mer genom att använda en annan metod som Galera+ProxySQL eller en annan kombination av dem .


  1. Att nå 2100 parametergränsen (SQL Server) när du använder Contains()

  2. SQL Server 2008 Support upphör. Vad nu?

  3. Få rätt del av en sträng i SQL Server (T-SQL)

  4. Hur kan jag lagra och hämta bilder från en MySQL-databas med PHP?