Programmönster och utvecklingsstrategier för SQL Server på Azure Virtual Machines

GÄLLER FÖR: SQL Server på virtuella Azure-datorer

Anteckning

Azure har två olika distributions modeller för att skapa och arbeta med resurser: Resource Manager och klassisk. Den här artikeln täcker bägge modellerna, men Microsoft rekommenderar de flesta nya distributioner att använda Resource Manager-modellen.

Sammanfattning:

Att avgöra vilket programmönster eller mönster som ska användas för dina SQL Server-baserade program i en Azure-miljö är ett viktigt designbeslut och det krävs en gedigen förståelse för hur SQL Server och varje infrastrukturkomponent i Azure fungerar tillsammans. Med SQL Server i Azure Infrastructure Services kan du enkelt migrera, underhålla och övervaka dina befintliga SQL Server-program som bygger på Windows Server till virtuella datorer (VM) i Azure.

Målet med den här artikeln är att ge lösningsarkitekter och utvecklare en grund för bra programarkitektur och design, som de kan följa när de migrerar befintliga program till Azure samt utveckla nya program i Azure.

För varje programmönster hittar du ett lokalt scenario, dess respektive molnaktiverade lösning och relaterade tekniska rekommendationer. Dessutom beskrivs Azure-specifika utvecklingsstrategier i artikeln så att du kan utforma dina program på rätt sätt. På grund av de många möjliga programmönstren rekommenderar vi att arkitekter och utvecklare väljer det lämpligaste mönstret för sina program och användare.

Tekniska deltagare: Luis Carlos Vargas Herring, Madhan Arumumm Ramahnan

Tekniska granskare: Corey Sanders, Drew McDaniel, Naraua Annamalai, Nir Mashknod, Sanjay Mishra,Hrano Coriani,UggUggow, TimAwey, Tim Wieman, Xin Jin

Introduktion

Du kan utveckla många typer av n-nivåprogram genom att separera komponenterna i de olika programskikten på olika datorer samt i separata komponenter. Du kan till exempel placera komponenterna för klientprogram och affärsregler på en dator, klientdelswebbnivå och dataåtkomstnivåkomponenter på en annan dator och en serverdelsdatabasnivå på en annan dator. Den här typen av strukturering hjälper till att isolera varje nivå från varandra. Om du ändrar var data kommer från behöver du inte ändra klienten eller webbappen, utan endast dataåtkomstnivåkomponenterna.

Ett typiskt n-nivåprogram innehåller presentationsnivån, affärsnivån och datanivån:

Nivå Description
Presentation Presentationsnivån (webbnivå, frontend-nivå) är det lager där användarna interagerar med ett program.
Företag Affärsnivån (mellannivån) är det lager som presentationsnivån och datanivån använder för att kommunicera med varandra och innehåller systemets kärnfunktioner.
Data Datanivån är i princip den server som lagrar ett programs data (till exempel en server som kör SQL Server).

Programlager beskriver de logiska grupperingarna av funktioner och komponenter i ett program. Medan nivåer beskriver den fysiska distributionen av funktioner och komponenter på separata fysiska servrar, datorer, nätverk eller fjärrplatser. Lagren i ett program kan finnas på samma fysiska dator (samma nivå) eller distribueras på separata datorer (n-nivå) och komponenterna i varje lager kommunicerar med komponenter i andra lager via väldefinierade gränssnitt. Du kan tänka på termen nivå som refererar till fysiska distributionsmönster, till exempel två nivåer, tre nivåer och n-nivå. Ett programmönster på två nivåer innehåller två programnivåer: programserver och databasserver. Direktkommunikation sker mellan programservern och databasservern. Programservern innehåller komponenter på både webbnivå och företagsnivå. I programmönstret med tre nivåer finns det tre programnivåer: webbserver, programserver, som innehåller affärslogiknivån och/eller komponenter för dataåtkomst på företagsnivå samt databasservern. Kommunikationen mellan webbservern och databasservern sker via programservern. Detaljerad information om programlager och nivåer finns i Guide för Microsoft-programarkitektur.

Innan du börjar läsa den här artikeln bör du ha kunskap om de grundläggande begreppen SQL Server och Azure. Mer information finns i SQL Server Books Online, SQL Server på Azure Virtual Machines och Azure.com.

Den här artikeln beskriver flera programmönster som kan vara lämpliga för dina enkla program samt mycket komplexa företagsprogram. Innan du beskriver varje mönster rekommenderar vi att du bekantar dig med de tillgängliga datalagringstjänsterna i Azure, till exempel Azure Storage, Azure SQL Databaseoch SQL Server på en virtuell Azure-dator. För att fatta de bästa designbesluten för dina program bör du förstå när du ska använda vilken datalagringstjänst som är tydlig.

