Migrera Linux- och PostgreSQL-arbetsbelastningar

Slutförd

Den här modulen vägleder dig genom migreringen av en befintlig arbetsbelastning från en lokal miljö eller molnmiljö till Azure. Den omfattar migreringen av beräkningen till en virtuell Azure-dator (VM) och data till Azure Database for PostgreSQL. Programmet är ett molnagnostiskt exempel som är en stand-in för alla verkliga program som är förberedda för migrering till molnet.

I den här lektionen utforskar du värdet av att göra följande övergångar med hjälp av en fullständig uppsättning säkerhets- och identitetskontroller som Azure tillhandahåller:

  • Växla från en lokalt installerad miljö (till exempel från en självhanterad databas) till ett fullständigt hanterat databaserbjudande
  • Växla från bare metal-beräkning till molnbaserade virtuella datorer

Du kan också utforska fördelarna med att hantera resurser i molnet ur ett kostnads- och prestandaperspektiv. Och du lär dig hur du exakt beräknar och hanterar kostnader före och efter distributionen, tillsammans med hur du optimerar prestanda från både en beräkning och ett dataperspektiv.

Arbetsbelastning och data

Vår arbetsbelastning är ett program som är skrivet i Go och fungerar med data i PostgreSQL. Våra data är en öppen datauppsättning som gör att du kan utforska kraften i Postgres-plattformen och relaterade tillägg.

Även om det här programmet enkelt kan köras i en container valde intressenterna att inte göra det i det här skedet. Att skapa en container, distribuera till en containerplattform eller använda containerorkestrering är för närvarande utanför omfånget. Men migrering till containrar kan vara ett logiskt framtida steg.

GitHub-lagringsplatsen som är associerad med den här modulen innehåller ett program och relaterade data åt dig. Du lär dig hur du förbereder ditt program och exporterar dina data för att nå ett liknande tillstånd som det här exempelprogrammet. Du kan också använda exempelprogrammet som en mall för en greenfield-distribution.

Vad är värdet av att migrera den här arbetsbelastningen?

Du kanske undrar över fördelarna med att migrera den här arbetsbelastningen till molnet. Här är några av värdeförslagen.

Säkerhet och regelefterlevnad

När du tar med beräknings- och dataarbetsbelastningar till molnet drar de nytta av ökade säkerhetsfunktioner.

Virtuella datorer i Azure drar nytta av en mängd olika säkerhets- och efterlevnadsfunktioner, inklusive brandväggar, virtuella nätverk, just-in-time-åtkomst till virtuella datorer, kryptering, rollbaserad åtkomstkontroll (RBAC) och konfidentiell databehandling. Azure Database for PostgreSQL stöder många liknande funktioner, till exempel kryptering med kundhanterade nycklar, efterlevnadscertifieringar och stöd för Microsoft Defender för molnet.

Säkerhet för anslutningar mellan dina virtuella datorer och databaser

När du integrerar en virtuell dator med Azure Database for PostgreSQL är det viktigt att de kan ansluta till varandra på ett säkert sätt som minskar risken för dataförlust.

Med Microsoft Entra-autentisering kan du ansluta till Azure Database for PostgreSQL utan traditionella lösenord. I stället använder du Microsoft Entra-identiteter för din programarbetsbelastning (dvs . hanterade identiteter), användare och administratörer via sina Microsoft Entra-användarkonton. Den här metoden minskar risken för att långlivade autentiseringsuppgifter komprometteras och att dåliga aktörer får åtkomst till dina data.

Microsoft Entra-ID, hanterade identiteter och detaljerad RBAC kan göra det möjligt för programarbetsbelastningen att få åtkomst till data och hantera resurser i Azure på ett säkert sätt genom att följa principen om lägsta behörighet.

Åtkomst till högpresterande och kostnadseffektiv beräkning i flera regioner

Oavsett om du behöver kostnadseffektiv beräkning för dev/test eller de senaste, mest högpresterande eller största beräkningstyperna som är tillgängliga i molnet, har Azure ett brett urval av beräkningsalternativ för både virtuella datorer och Azure Database for PostgreSQL. Du kan skala upp och skala ned de här alternativen efter behov och de är tillgängliga i mer än 60 regioner i Azure.

