sql >> Database >  >> RDS >> PostgreSQL

Een zeer beschikbare canvas LMS implementeren met een PostgreSQL-databasecluster

In deze pandemische tijden worden Learning Management System (LMS)-platforms steeds belangrijker zodat je op afstand kunt blijven leren wanneer het traditionele onderwijssysteem gewoon niet meer beschikbaar is.

Het hebben van een LMS-platform zonder hoge beschikbaarheid kan een probleem zijn in het geval van een storing, aangezien al uw inspanningen om het systeem draaiende te houden geen zin hebben als de database niet altijd beschikbaar is.

In deze blog zullen we een populaire LMS-toepassing zien, Canvas LMS genaamd, en hoe deze met hoge beschikbaarheid kan worden geïmplementeerd met PostgreSQL en ClusterControl.

Wat is Canvas?

Canvas is een webgebaseerd leerbeheersysteem (LMS). Het wordt gebruikt door leerinstellingen, docenten en studenten om online cursusmateriaal te openen en te beheren en te communiceren over de ontwikkeling van vaardigheden en leerprestaties.

Canvas bevat een verscheidenheid aan aanpasbare tools voor het maken en beheren van cursussen, analyses en statistieken voor cursussen en gebruikers, en interne communicatietools.

Canvas LMS PostgreSQL database-implementatie

Laten we eerst een PostgreSQL-cluster implementeren, die zal worden gebruikt door de Canvas LMS-toepassing. Hiervoor zullen we ClusterControl gebruiken om 3 PostgreSQL-knooppunten (1 primaire en 2 stand-by-knooppunten) en 2 HAProxy Load Balancers met Keepalive daartussen te implementeren.

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.

Laten we eens kijken hoe we de genoemde topologie kunnen implementeren met ClusterControl.

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 PostgreSQL selecteert, moet u Gebruiker, Sleutel of Wachtwoord en Poort opgeven 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 databasereferenties definiëren , versie en datadir (optioneel). 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.

In de laatste stap kunt u kiezen of uw replicatie Synchroon of Asynchroon, en druk dan gewoon op "Deploy"

Zodra de taak is voltooid, ziet u uw nieuwe PostgreSQL-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 (HAProxy) 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.

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.

Op dit moment zou je de volgende topologie moeten hebben:

Laten we deze omgeving nu verbinden met Canvas LMS voor hoge beschikbaarheid.

Canvas LMS configureren

Eerst moet je het installeren. Er zijn verschillende manieren om dit te doen, met behulp van een geautomatiseerde installatie op Docker, handmatig of zelfs met behulp van verschillende benaderingen zoals QuickStart of productiegerichte installatie. U kunt de officiële documentatie raadplegen om de beste methode voor u te kiezen.

Zodra Canvas LMS is geïnstalleerd, kunt u doorgaan met het configureren van het bestand database.yml om de PostgreSQL High Availability-omgeving te gebruiken die u zojuist hebt geïmplementeerd.

$ cat config/database.yml

production:

  adapter: postgresql

  encoding: utf8

  database: canvas_production

  host: VIRTUAL_IPADDRESS

  username: CANVAS_USER

  password: CANVAS_PASSWD

  timeout: 5000

Hier, vervang:

  • VIRTUAL_IPADDRESS voor virtueel IP-adres geconfigureerd in Keepalive

  • CANVAS_USER voor de gebruiker van de Canvas-database

  • CANVAS_PASSWD voor het Canvas-databasewachtwoord

Zorg ervoor dat je toegang hebt tot je database met je virtuele IP-adres als host en dat dit is toegestaan ​​in het pg_hba.conf PostgreSQL-configuratiebestand. U kunt het testen door het volgende commando uit te voeren vanaf uw applicatieserver:

$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production

ClusterControl-functie voor automatisch herstel

Dus de vraag is, afgezien van het implementatieproces, wat is de rol van ClusterControl hierin?

In geval van een storing, zal ClusterControl het meest geavanceerde stand-by-knooppunt promoveren naar primair en u op de hoogte stellen van het probleem. Het faalt ook om de rest van het standby-knooppunt te repliceren vanaf de nieuwe primaire server.

HAProxy is standaard geconfigureerd met twee verschillende poorten:lezen-schrijven en alleen-lezen. In de read-write-poort heb je je primaire node als online en de rest van de nodes als offline, en in de read-only-poort heb je zowel de primaire als de standby-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.

Wanneer ClusterControl een stand-by-knooppunt promoot, markeert HAProxy de oude primaire als offline voor beide poorten en plaatst het gepromote knooppunt online in de lees-schrijfpoort.

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.

Conclusie

In deze blog hebben we het gehad over het belang van het hebben van een PostgreSQL-omgeving met hoge beschikbaarheid voor gebruik met uw Canvas LMS-platform, en hoe ClusterControl u kan helpen met zowel implementatie- als autorecovery-taken. We hadden ook vermeld hoe we deze omgeving kunnen verbeteren door HAProxy en Keepalive toe te voegen voor doeleinden met hoge beschikbaarheid.


  1. Excel-spreadsheetkolommen importeren in SQL Server-database

  2. [Video] Inleiding tot JSON-gegevenstypen in PostgreSQL

  3. Hoe retentiepercentage in SQL berekenen?

  4. Hoe u uw ProxySQL-loadbalancers kunt clusteren