Välj SQL Server azure-Virtual Machines när:

  • Du behöver kontroll över SQL Server och Windows. Detta kan till exempel omfatta SQL Server version, särskilda snabbkorrigeringar, prestandakonfiguration osv.

  • Du behöver fullständig kompatibilitet med SQL Server och vill flytta befintliga program till Azure som de är.

  • Du vill utnyttja funktionerna i Azure-miljön, men Azure SQL Database stöder inte alla funktioner som ditt program kräver. Detta kan omfatta följande områden:

    • Databasstorlek: När den här artikeln uppdaterades stöder SQL Database en databas på upp till 1 TB data. Om ditt program kräver mer än 1 TB data och du inte vill implementera anpassade lösningar för horisontell partitionering rekommenderar vi att du använder SQL Server på en virtuell Azure-dator. Den senaste informationen finns i Skala ut Azure SQL Database,köpmodell baserad på DTUoch köpmodellbaserad på virtuella kärnor (förhandsversion).
    • HIPAA-efterlevnad: Healthcare-kunder och oberoende programvaruleverantörer (ISV) kan välja SQL Server på Azure Virtual Machines i stället för Azure SQL Database eftersom SQL Server i Azure Virtual Machines omfattas av HIPAA-affärsavtal (BUSINESS Associate Agreement, BAA). Information om efterlevnad finns i Microsoft Azure Säkerhetscenter: Efterlevnad.
    • Funktioner på instansnivå: För SQL Database stöder inte funktioner som finns utanför databasen (till exempel länkade servrar, agentjobb, FileStream, Service Broker osv.). Mer information finns i Azure SQL Database riktlinjer och begränsningar.

1 nivå (enkel): En virtuell dator

I det här programmönstret distribuerar du SQL Server program och databas till en fristående virtuell dator i Azure. Samma virtuella dator innehåller din klient-/webbapp, affärskomponenter, dataåtkomstlagret och databasservern. Presentations-, företags- och dataåtkomstkoden är logiskt åtskilda men finns fysiskt på en dator med en server. De flesta kunder börjar med det här programmönstret och skalar sedan ut genom att lägga till fler webbroller eller virtuella datorer i systemet.

Det här programmönstret är användbart när:

  • Du vill utföra en enkel migrering till Azure-plattformen för att utvärdera om plattformen svarar på programmets krav eller inte.
  • Du vill behålla alla programnivåer på samma virtuella dator i samma Azure-datacenter för att minska svarstiden mellan nivåerna.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstestning för olika arbetsbelastningsnivåer, men samtidigt vill du inte äga och underhålla många fysiska datorer hela tiden.

Följande diagram visar ett enkelt lokalt scenario och hur du kan distribuera dess molnaktiverade lösning på en enda virtuell dator i Azure.

Programmönster på 1 nivå

Distribution av affärslagret (affärslogik och dataåtkomstkomponenter) på samma fysiska nivå som presentationslagret kan maximera programmets prestanda, såvida du inte måste använda en separat nivå på grund av skalbarhet eller säkerhetsproblem.

Eftersom det här är ett mycket vanligt mönster att börja med kan följande artikel om migrering vara användbar för att flytta data till din virtuella SQL Server-dator: Migrera en databas till SQL Server på en virtuell Azure-dator.

3-nivå (enkel): Flera virtuella datorer

I det här programmönstret distribuerar du ett program med tre nivåer i Azure genom att placera varje programnivå på en annan virtuell dator. Detta ger en flexibel miljö för en enkel uppskalnings- och utskalningsscenarier. När en virtuell dator innehåller din klient-/webbapp är den andra värd för dina affärskomponenter och den andra är värd för databasservern.

Det här programmönstret är användbart när:

  • Du vill utföra en migrering av komplexa databasprogram till Azure Virtual Machines.
  • Du vill att olika programnivåer ska finnas i olika regioner. Du kan till exempel ha delade databaser som distribueras till flera regioner i rapporteringssyfte.
  • Du vill flytta företagsprogram från lokala virtualiserade plattformar till Azure Virtual Machines. En detaljerad beskrivning av företagsprogram finns i Vad är ett företagsprogram?
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstestning för olika arbetsbelastningsnivåer, men samtidigt vill du inte äga och underhålla många fysiska datorer hela tiden.

Följande diagram visar hur du kan placera ett enkelt program på 3 nivåer i Azure genom att placera varje programnivå på en annan virtuell dator.

Programmönster på 3 nivåer

I det här programmönstret finns det bara en virtuell dator på varje nivå. Om du har flera virtuella datorer i Azure rekommenderar vi att du ställer in ett virtuellt nätverk. Azure Virtual Network skapar en betrodd säkerhetsgräns och gör även att virtuella datorer kan kommunicera sinsemellan via den privata IP-adressen. Se dessutom alltid till att alla Internetanslutningar endast går till presentationsnivån. När du följer det här programmönstret hanterar du reglerna för nätverkssäkerhetsgruppen för att kontrollera åtkomsten. Mer information finns i Tillåt extern åtkomst till den virtuella datorn med hjälp av Azure Portal.

I diagrammet kan Internetprotokoll vara TCP, UDP, HTTP eller HTTPS.

Anteckning

Det är kostnadsfritt att konfigurera ett virtuellt nätverk i Azure. Du debiteras dock för den VPN-gateway som ansluter till den lokala datorn. Den här avgiften baseras på hur lång tid anslutningen har etablerats och är tillgänglig.

2-nivå och 3-nivå med utskalning på presentationsnivå

I det här programmönstret distribuerar du databasprogram på två eller tre nivåer till Azure Virtual Machines genom att placera varje programnivå på en annan virtuell dator. Dessutom skalar du ut presentationsnivån på grund av ett ökat antal inkommande klientbegäranden.

