sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man distribuerar ett mycket tillgängligt Canvas LMS med ett PostgreSQL-databaskluster

I dessa pandemitider blir plattformar för Learning Management System (LMS) viktigare och viktigare för att du ska kunna fortsätta lära dig på distans när det traditionella utbildningssystemet inte längre är tillgängligt.

Att ha en LMS-plattform utan hög tillgänglighet kan vara ett problem vid misslyckanden, eftersom alla dina ansträngningar för att hålla systemet igång inte är meningsfullt utan att ha databasen tillgänglig hela tiden.

I den här bloggen kommer vi att se en populär LMS-applikation som heter Canvas LMS, och hur man distribuerar den på ett sätt med hög tillgänglighet med PostgreSQL och ClusterControl.

Vad är Canvas?

Canvas är ett webbaserat Learning Management System (LMS). Det används av lärande institutioner, lärare och studenter för att få tillgång till och hantera onlinekursmaterial och för att kommunicera om kompetensutveckling och inlärningsprestationer.

Canvas innehåller en mängd olika anpassningsbara verktyg för att skapa och hantera kurser, kurs- och användaranalys och statistik och interna kommunikationsverktyg.

Canvas LMS PostgreSQL Database Deployment

Låt oss först distribuera ett PostgreSQL-kluster, som kommer att användas av Canvas LMS-applikationen. För detta kommer vi att använda ClusterControl för att distribuera 3 PostgreSQL-noder (1 primär och 2 standbynoder) och 2 HAProxy Load Balancers med Keepalved konfigurerad mellan dem.

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.

Så, låt oss se hur man implementerar den nämnda topologin med ClusterControl.

Databasdistribution

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 PostgreSQL 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 definiera databasens autentiseringsuppgifter , version och datadir (valfritt). 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.

I det sista steget kan du välja om din replikering ska vara Synkron eller Asynkron och tryck sedan bara på "Deploy"

När uppgiften är klar kan du se ditt nya PostgreSQL-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 (HAProxy) eller en ny replik.

Load Balancer Deployment

För att utföra en lastbalanserare, välj alternativet "Lägg till lastbalanserare" i klusteråtgärderna och fyll i den begärda informationen.

Du behöver bara lägga till IP eller värdnamn, port, policy och noder du ska använda.

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äljer du HAProxy-noderna och ange den virtuella IP-adressen som ska användas för att komma åt databasen.

I detta ögonblick bör du ha följande topologi:

Låt oss nu ansluta den här miljön till Canvas LMS för hög tillgänglighet.

Hur man konfigurerar Canvas LMS

Först måste du installera det. Det finns olika sätt att göra det, genom att använda en automatiserad installation på Docker, manuellt eller till och med använda olika metoder som QuickStart eller produktionsorienterad installation. Du kan kontrollera den officiella dokumentationen för att välja den bästa metoden för dig.

När du har installerat Canvas LMS kan du fortsätta med att konfigurera filen database.yml för att använda PostgreSQL High Availability-miljön som du just distribuerade.

$ cat config/database.yml

production:

  adapter: postgresql

  encoding: utf8

  database: canvas_production

  host: VIRTUAL_IPADDRESS

  username: CANVAS_USER

  password: CANVAS_PASSWD

  timeout: 5000

Här, ersätt:

  • VIRTUAL_IPADDRESS för virtuell IP-adress konfigurerad i Keepalved

  • CANVAS_USER för Canvas-databasanvändaren

  • CANVAS_PASSWD för Canvas-databasens lösenord

Se till att du kan komma åt din databas med din virtuella IP-adress som värd och att det är tillåtet i pg_hba.conf PostgreSQL-konfigurationsfilen. Du kan testa det genom att köra följande kommando från din applikationsserver:

$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production

ClusterControl Autorecovery-funktion

Så frågan är, förutom implementeringsprocessen, vilken roll har ClusterControl här?

I händelse av fel kommer ClusterControl att marknadsföra den mest avancerade standbynoden till primär samt meddela dig om problemet. Det misslyckas också över resten av standbynoden att replikera från den nya primära servern.

Som standard är HAProxy konfigurerad med två olika portar:läs-skriv och skrivskyddad. I läs-skrivporten har du din primära nod som online och resten av noderna som offline, och i den skrivskyddade porten har du både den primära och standbynoden 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 standby-nod, markerar HAProxy den gamla primära som offline för båda portarna och placerar 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.

Slutsats

I den här bloggen pratade vi om vikten av att ha en PostgreSQL-miljö med hög tillgänglighet att använda med din Canvas LMS-plattform, och hur ClusterControl kan hjälpa dig med både distributions- och autoåterställningsuppgifter. Vi hade också nämnt hur man kan förbättra den här miljön genom att lägga till HAProxy och Keepalved för High Availability-ändamål.


  1. MySQL sök och ersätt viss text i ett fält

  2. Välja slumpmässiga rader i MySQL

  3. Är ett dödläge möjligt när man uppdaterar och tar bort olika rader i en tabell?

  4. Konvertera tidsstämpel datatyp till unix tidsstämpel Oracle