Du kan skala beräkning både lodrätt och vågrätt, inklusive via databasrepliker och distribuerade alternativ , till exempel Azure Cosmos DB för PostgreSQL. Azure Cosmos DB for PostgreSQL är en hanterad tjänst för PostgreSQL som utökats med kraftfulla distribuerade Citus-tabeller med öppen källkod. Den här beräkningen kombineras med några av de snabbaste molnlagringsalternativen för att anpassa dina beräknings- och lagrings-I/O-krav till din arbetsbelastning.

Kostnadshantering och kostnadseffektivitet

Du kan optimera för kostnadshantering och kostnadseffektivitet på både Linux- och PostgreSQL-sidorna. Jämfört med lokala lösningar kan kostnaden ofta vara mer skräddarsydd och lämplig för din situation. Du kan ändra storleken på din beräkning i jämförelse med en lokal lösning. Du kan också enkelt hantera hela flottan för att endast optimera för den beräkning och lagring som du behöver och bara betala för det du använder i en faktureringsmodell för verktyg.

Med fakturering av verktyg kan kunder hantera perioder med hög efterfrågan utan att behöva betala kostnaden för överetablering. Det gör det möjligt för migrering till snabbare och effektivare generationer av beräkning när de blir tillgängliga.

Kunder kan också dra nytta av Azure Hybrid-förmån för att spara på licenskostnader för specifika Linux-distributioner. Mer information finns i Azure Hybrid-förmån för virtuella datorer med Red Hat Enterprise Linux (RHEL) och SUSE Linux Enterprise Server (SLES).

Kunder kan också minska kostnaderna (upp till 72 procent jämfört med betala per användning-priser) med ett eller tre års villkor för virtuella datorer och Azure Reserved Virtual Machine Instances. Mer information finns i Så här tillämpas Azure-reservationsrabatten på virtuella datorer. Azure-priser är transparenta och förutsägbara och du kan använda Priskalkylatorn för Azure för att beräkna dina kostnader innan du distribuerar.

Dag 2-åtgärder

Dag 2-åtgärder för distribuerade program (som triage, övervakning, säkerhetskorrigeringar, säkerhetskopior och haveriberedskap) blir effektivare genom automatisering och möjligheten att uppgradera med potentiellt noll driftstopp. Dessutom kan du hantera infrastrukturen från slutpunkt till slutpunkt med verktygskedjor av branschstandard.

Innan du börjar

Den här modulen är utformad för att hjälpa dig att migrera en befintlig Linux- och PostgreSQL-arbetsbelastning till Azure. Den fokuserar dock inte på hur du exporterar data från källdatabasen eller hur du förbereder programmet för migrering. En orsak till den här metoden är att det finns många typer av källdatabaser och program som du kan migrera, och processen för varje typ är unik.

I den här modulen får du ett exempelprogram, Postgres-data, binära filer och infrastruktur som kod som du kan använda för att simulera migreringsprocessen. När du har slutfört den simulerade migreringen kan du använda den kunskap du fått för att tillämpa samma principer på din egen arbetsbelastning.

Du använder exempelprogrammet Azure-Samples/tailwind-traders-go som stand-in för att programkoden ska migreras. Bicep-infrastrukturen som kod, postgresexempel och binära data och andra resurser för att stödja den praktiska delen av den här modulen finns på GitHub-lagringsplatsen Azure-Samples/linux-postgres-migration .

Om du vill använda den här metoden för din egen arbetsbelastning måste du mappa källprogrammet och data till följande struktur.

Programkod

Du bör lagra programkoden i källkoden, helst en lagringsplats i GitHub.

Migreringen i den här modulen visar det enklaste scenariot att klona lagringsplatsen direkt till din virtuella Azure-dator. I ett verkligt scenario skulle du förmodligen ha en mer komplex distributionspipeline, till exempel GitHub Actions, som skapar och distribuerar programkoden till dina beräkningsresurser.

Postgres-data