Det här programmönstret är användbart när:

  • Du vill flytta företagsprogram från lokala virtualiserade plattformar till Azure Virtual Machines.
  • Du vill skala ut presentationsnivån på grund av ett ökat antal inkommande klientbegäranden.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstestning för olika arbetsbelastningsnivåer, men samtidigt vill du inte äga och underhålla många fysiska datorer hela tiden.
  • Du vill äga en infrastrukturmiljö som kan skalas upp och ned på begäran.

Följande diagram visar hur du kan placera programnivåer i flera virtuella datorer i Azure genom att skala ut presentationsnivån på grund av ökad volym av inkommande klientbegäranden. Som du ser i diagrammet Azure Load Balancer ansvarar för att distribuera trafik över flera virtuella datorer och även bestämma vilken webbserver som ska anslutas. Att ha flera instanser av webbservrarna bakom en lastbalanserare säkerställer presentationsnivåns höga tillgänglighet.

Programmönster – utskalning på presentationsnivå

Metodtips för mönster på 2 nivåer, 3 nivåer eller n-nivåer som har flera virtuella datorer på en nivå

Vi rekommenderar att du placerar de virtuella datorer som tillhör samma nivå i samma molntjänst och i samma tillgänglighetsuppsättning. Placera till exempel en uppsättning webbservrar i CloudService1 och AvailabilitySet1 och en uppsättning databasservrar i CloudService2 och AvailabilitySet2. Med en tillgänglighetsuppsättning i Azure kan du placera noderna för hög tillgänglighet i separata feldomäner och uppgraderingsdomäner.

Om du vill utnyttja flera VM-instanser av en nivå måste du konfigurera Azure Load Balancer mellan programnivåer. Om du Load Balancer på varje nivå skapar du en belastningsutjämnad slutpunkt på varje nivås virtuella datorer separat. För en specifik nivå skapar du först virtuella datorer i samma molntjänst. Detta säkerställer att de har samma offentliga virtuella IP-adress. Skapa sedan en slutpunkt på en av de virtuella datorerna på den nivån. Tilldela sedan samma slutpunkt till de andra virtuella datorerna på den nivån för belastningsutjämning. Genom att skapa en belastningsutjämnad uppsättning distribuerar du trafik över flera virtuella datorer och låter även Load Balancer bestämma vilken nod som ska ansluta när en servernod för virtuell dator misslyckas. Om du till exempel har flera instanser av webbservrarna bakom en lastbalanserare säkerställs presentationsnivåns höga tillgänglighet.

Som bästa praxis bör du alltid se till att alla Internetanslutningar först går till presentationsnivån. Presentationslagret har åtkomst till affärsnivån och sedan kommer affärsnivån åt datanivån. Mer information om hur du ger åtkomst till presentationslagret finns i Allow external access to your VM using the Azure Portal.

Observera att Load Balancer i Azure fungerar ungefär som lastbalanserare i en lokal miljö. Mer information finns i Belastningsutjämning för Azure-infrastrukturtjänster.

Dessutom rekommenderar vi att du ställer in ett privat nätverk för dina virtuella datorer med hjälp av Azure Virtual Network. På så sätt kan de kommunicera sinsemellan via den privata IP-adressen. Mer information finns i Azure Virtual Network.

2- och 3-nivå med utskalning på företagsnivå

I det här programmönstret distribuerar du ett databasprogram på 2 eller 3 nivåer till Azure Virtual Machines genom att placera varje programnivå på en annan virtuell dator. Dessutom kanske du vill distribuera programserverkomponenterna till flera virtuella datorer på grund av programmets komplexitet.

Det här programmönstret är användbart när:

  • Du vill flytta företagsprogram från lokala virtualiserade plattformar till Azure Virtual Machines.
  • Du vill distribuera programserverkomponenterna till flera virtuella datorer på grund av programmets komplexitet.
  • Du vill flytta verksamhetslogik för stora lokala LOB-program (verksamhetsbaserade) till Azure Virtual Machines. LOB-program är en uppsättning kritiska datorprogram som är viktiga för att driva ett företag, till exempel redovisning, personalfrågor, lönehantering, hantering av leveranskedjan och program för resursplanering.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstestning för olika arbetsbelastningsnivåer, men samtidigt vill du inte äga och underhålla många fysiska datorer hela tiden.
  • Du vill äga en infrastrukturmiljö som kan skalas upp och ned på begäran.

Följande diagram visar ett lokalt scenario och dess molnaktiverade lösning. I det här scenariot placerar du programnivåer på flera virtuella datorer i Azure genom att skala ut affärsnivån, som innehåller affärslogiknivån och dataåtkomstkomponenterna. Som du ser i diagrammet Azure Load Balancer ansvarar för att distribuera trafik över flera virtuella datorer och även bestämma vilken webbserver som ska anslutas. Att ha flera instanser av programservrarna bakom en lastbalanserare garanterar hög tillgänglighet för affärsnivån. Mer information finns i Metodtips för programmönster på 2 nivåer, 3nivåer eller n-nivå som har flera virtuella datorer på en nivå.

Programmönster med utskalning på företagsnivå

2-nivå och 3-nivå med utskalning på presentations- och affärsnivå och HADR

