sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan implementeres et meget tilgængeligt Canvas LMS med en PostgreSQL-databaseklynge

I disse pandemiske tider bliver Learning Management System (LMS) platforme vigtigere og vigtigere for at give dig mulighed for at fortsætte med at lære eksternt, når det traditionelle uddannelsessystem bare ikke er tilgængeligt længere.

At have en LMS-platform uden høj tilgængelighed kan være et problem i tilfælde af fejl, da alle dine bestræbelser på at holde systemet kørende ikke giver mening uden at have databasen tilgængelig til enhver tid.

I denne blog vil vi se en populær LMS-applikation kaldet Canvas LMS, og hvordan man implementerer den på en høj tilgængelig måde ved hjælp af PostgreSQL og ClusterControl.

Hvad er Canvas?

Canvas er et webbaseret Learning Management System (LMS). Det bruges af læringsinstitutioner, undervisere og studerende til at få adgang til og administrere online kursusmaterialer og kommunikere om færdighedsudvikling og læringsresultater.

Canvas indeholder en række tilpassede værktøjer til oprettelse og administration af kursus, kursus- og brugeranalyse og statistik og interne kommunikationsværktøjer.

Canvas LMS PostgreSQL-databaseimplementering

Lad os først implementere en PostgreSQL-klynge, som vil blive brugt af Canvas LMS-applikationen. Til dette vil vi bruge ClusterControl til at implementere 3 PostgreSQL-noder (1 primær og 2 standby-noder) og 2 HAProxy Load Balancers med Keepalved konfigureret imellem dem.

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.

Så lad os se, hvordan man implementerer den nævnte topologi ved hjælp af ClusterControl.

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 PostgreSQL, skal du angive bruger, nøgle eller adgangskode og port 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.

Efter opsætning af SSH-adgangsoplysningerne skal du definere databaselegitimationsoplysningerne , version og datadir (valgfrit). 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.

I det sidste trin kan du vælge, om din replikering skal være Synkron eller Asynkron, og tryk derefter på "Deploy"

Når opgaven er færdig, kan du se din nye PostgreSQL-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 (HAProxy) eller en ny replika.

Load Balancer-implementering

For at udføre en load balancer-implementering skal du vælge muligheden "Add 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.

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.

I øjeblikket bør du have følgende topologi:

Lad os nu forbinde dette miljø til Canvas LMS for høj tilgængelighed.

Sådan konfigurerer du Canvas LMS

Først skal du installere det. Der er forskellige måder at gøre det på, ved at bruge en automatiseret opsætning på Docker, manuelt eller endda ved at bruge forskellige tilgange som QuickStart eller produktionsorienteret installation. Du kan tjekke den officielle dokumentation for at vælge den bedste metode til dig.

Når du har Canvas LMS installeret, kan du fortsætte med at konfigurere database.yml-filen til at bruge PostgreSQL High Availability-miljøet, som du lige har implementeret.

$ cat config/database.yml

production:

  adapter: postgresql

  encoding: utf8

  database: canvas_production

  host: VIRTUAL_IPADDRESS

  username: CANVAS_USER

  password: CANVAS_PASSWD

  timeout: 5000

Erstat her:

  • VIRTUAL_IPADDRESS for virtuel IP-adresse konfigureret i Keepalved

  • CANVAS_USER for Canvas-databasebrugeren

  • CANVAS_PASSWD for Canvas-databasens adgangskode

Sørg for, at du kan få adgang til din database ved at bruge din virtuelle IP-adresse som vært, og det er tilladt i pg_hba.conf PostgreSQL-konfigurationsfilen. Du kan teste det ved at køre følgende kommando fra din applikationsserver:

$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production

ClusterControl Autogendannelsesfunktion

Så spørgsmålet er, bortset fra implementeringsprocessen, hvilken rolle ClusterControl spiller her?

I tilfælde af fejl vil ClusterControl fremme den mest avancerede standby-knude til primær samt give dig besked om problemet. Det mislykkes også over resten af ​​standby-noden at replikere fra den nye primære server.

Som standard er HAProxy konfigureret med to forskellige porte:read-write og read-only. I læse-skriveporten har du din primære node som online og resten af ​​noderne som offline, og i den skrivebeskyttede port har du både den primære og standby node 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 standby-node, markerer HAProxy den gamle primære som offline for begge porte og sætter den promoverede node online i læse-skrive-porten.

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.

Konklusion

I denne blog talte vi om vigtigheden af ​​at have et PostgreSQL-miljø med høj tilgængelighed til brug med din Canvas LMS-platform, og hvordan ClusterControl kan hjælpe dig med både implementerings- og autogendannelsesopgaver. Vi havde også nævnt, hvordan man kan forbedre dette miljø ved at tilføje HAProxy og Keepalived til høj tilgængelighedsformål.


  1. Sådan kører du et SQL Server Agent Job ved hjælp af T-SQL

  2. Der opstod en fejl under installationen af ​​pg (0.17.1), og Bundler kan ikke fortsætte

  3. Hvordan får man Insert id i MSSQL i PHP?

  4. Hvordan opretter man materialiserede visninger i SQL Server?