Det är ganska vanligt att använda molnet för att lagra dina data eller som ett failover-alternativ vid masterfel. Det finns flera molnleverantörer som låter dig lagra, hantera, hämta och manipulera data via en molnplattform; tillgänglig via internet. Varje molnleverantör har sina egna produkterbjudanden och unika funktioner, var och en med olika kostnadsmodeller.
Microsoft Azure är en av dessa leverantörer. I den här bloggen kommer vi att ta en titt på vilka funktioner Microsoft Azure erbjuder för primär lagring, som en webbplats för katastrofåterställning, och specifikt titta på hur den hanterar en blandad PostgreSQL-databasmiljö.
Distribuera en PostgreSQL-databasinstans på Microsoft Azure
Innan du utför den här uppgiften måste du bestämma hur du ska använda den här instansen och vilken Azure-produkt som är bäst för dig. Det finns två grundläggande sätt att distribuera en PostgreSQL-instans på Microsoft Azure.
- Azure Database for PostgreSQL :Är en hanterad tjänst som du kan använda för att köra, hantera och skala högt tillgängliga PostgreSQL-databaser i molnet. Det finns i två distributionsalternativ:Single Server och Hyperscale.
- Virtuell maskin :Tillhandahåller en on-demand, högskalig, säker, virtualiserad infrastruktur. Den har stöd för Ubuntu Server, RedHat Enterprise Linux, SUSE Linux Enterprise Server, CentOS, Debian och Windows Server och den låter dig utveckla, testa, köra applikationer och utöka ditt datacenter på bara några sekunder.
För den här bloggen kommer vi att ta en titt på både hur vi kan skapa en Azure-databas för PostgreSQL och använda en Virtual Machine Azure från Microsoft Azure Portal.
Distribuera Azure Database för PostgreSQL
Om du går till din Azure Portal -> Skapa en resurs -> Databaser -> Azure Database for PostgreSQL, kommer du att kunna välja mellan Single Server eller Hyperscale. För den här bloggen kommer vi att använda en enskild server, eftersom alternativet Hyperscale är på förhandsgranskning och det inte erbjuder någon SLA ännu.
Här måste du lägga till lite information om din nya PostgreSQL-instans; såsom prenumeration, servernamn, användaruppgifter och plats. Du kan också välja vilken PostgreSQL-version du vill använda (9.5, 9.6, 10 eller 11 versioner är tillgängliga för närvarande) och den virtuella hårdvaran för att köra den (Compute + Storage).
När du anger hårdvaran ser du det uppskattade priset i verkligheten -tid. Detta är verkligen användbart för att undvika en stor överraskning nästa månad. Efter det här steget behöver du bara bekräfta resurskonfigurationen och vänta ett par minuter tills Azure har slutfört skapandet.
När du har skapat den nya resursen kan du gå till Alla resurser för att se de tillgängliga resursalternativen.
I de skapade resursalternativen kan du gå till Replikering för att aktivera det och replikera från huvudservern till upp till fem repliker. Du bör också kontrollera avsnittet Anslutningssäkerhet för att aktivera eller inaktivera extern åtkomst. För att få tillgång till informationen måste du besöka avsnittet översiktsresurs.
$ psql -h pg1blog.postgres.database.azure.com -U [email protected] postgres
Password for user [email protected]:
psql (11.5, server 11.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=>
Failover på Azure Database for PostgreSQL
Tyvärr är automatisk failover mellan huvud- och replikservrar inte tillgänglig. Om du tar bort huvudinstansen kommer Azure dock att utföra en failover-process för att marknadsföra repliken på ett automatiskt sätt.
Det finns ett alternativ att utföra denna failover-uppgift manuellt, vilket kräver att du stoppa repliken och konfigurera den nya slutpunkten i din applikation så att den pekar på den nya mastern. Repliken kommer att marknadsföras och kopplas bort från mastern. Det finns inget sätt att återlänka denna replik till din master igen.
Distribuera PostgreSQL på Azure Virtual Machine
Om du går till din Azure Portal -> Skapa en resurs -> Beräkna -> Virtual Machine öppnar du avsnittet Skapa en virtuell maskin där du kan ange olika konfigurationer för din nya Azure Virtual Machine .
I grundfliken måste du ange Azure-prenumeration, Region, Tillgänglighet alternativ, operativsystem, serverstorlek, åtkomstuppgifter (användarnamn/lösenord eller SSH-nyckel) och regler för inkommande brandvägg.
På diskfliken måste du ange lagringen (typ och storlek) för din nya virtuella maskin. Disktypen kan vara Standard HDD, Standard SSD eller Premium SSD. Den sista rekommenderas för höga IOPS-arbetsbelastningar.
På nätverksfliken kan du ange det virtuella nätverket, offentlig IP-adress , och de tillåtna inkommande portarna. Du kan också lägga till den här nya virtuella maskinen bakom en spännande Azure-lastbalanseringslösning.
I nästa flik har vi några hanteringsalternativ, som övervakning och säkerhetskopiering .
Och slutligen, på den avancerade fliken, kan vi lägga till tillägg, moln- init eller värdgrupper.
När du har granskat det tidigare alternativet och bekräftat det har du din nya virtuella maskin skapad och tillgänglig från Azure Portal. I avsnittet Resurs -> Översikt kan du se åtkomstinformationen för virtuell maskin (offentlig/privat IP-adress).
Nu kan du komma åt den via SSH och installera PostgreSQL-databasen med ClusterControl .
$ ssh 23.102.177.27
Last login: Mon Sep 23 21:33:27 2019
[[email protected] ~]$
Du kan kontrollera den här länken för att se stegen för att utföra PostgreSQL-distributionen med ClusterControl.
PostgreSQL-failover på Azure Virtual Machine
Katastrofåterställning är en virtuell maskin-funktion i avsnittet Operations som låter dig replikera din miljö i en annan Azure-region. För att aktivera det måste du välja målregion. På den avancerade fliken kan du ändra de specifika måldetaljerna; som virtuellt nätverk, lagringsinställningar och replikeringsinställningar.
När katastrofåterställningen är aktiverad kan du kontrollera replikeringsstatus, testa failover-processen eller manuellt failover till den.
Om du aktiverar detta kan du ha ett failover-alternativ i händelse av fel. Detta kommer dock att vara en failover för hela miljön och inte bara databastjänsten.
En förbättrad PostgreSQL-failoverprocess för Microsoft Azure
Eftersom du har SSH-åtkomst kan du förbättra denna failover-process genom att importera den virtuella maskinen (eller till och med distribuera PostgreSQL-databasen) med ClusterControl.
Om du hanterar databasnoderna med ClusterControl (och om alternativet "Auto Recovery" är PÅ) i händelse av masterfel, kommer ClusterControl att marknadsföra den mest avancerade slaven (om den inte är svartlistad ) för att bemästra och meddela dig om problemet. Det misslyckas också automatiskt över resten av slavarna att replikera från den nya mastern.
Med ClusterControl distribuerar du även en blandad miljö med några noder i molnet och andra noder på plats. Du kan också lägga till lastbalanserare till din topologi för att förbättra vår miljö med hög tillgänglighet. Du kan hitta mer information om detta ämne här.
Slutsats
Azure har många funktioner och produkter för att erbjuda en lösning på företagsnivå. Under dessa tester var dock huvudproblemet jag upptäckte att tiden till skapande och failover var för lång för de flesta programbehov.
Om du behöver en snabb failover och återställning bör du förbättra tillgängligheten för miljön genom att använda en lastbalanserare, eller ett externt system som ClusterControl, för att minska stilleståndstiden. För mer detaljerad information om att köra PostgreSQL på Microsoft Azure kan du ta en titt på vår djupdykningsblogg.