I det här programmönstret distribuerar du ett databasprogram på 2 eller 3 nivåer till Azure Virtual Machines genom att distribuera presentationsnivån (webbserver) och komponenter på företagsnivå (programserver) till flera virtuella datorer. Dessutom implementerar du HADR-lösningar (hög tillgänglighet och haveriberedskap) för dina databaser i Azure Virtual Machines.

Det här programmönstret är användbart när:

  • Du vill flytta företagsprogram från virtualiserade plattformar lokalt till Azure genom att implementera SQL Server hög tillgänglighet och haveriberedskap.
  • Du vill skala ut presentationsnivån och affärsnivån på grund av ökad volym av inkommande klientbegäranden och programmets komplexitet.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstestning för olika arbetsbelastningsnivåer, men samtidigt vill du inte äga och underhålla många fysiska datorer hela tiden.
  • Du vill äga en infrastrukturmiljö som kan skalas upp och ned på begäran.

Följande diagram visar ett lokalt scenario och dess molnaktiverade lösning. I det här scenariot skalar du ut presentationsnivån och komponenterna på företagsnivå i flera virtuella datorer i Azure. Dessutom implementerar du HADR-tekniker (hög tillgänglighet och haveriberedskap) för SQL Server databaser i Azure.

Om du kör flera kopior av ett program på olika virtuella datorer kontrollerar du att du belastningsutjämnar begäranden mellan dem. När du har flera virtuella datorer måste du se till att alla dina virtuella datorer är tillgängliga och körs vid en enda tidpunkt. Om du konfigurerar belastningsutjämning spårar Azure Load Balancer hälsotillståndet för virtuella datorer och dirigerar inkommande anrop till felfria VM-noder korrekt. Information om hur du ställer in belastningsutjämning för de virtuella datorerna finns i Belastningsutjämning för Azure-infrastrukturtjänster. Att ha flera instanser av webb- och programservrar bakom en lastbalanserare garanterar hög tillgänglighet för presentation och affärsnivåer.

Utskalning och hög tillgänglighet

Metodtips för programmönster som kräver SQL HADR

När du inställningar SQL Server lösningar för hög tillgänglighet och haveriberedskap i Azure Virtual Machines är det obligatoriskt att konfigurera ett virtuellt nätverk för dina virtuella datorer Virtual Network Azure-datorer. Virtuella datorer inom en Virtual Network har en stabil privat IP-adress även efter ett avbrott i tjänsten, vilket innebär att du kan undvika den uppdateringstid som krävs för DNS-namnmatchning. Med det virtuella nätverket kan du dessutom utöka ditt lokala nätverk till Azure och skapa en betrodd säkerhetsgräns. Om ditt program till exempel har företagsdomänbegränsningar (till exempel Windows autentisering, Active Directory) är det nödvändigt att konfigurera Azure Virtual Network.

De flesta kunder, som kör produktionskod i Azure, har både primära och sekundära repliker i Azure.

Omfattande information och självstudier om tekniker för hög tillgänglighet och haveriberedskap finns i Hög tillgänglighet och haveriberedskap för SQL Server på Azure Virtual Machines.

2- och 3-nivåer med Azure Virtual Machines och Cloud Services

I det här programmönstret distribuerar du tvånivåprogram eller program på 3 nivåer till Azure med hjälp av både Azure Cloud Services (webb- och arbetsroller – Plattform som en tjänst (PaaS)) och Azure Virtual Machines (Infrastruktur som en tjänst (IaaS)). Att Azure Cloud Services för presentationsnivå/affärsnivå och SQL Server i Azure Virtual Machines för datanivån är fördelaktigt för de flesta program som körs i Azure. Anledningen är att en beräkningsinstans som körs på Cloud Services ger enkel hantering, distribution, övervakning och utskalning.

Med Cloud Services underhåller Azure infrastrukturen åt dig, utför rutinunderhåll, korrigeringar av operativsystemen och försöker återställa från tjänst- och maskinvarufel. När ditt program behöver skalning, automatisk och manuell utskalning är tillgängliga för ditt molntjänstprojekt genom att öka eller minska antalet instanser eller virtuella datorer som används av ditt program. Dessutom kan du använda lokala program Visual Studio distribuera ditt program till ett molntjänstprojekt i Azure.

Sammanfattningsvis, om du inte vill äga omfattande administrativa uppgifter för presentation/affärsnivå och ditt program inte kräver någon komplex konfiguration av programvara eller operativsystemet, använder du Azure Cloud Services. Om Azure SQL Database inte har stöd för alla funktioner som du letar efter kan du SQL Server på en virtuell Azure-dator för datanivån. När du kör ett Azure Cloud Services och lagrar data i Azure Virtual Machines fördelarna med båda tjänsterna. En detaljerad jämförelse finns i avsnittet i det här avsnittet om att jämföra utvecklingsstrategier i Azure.

I det här programmönstret innehåller presentationsnivån en webbroll, som är en Cloud Services-komponent som körs i Azure-körningsmiljön och som är anpassad för programmering av webbprogram som stöds av IIS och ASP.NET. Nivån för företag eller backend innehåller en arbetsroll, som är en Cloud Services-komponent som körs i Azure-körningsmiljön och som är användbar för generaliserad utveckling och kan utföra bakgrundsbearbetning för en webbroll. Databasnivån finns i en virtuell SQL Server dator i Azure. Kommunikationen mellan presentationsnivån och databasnivån sker direkt eller över affärsnivån – komponenter för arbetsroller.

