Att ha en testmiljö är ett måste i alla företag. Det kan vara nödvändigt för att testa ändringar eller nya versioner av applikationen, eller till och med för att testa din befintliga applikation med en ny PostgreSQL-version. Den svåra delen av detta är för det första hur man distribuerar en testmiljö som är så lik produktionsmiljön som möjligt och hur man underhåller den miljön utan att återskapa allt från grunden.
I den här bloggen kommer vi att se hur man distribuerar en testmiljö på olika sätt med ClusterControl, vilket hjälper dig att automatisera processen och undvika manuella tidskrävande uppgifter.
Kluster-till-klusterreplikering
Sedan ClusterControl 1.7.4 finns en funktion som heter Cluster-to-Cluster Replication. Det låter dig ha en replikering som körs mellan två autonoma kluster.
Vi kommer att ta en titt på hur man använder den här funktionen för ett befintligt PostgreSQL-kluster. För den här uppgiften antar vi att du har ClusterControl installerat och att det primära klustret har distribuerats med det.
Skapa en kluster-till-kluster-replikering
För att skapa en ny kluster-till-kluster-replikering från ClusterControl-gränssnittet, gå till ClusterControl -> Välj PostgreSQL-kluster -> Klusteråtgärder -> Skapa slavkluster.
Slavklustret kommer att skapas genom att strömma data från det nuvarande primära klustret.
Du måste ange SSH-uppgifter och port, ett namn för ditt slavkluster 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 databasversion, datadir, port och administratörsuppgifter. Eftersom det kommer att använda strömmande replikering, se till att du använder samma databasversion, och autentiseringsuppgifterna måste vara desamma som används av det primära klustret.
I det här steget måste du lägga till servern i det nya slavklustret. För den här uppgiften kan du ange både IP-adress eller värdnamn för databasnoden.
Du kan övervaka jobbstatusen i ClusterControl-aktivitetsmonitorn. När uppgiften är klar kan du se klustret på huvudskärmen för ClusterControl.
ClusterControl CLI
ClusterControl CLI, även känd som s9s, är ett kommandoradsverktyg som introducerats i ClusterControl version 1.4.1 för att interagera, kontrollera och hantera databaskluster med ClusterControl-systemet. ClusterControl CLI öppnar en ny dörr för klusterautomation där du enkelt kan integrera den med befintliga automationsverktyg för distribution som Ansible, Puppet, Chef, etc. Du kan också använda detta ClusterControl-verktyg för att skapa ett slavkluster. Låt oss se ett exempel:
$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133" --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log
Låt oss nu se den använda parametern mer i detalj:
-
Kluster:För att lista och manipulera kluster.
-
Skapa:Skapa och installera ett nytt kluster.
-
Klusternamn:Namnet på det nya slavklustret.
-
Klustertyp:Typen av kluster som ska installeras.
-
Provider-version:Programvaruversionen.
-
Noder:Lista över de nya noderna i slavklustret.
-
Os-user:Användarnamnet för SSH-kommandona.
-
Os-key-file:Nyckelfilen som ska användas för SSH-anslutning.
-
Db-admin:Databasadministratörens användarnamn.
-
Db-admin-passwd:Lösenordet för databasadministratören.
-
Remote-cluster-id:Master Cluster ID för kluster-till-kluster-replikeringen.
-
Logg:Vänta och övervaka jobbmeddelanden.
Hantera kluster-till-kluster-replikering
Nu har du din kluster-till-kluster-replikering igång, det finns olika åtgärder att utföra på denna topologi med ClusterControl från både UI och CLI.
Återbygga ett slavkluster
För att bygga om ett slavkluster, gå till ClusterControl -> Välj slavkluster -> Noder -> Välj nod -> Nodåtgärder -> Bygg om replikeringsslav.
ClusterControl kommer att utföra följande steg:
-
Stoppa PostgreSQL Server
-
Ta bort innehåll från dess datakatalog
-
Strömma en säkerhetskopia från Mastern till Slaven med pg_basebackup
-
Starta slaven
Du kan också bygga om ett slavkluster med följande kommando från ClusterControl-servern:
$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log
Pametrarna är:
-
Replikering:För att övervaka och kontrollera datareplikering.
-
Stage:Stage/bygga om en replikeringsslav.
-
Master:Replikeringsmastern i masterklustret.
-
Slav:Replikeringsslaven i slavklustret.
-
Kluster-id:Slavkluster-ID.
-
Remote-cluster-id:Master Cluster ID.
-
Logg:Vänta och övervaka jobbmeddelanden.
Skapa kluster från säkerhetskopia
Ett annat sätt att skapa en testmiljö är att skapa ett nytt kluster från en säkerhetskopia av ditt primära kluster. För detta, gå till ClusterControl -> Välj ditt PostgreSQL-kluster -> Säkerhetskopiering. Där väljer du säkerhetskopian som ska återställas från listan.
Nu kan du återställa denna säkerhetskopia i din nuvarande databas, i en separat nod, eller skapa ett nytt kluster från denna säkerhetskopia.
Alternativet "Skapa kluster från säkerhetskopia" skapar ett nytt PostgreSQL-kluster från den valda säkerhetskopian.
Du måste lägga till OS- och databasuppgifterna och informationen för att distribuera det nya klustret. När det här jobbet är klart kommer du att se det nya klustret i ClusterControl UI.
Återställ säkerhetskopia på fristående värd
I samma avsnitt för säkerhetskopiering kan du välja alternativet "Återställ och verifiera på fristående värd" för att återställa en säkerhetskopia i en separat nod.
Här kan du ange om du vill att ClusterControl ska installera programvaran i den nya noden och inaktivera brandväggen eller AppArmor/SELinux (beroende på OS). Du kan hålla noden igång, eller så kan ClusterControl stänga av databastjänsten tills nästa återställningsjobb. När den är klar kommer du att se den återställda/verifierade säkerhetskopian i säkerhetskopieringslistan markerad med en bock.
Om du inte vill göra den här uppgiften manuellt kan du schemalägga den här processen med hjälp av funktionen Verifiera säkerhetskopiering, för att upprepa jobbet med jämna mellanrum i ett säkerhetskopieringsjobb.
Automatisk ClusterControl-säkerhetskopiering
I ClusterControl -> Välj ditt PostgreSQL-kluster -> Säkerhetskopiering -> Skapa säkerhetskopia.
Den automatiska säkerhetskopieringsfunktionen är tillgänglig för schemalagda säkerhetskopieringar. När du schemalägger en säkerhetskopiering måste du, förutom att välja de vanliga alternativen som metod eller lagring, även ange schema/frekvens.
Med ClusterControl kan du välja olika säkerhetskopieringsmetoder, beroende på databasteknik, och i samma avsnitt kan du välja vilken server du vill ta säkerhetskopian från, där du vill lagra säkerhetskopian , och om du vill ladda upp säkerhetskopian till molnet (AWS, Azure eller Google Cloud). Du kan också komprimera och kryptera din säkerhetskopia och ange lagringsperioden.
För att använda funktionen Verifiera säkerhetskopiering behöver du en dedikerad värd (eller virtuell dator) som inte är en del av klustret. ClusterControl kommer att installera programvaran och återställa säkerhetskopian i denna värd varje gång jobbet körs.
Efter återställningen kan du se verifieringsikonen i avsnittet ClusterControl Backup, samma som du kommer att ha när du gör verifieringen på det manuella ClusterControl-sättet, med skillnaden att du inte behöver oroa dig om restaureringsuppdraget. ClusterControl återställer säkerhetskopian varje gång automatiskt.
Slutsats
Att distribuera en testmiljö varje gång du behöver kan vara en tidskrävande uppgift, och det är svårt att hålla den uppdaterad. Resultatet av detta är att företag ibland inte testar nya utgåvor eller att testet inte är korrekt, till exempel genom att använda en annan miljö än produktionsmiljön.
Som du kunde se låter ClusterControl dig distribuera samma miljö som du använder i produktionen med bara några få klick, eller till och med automatisera processen för att undvika manuella uppgifter.