Du bör lagra dina Postgres-data i en .sql fil som du kan använda för att skapa databasschemat och infoga data. I den här simulerade migreringen använder du en exempeldatafil, tailwind.sql, i lagringsplatsen Azure-Samples/linux-postgres-migration . Du kopierar filen till Azure Blob Storage och importerar den sedan till Azure Database for PostgreSQL.

När det är dags att migrera dina egna data exporterar du dina data från källdatabasen och sparar dem i en .sql fil. Sedan kopierar du filen till Blob Storage enligt beskrivningen i den här modulen.

Binära filer

De flesta program har andra binära filer, till exempel mediefiler, som måste migreras. För exempelprogrammet får du lära dig hur du migrerar bilder genom att kopiera dem från Azure-Samples/linux-postgres-migration till Blob Storage.

På samma sätt måste du kopiera dina binära filer till Blob Storage när du migrerar din egen arbetsbelastning. I det här fallet är beräkningen tillståndslös och programmet har behörighet att komma åt binära data direkt i Blob Storage.

Infrastruktur som kod (Bicep)

Infrastrukturen som kod för den här modulen lagras också i Azure-Samples/linux-postgres-migration. Den är utformad för att vara en referensarkitektur som du kan använda som den är, med minimala ändringar, om du kan göra så att dina källdata och program överensstämmer med den tidigare skisserade strukturen.

Säkerhet är ett huvudtema i den här migreringen och vi valde vissa säkerhetsinställningar för att göra den praktiska delen av den här modulen enklare att slutföra. Blob Storage använder till exempel en säkrare, nyckellös autentiseringsmetod, men vi tillåter nätverksanslutningar från alla IP-adresser. I en produktionsmiljö vill du bara låsa nätverksåtkomsten till de IP-adresser som behöver åtkomst till lagringskontot.

På samma sätt lämnar vi alternativet att lägga till en brandväggsregel till PostgreSQL-servern för att tillåta en specifik IP-adress. I en produktionsmiljö kan du helt inaktivera all offentlig åtkomst till servern.

Skillnader mellan källmiljöer och Azure

En av de största skillnaderna vid migrering från en annan miljö till Azure är att du fullt ut använder de säkerhets- och identitetskontroller som Azure tillhandahåller:

  • Du använder hanterade identiteter för virtuella datorer och Azure Database for PostgreSQL.
  • Du använder Microsoft Entra-ID för autentisering till databasen.
  • Du använder Microsoft Entra-ID i stället för SSH-nycklar (Secure Shell) för att få åtkomst till virtuella datorer.

I stället för att utföra en lift-and-shift-migrering tar du tillfället i akt att modernisera programmet för att dra full nytta av de säkerhets- och efterlevnadsfunktioner som Azure tillhandahåller.

Lokalt kan du använda ett användarnamn och lösenord för att autentisera till databasen. I Azure visar vi hur du använder den hanterade identiteten för den virtuella datorn för att autentisera till databasen. Den här autentiseringsmetoden är säkrare och minskar risken för att långlivade autentiseringsuppgifter komprometteras.

Användning av en hanterad identitet för autentisering kräver ofta kodändringar i ditt program. Den här modulen visar hur du använder azidentity biblioteket i Go för att hämta en token för den hanterade identiteten. Samma bibliotek är tillgängligt i Microsoft SDK:er.

Skapa ett Azure-konto och installera Azure CLI

Om du inte har något Azure-konto kan du skapa ett kostnadsfritt konto i dag. Du får krediter som du kan använda för att testa betalda Azure-tjänster. Även när du har använt krediterna kan du behålla kontot och använda kostnadsfria Azure-tjänster.

Om du vill köra kommandona i följande enheter behöver du åtkomst till ett Bash-gränssnitt. Det här gränssnittet kan finnas i något av följande områden:

  • På din lokala dator. Du kan till exempel använda macOS, Linux, Windows-undersystem för Linux (WSL) eller Docker.
  • På en virtuell dator. Använd till exempel Multipass eller Azure.
  • I molnet. Du kan till exempel använda Azure Cloud Shell eller GitHub Codespaces.

För att slutföra den här modulen behöver du Azure CLI. Du kan installera Azure CLI på den lokala datorn genom att följa anvisningarna i artikeln Installera Azure CLI . Du måste också installera Git.

Resurser