Det här programmönstret är användbart när:

  • Du vill flytta företagsprogram från virtualiserade plattformar lokalt till Azure genom att implementera SQL Server hög tillgänglighet och haveriberedskap.
  • Du vill äga en infrastrukturmiljö som kan skalas upp och ned på begäran.
  • Azure SQL Database har inte stöd för alla funktioner som ditt program eller din databas behöver.
  • Du vill utföra stresstestning för olika arbetsbelastningsnivåer, men samtidigt vill du inte äga och underhålla många fysiska datorer hela tiden.

Följande diagram visar ett lokalt scenario och dess molnaktiverade lösning. I det här scenariot placerar du presentationsnivån i webbroller, affärsnivån i arbetsroller men datanivån i virtuella datorer i Azure. Att köra flera kopior av presentationsnivån i olika webbroller säkerställer att begäranden belastningsutjämnas mellan dem. När du kombinerar Azure Cloud Services med Azure Virtual Machines rekommenderar vi att du även ställer in Azure Virtual Network. Med Azure Virtual Networkkan du ha stabila och beständiga privata IP-adresser inom samma molntjänst i molnet. När du har definierat ett virtuellt nätverk för dina virtuella datorer och molntjänster kan de börja kommunicera sinsemellan via den privata IP-adressen. Dessutom ger virtuella datorer och Azure-webb-/arbetsroller i samma Azure-Virtual Network korta svarstider och säkrare anslutningar. Mer information finns i Vad är en molntjänst?

Som du ser i diagrammet Azure Load Balancer trafik över flera virtuella datorer och avgör även vilken webbserver eller programserver som anslutningen ska ansluta till. Att ha flera instanser av webb- och programservrarna bakom en lastbalanserare garanterar hög tillgänglighet för presentationsnivån och affärsnivån. Mer information finns i Metodtips för programmönster som kräver SQL HADR.

Diagram som visar lokala fysiska eller virtuella datorer som är anslutna till webbrollinstanser i ett virtuellt Azure-nätverk via en Azure-lastbalanserare.

En annan metod för att implementera det här programmönstret är att använda en konsoliderad webbroll som innehåller komponenter på både presentationsnivå och företagsnivå enligt följande diagram. Det här programmönstret är användbart för program som kräver tillståndsfull design. Eftersom Azure tillhandahåller tillståndslösa beräkningsnoder på webb- och arbetsroller rekommenderar vi att du implementerar en logik för att lagra sessionstillstånd med någon av följande tekniker: Azure Cachelagring, Azure Table Storage eller Azure SQL Database.

Diagram som visar lokala fysiska eller virtuella datorer som är anslutna till konsoliderade webb-/arbetsrollinstanser i ett virtuellt Azure-nätverk.

Mönster med Azure Virtual Machines, Azure SQL Database och Azure App Service (Web Apps)

Det primära målet med det här programmönstret är att visa hur du kombinerar Azure-komponenter för infrastruktur som en tjänst (IaaS) med Azure PaaS-komponenter (plattform som en tjänst) i din lösning. Det här mönstret fokuserar på Azure SQL Database för lagring av relationsdata. Den omfattar inte SQL Server en virtuell Azure-dator, som är en del av Azure-infrastrukturen som ett tjänsterbjudande.

I det här programmönstret distribuerar du ett databasprogram till Azure genom att placera presentationsnivån och affärsnivån på samma virtuella dator och komma åt en databas på Azure SQL Database-servrar (SQL Database). Du kan implementera presentationsnivån med hjälp av traditionella IIS-baserade webblösningar. Eller så kan du implementera en kombinerad presentation och affärsnivå med hjälp av Azure App Service.

Det här programmönstret är användbart när:

  • Du har redan en befintlig SQL Database-server som konfigurerats i Azure och du vill testa programmet snabbt.
  • Du vill testa funktionerna i Azure-miljön.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Din affärslogik och dina dataåtkomstkomponenter kan vara fristående i ett webbprogram.

Följande diagram visar ett lokalt scenario och dess molnaktiverade lösning. I det här scenariot placerar du programnivåer i en enda virtuell dator i Azure och får åtkomst till data i Azure SQL Database.

Mönster för blandat program

Om du väljer att implementera en kombinerad webb- och programnivå med hjälp av Azure Web Apps rekommenderar vi att du behåller mellannivån eller programnivån som DLL:er (Dynamic Link Libraries) i kontexten för en webbapp.

Granska dessutom rekommendationerna i avsnittet Jämföra webbutvecklingsstrategier i Azure i slutet av den här artikeln för att lära dig mer om programmeringstekniker.

Mönster för N-nivåhybridprogram

I mönstret för n-nivåhybridprogram implementerar du ditt program på flera nivåer som distribueras lokalt och Azure. Därför skapar du ett flexibelt och återanvändbart hybridsystem som du kan ändra eller lägga till en specifik nivå utan att ändra de andra nivåerna. Om du vill utöka företagets nätverk till molnet använder du Azure Virtual Network tjänst.

Det här hybridprogrammönstret är användbart när:

  • Du vill skapa program som delvis körs i molnet och delvis lokalt.
  • Du vill migrera vissa eller alla element i ett befintligt lokalt program till molnet.
  • Du vill flytta företagsprogram från lokala virtualiserade plattformar till Azure.
  • Du vill äga en infrastrukturmiljö som kan skalas upp och ned på begäran.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill ha ett kostnadseffektivt sätt att göra säkerhetskopior för företagsprogram.

Följande diagram visar ett mönster för hybridprogram på n-nivå som sträcker sig över lokal miljö och Azure. Som du ser i diagrammet innehåller den lokala infrastrukturen en Active Directory Domain Services som stöd för användarautentisering och auktorisering. Observera att diagrammet visar ett scenario där vissa delar av datanivån finns i ett lokalt datacenter medan vissa delar av datanivån finns i Azure. Beroende på programmets behov kan du implementera flera andra hybridscenarier. Du kan till exempel behålla presentationsnivån och affärsnivån i en lokal miljö, men datanivån i Azure.

Programmönster på N-nivå

I Azure kan du använda Active Directory som en fristående molnkatalog för din organisation, eller så kan du även integrera befintliga lokal Active Directory med Azure Active Directory. Som du ser i diagrammet kan komponenterna på företagsnivå komma åt flera datakällor, till exempel till SQL Server i Azure via en privat intern IP-adress, till lokal SQL Server via Azure Virtual Network eller till SQL Databasemed hjälp av .NET Framework-dataleverantörens tekniker. I det här diagrammet Azure SQL Database är en valfri datalagringstjänst.

I n-nivå hybridprogrammönster kan du implementera följande arbetsflöde i den ordning som anges:

  1. Identifiera företag databasprogram som behöver flyttas upp till molnet med hjälp av Microsofts verktyg för utvärdering och planering (MAP). MAP Toolkit samlar in inventerings- och prestandadata från datorer som du överväger att virtualisera och ger rekommendationer om kapacitets- och utvärderingsplanering.

  2. Planera de resurser och den konfiguration som behövs på Azure-plattformen, till exempel lagringskonton och virtuella datorer.

  3. Konfigurera nätverksanslutning mellan företagsnätverket lokalt och AzureVirtual Network . Om du vill konfigurera anslutningen mellan företagsnätverket lokalt och en virtuell dator i Azure använder du någon av följande två metoder:

    1. Upprätta en anslutning mellan den lokala datorn och Azure via offentliga slutpunkter på en virtuell dator i Azure. Den här metoden ger en enkel konfiguration och gör att du kan använda SQL Server autentisering på den virtuella datorn. Konfigurera dessutom regler för nätverkssäkerhetsgruppen för att styra offentlig trafik till den virtuella datorn. Mer information finns i Tillåt extern åtkomst till den virtuella datorn med hjälp av Azure Portal.

    2. Upprätta en anslutning mellan en lokal plats och Azure via en VPN-tunnel (Virtuellt privat nätverk i Azure). Med den här metoden kan du utöka domänprinciper till en virtuell dator i Azure. Dessutom kan du konfigurera brandväggsregler och använda Windows på den virtuella datorn. Azure stöder för närvarande säker plats-till-plats-VPN och punkt-till-plats-VPN-anslutningar:

      • Med säker plats-till-plats-anslutning kan du upprätta nätverksanslutning mellan ditt lokala nätverk och ditt virtuella nätverk i Azure. Vi rekommenderar att du ansluter din lokala datacentermiljö till Azure.
      • Med säker punkt-till-plats-anslutning kan du upprätta nätverksanslutning mellan ditt virtuella nätverk i Azure och dina enskilda datorer som körs var som helst. Det rekommenderas främst för utveckling och testning.

      Information om hur du ansluter till SQL Server i Azure finns i Anslut till en SQL Server virtuell dator på Azure.

  4. Konfigurera schemalagda jobb och aviseringar som ställer in lokala data på en virtuell datordisk i Azure. Mer information finns i SQL Server backup and restore with Azure Blob Storage service (Säkerhetskopiera och återställa med Azure Blob Storage-tjänsten) och Backup and Restore for SQL Server on Azure Virtual Machines.

  5. Beroende på programmets behov kan du implementera något av följande tre vanliga scenarier:

    1. Du kan behålla webbservern, programservern och icke-känsliga data på en databasserver i Azure medan du behåller känsliga data lokalt.
    2. Du kan behålla webbservern och programservern lokalt medan databasservern finns på en virtuell dator i Azure.
    3. Du kan behålla databasservern, webbservern och programservern lokalt medan du behåller databasreplikerna på virtuella datorer i Azure. Med den här inställningen kan de lokala webbservrarna eller rapportprogrammen komma åt databasreplikerna i Azure. Därför kan du uppnå för att sänka arbetsbelastningen i en lokal databas. Vi rekommenderar att du implementerar det här scenariot för arbetsbelastningar med tung läsning och utveckling. Information om hur du skapar databasrepliker i Azure finns i AlwaysOn-tillgänglighetsgrupper på hög tillgänglighet och haveriberedskap för SQL Server på Azure Virtual Machines.

Jämföra webbutvecklingsstrategier i Azure

Om du vill implementera och distribuera SQL Server flernivåbaserat program i Azure kan du använda någon av följande två programmeringsmetoder:

  • Konfigurera en traditionell webbserver (IIS – Internet Information Services) i Azure och få åtkomst till databaser i SQL Server på Azure Virtual Machines.
  • Implementera och distribuera en molntjänst till Azure. Kontrollera sedan att den här molntjänsten kan komma åt databaser i SQL Server på Azure Virtual Machines. En molntjänst kan innehålla flera webb- och arbetsroller.

Följande tabell ger en jämförelse av traditionell webbutveckling med Azure Cloud Services och Azure Web Apps med avseende på SQL Server på Azure Virtual Machines. Tabellen innehåller Azure Web Apps eftersom det är möjligt att använda SQL Server på en virtuell Azure-dator som datakälla för Azure Web Apps via dess offentliga virtuella IP-adress eller DNS-namn.

Traditionell webbutveckling i Azure Virtual Machines Molntjänster i Azure Webbvärdverktyg med Azure Web Apps
Programmigrering från lokal plats Befintliga program som de är. Program behöver webb- och arbetsroller. Befintliga program som de är men passar för fristående webbprogram och webbtjänster som kräver snabb skalbarhet.
Utveckling och distribution Visual Studio, WebMatrix, Visual Web Developer, WebDeploy, FTP, TFS, IIS Manager, PowerShell. Visual Studio, Azure SDK, TFS, PowerShell. Varje molntjänst har två miljöer där du kan distribuera ditt tjänstpaket och din konfiguration: mellanlagring och produktion. Du kan distribuera en molntjänst till mellanlagringsmiljön för att testa den innan du befordrar den till produktion. Visual Studio, WebMatrix, Visual Web Developer, FTP, GIT, BitBucket, CodePlex, DropBox, GitHub, Mercurial, TFS, Web Deploy, PowerShell.
Administration och installation Du ansvarar för administrativa uppgifter för programmet, data, brandväggsregler, virtuellt nätverk och operativsystem. Du ansvarar för administrativa uppgifter för programmet, data, brandväggsregler och virtuella nätverk. Du ansvarar endast för administrativa uppgifter för programmet och data.
Hög tillgänglighet och haveriberedskap (HADR) Vi rekommenderar att du placerar virtuella datorer i samma tillgänglighetsuppsättning och i samma molntjänst. Om du håller dina virtuella datorer i samma tillgänglighetsuppsättning kan Azure placera noderna med hög tillgänglighet i separata feldomäner och uppgraderingsdomäner. På samma sätt möjliggör lagring av dina virtuella datorer i samma molntjänst belastningsutjämning, och virtuella datorer kan kommunicera direkt med varandra via det lokala nätverket i ett Azure-datacenter.

Du ansvarar för att implementera en lösning för hög tillgänglighet och haveriberedskap för SQL Server på Azure Virtual Machines för att undvika driftstopp. Information om HADR-tekniker som stöds finns i Hög tillgänglighet och haveriberedskap för SQL Server på Azure Virtual Machines.

Du är ansvarig för att eftersom du ska eftersom du har egna data och program.

Azure kan flytta dina virtuella datorer om värddatorn i datacentret misslyckas på grund av maskinvaruproblem. Dessutom kan det ske ett planerat driftstopp för den virtuella datorn när värddatorn uppdateras för säkerhets- eller programuppdateringar. Därför rekommenderar vi att du underhåller minst två virtuella datorer på varje programnivå för att säkerställa kontinuerlig tillgänglighet. Azure tillhandahåller inte serviceavtal för en enskild virtuell dator.
Azure hanterar de fel som uppstår på grund av den underliggande maskinvaran eller operativsystemets programvara. Vi rekommenderar att du implementerar flera instanser av en webb- eller arbetsroll för att säkerställa hög tillgänglighet för ditt program. Mer information finns i Cloud Services, Virtual Machines och Virtual Network Serviceavtal.

Du är ansvarig för att eftersom du ska eftersom du har egna data och program.

För databaser som finns i en SQL Server-databas på en virtuell Azure-dator ansvarar du för att implementera en lösning för hög tillgänglighet och haveriberedskap för att undvika driftstopp. Information om HDAR-tekniker som stöds finns i Hög tillgänglighet och haveriberedskap för SQL Server på Azure Virtual Machines.

SQL Server databasspegling: Använd med Azure Cloud Services (webb-/arbetsroller). SQL Server Virtuella datorer och ett molntjänstprojekt kan finnas i samma Azure-Virtual Network. Om SQL Server virtuella datorn inte finns i samma Virtual Network måste du skapa ett SQL Server-alias för att dirigera kommunikationen till instansen av SQL Server. Dessutom måste aliasnamnet matcha namnet SQL Server namn.
Hög tillgänglighet ärvs av Azure-arbetsroller, Azure Blob Storage och Azure SQL Database. Till exempel Azure Storage tre repliker av alla blob-, tabell- och ködata. Samtidigt behåller Azure SQL Database tre repliker av data som körs – en primär replik och två sekundära repliker. Mer information finns i Azure Storage och Azure SQL Database.

När du SQL Server en virtuell Azure-dator som datakälla för Azure Web Apps bör du tänka på att Azure Web Apps inte stöder Azure Virtual Network. Med andra ord måste alla anslutningar från Azure Web Apps till SQL Server virtuella datorer i Azure gå via offentliga slutpunkter för virtuella datorer. Detta kan orsaka vissa begränsningar för scenarier med hög tillgänglighet och haveriberedskap. Klientprogrammet på Azure Web Apps som ansluter till en virtuell SQL Server-dator med databasspegling skulle till exempel inte kunna ansluta till den nya primära servern eftersom databasspegling kräver att du ställer in Azure Virtual Network mellan virtuella SQL Server-värddatorer i Azure. Därför stöds inte SQL Server databasspegling med Azure Web Apps för närvarande.

SQL Server AlwaysOn-tillgänglighetsgrupper: Du kan konfigurera AlwaysOn-tillgänglighetsgrupper när du använder Azure Web Apps med SQL Server virtuella datorer i Azure. Men du måste konfigurera AlwaysOn-tillgänglighetsgruppens lyssnare för att dirigera kommunikationen till den primära repliken via offentliga belastningsutjämnade slutpunkter.
Anslutning på flera platser Du kan använda Azure Virtual Network för att ansluta till en lokal plats. Du kan använda Azure Virtual Network för att ansluta till en lokal plats. Azure Virtual Network stöds. Mer information finns i Web Apps Virtual Network Integration.
Skalbarhet Du kan skala upp genom att öka storleken på de virtuella datorerna eller lägga till fler diskar. Mer information om storlekar på virtuella datorer finns i Storlekar för virtuella datorer för Azure.

För databasserver: Utskalning är tillgängligt via tekniker för databaspartitionering och SQL Server AlwaysOn-tillgänglighetsgrupper.

För arbetsbelastningar med tung läsning kan du AlwaysOn-tillgänglighetsgrupper på flera sekundära noder samt SQL Server Replikering.

För tunga skrivarbetsbelastningar kan du implementera horisontell partitionering av data över flera fysiska servrar för att tillhandahålla utskalning av program.

Dessutom kan du implementera en utskalning med hjälp av SQL Server med databeroende routning. Med databeroende routning (DDR) måste du implementera partitioneringsmekanismen i klientprogrammet, vanligtvis på nivån affärsnivå, för att dirigera databasbegäranden till flera SQL Server noder. Affärsnivån innehåller mappningar till hur data partitioneras och vilken nod som innehåller data.

Du kan skala program som kör virtuella datorer. Mer information finns i Skala ett program.

Viktigt meddelande: Med autoskalningsfunktionen i Azure kan du automatiskt öka eller minska de virtuella datorer som används av ditt program. Den här funktionen garanterar att slutanvändarupplevelsen inte påverkas negativt under perioder med hög belastning och att virtuella datorer stängs av när efterfrågan är låg. Vi rekommenderar att du inte anger alternativet Autoskalning för molntjänsten om det omfattar virtuella SQL Server datorer. Anledningen är att funktionen Autoskalning gör att Azure kan aktivera en virtuell dator när CPU-användningen på den virtuella datorn är högre än ett visst tröskelvärde och att stänga av en virtuell dator när CPU-användningen är lägre än den. Autoskalningsfunktionen är användbar för tillståndslösa program, till exempel webbservrar, där alla virtuella datorer kan hantera arbetsbelastningen utan referenser till tidigare tillstånd. Autoskalningsfunktionen är dock inte användbar för tillståndsful-program, till exempel SQL Server, där endast en instans tillåter skrivning till databasen.
Uppskalning är tillgängligt med hjälp av flera webb- och arbetsroller. Mer information om storlekar på virtuella datorer för webbroller och arbetsroller finns i Konfigurera storlekar för Cloud Services.

När du Cloud Services kan du definiera flera roller för att distribuera bearbetning och även uppnå flexibel skalning av ditt program. Varje molntjänst innehåller en eller flera webbroller och/eller arbetsroller, var och en med egna programfiler och konfiguration. Du kan skala upp en molntjänst genom att öka antalet rollinstanser (virtuella datorer) som distribueras för en roll och skala ned en molntjänst genom att minska antalet rollinstanser. Detaljerad information finns i Azure Execution Models (Azure-körningsmodeller).

Utskalning är tillgängligt via inbyggt stöd för hög tillgänglighet i Azure via Cloud Services, Virtual Machines, Virtual Network Serviceavtal och Load Balancer.

För ett flernivåprogram rekommenderar vi att du ansluter webb-/arbetsrollprogrammet till virtuella datorer på databasservern via Azure Virtual Network. Dessutom tillhandahåller Azure belastningsutjämning för virtuella datorer i samma molntjänst, vilket sprider användarbegäranden mellan dem. Virtuella datorer som är anslutna på det här sättet kan kommunicera direkt med varandra via det lokala nätverket i ett Azure-datacenter.

Du kan konfigurera autoskalning på Azure Portal samt schematiderna. Mer information finns i Så här konfigurerar du automatisk skalning för en molntjänst i portalen.
Skala upp och ned: Du kan öka/minska storleken på den instans (VM) som är reserverad för din webbplats.

Skala ut: Du kan lägga till fler reserverade instanser (VM) för din webbplats.

Du kan konfigurera autoskalning på portalen samt schematider. Mer information finns i Skala Web Apps.

Mer information om hur du väljer mellan dessa programmeringsmetoder finns i Azure Web Apps, Cloud Services och VM: När du ska använda vilka.

Nästa steg

Mer information om hur du kör SQL Server på Azure Virtual Machines finns i SQL Server Översikt över Azure Virtual Machines Azure Virtual Machines.