Dela via


Programmönster och utvecklingsstrategier för SQL Server på virtuella Azure-datorer

gäller för:SQL Server på virtuella Azure-datorer

Anmärkning

Azure har två olika distributionsmodeller för att skapa och arbeta med resurser: Resource Manager och klassiska. Den här artikeln beskriver hur du använder båda modellerna, men Microsoft rekommenderar att de flesta nya distributioner använder Resource Manager-modellen.

Översikt

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 kräver 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 i Azure.

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

För varje programmönster hittar du ett lokalt scenario, dess respektive molnaktiverade lösning och relaterade tekniska rekommendationer. I artikeln beskrivs dessutom Azure-specifika utvecklingsstrategier så att du kan utforma dina program korrekt. 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 Arumugam Ramakrishnan

Tekniska granskare: Corey Sanders, Drew McDaniel, Narayan Annamalai, Nir Mashkowski, Sanjay Mishra, Silvano Coriani, Stefan Schackow, Tim Hickey, Tim Wieman, Xin Jin

Inledning

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 klientprogram och affärsregler på en dator, komponenter på klientsidans webbnivå och dataåtkomstnivå 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 ifrån behöver du inte ändra klienten eller webbprogrammet utan bara komponenterna på dataåtkomstnivån.

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

Nivå Beskrivning
Presentation Den presentationsnivån (webbnivå, klientdelsnivå) är det lager där användarna interagerar med ett program.
Arbete affärsnivå (mellannivå) är det lager som presentationsnivån och datanivån använder för att kommunicera med varandra och innehåller systemets kärnfunktioner.
data Den 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 funktionerna och komponenterna i ett program. Nivåerna beskriver den fysiska distributionen av funktionerna och komponenterna på separata fysiska servrar, datorer, nätverk eller fjärrplatser. Lagren i ett program kan finnas på samma fysiska dator (på samma nivå) eller distribueras över separata datorer (n-nivå) och komponenterna i varje lager kommunicerar med komponenter i andra lager via väldefinierade gränssnitt. Du kan anse termen 'tier' syfta på fysiska distributionsmönster, till exempel tvåskikt, treskikt och n-skikt. Ett programmönster på 2 nivåer innehåller två programnivåer: programserver och databasserver. Direktkommunikationen sker mellan programservern och databasservern. Programservern innehåller både komponenter på webb- och affärsnivå. I 3-nivås programmönsterfinns det tre programnivåer: webbserver, programserver, som innehåller dataåtkomstkomponenterna på affärslogiknivå och/eller affärsnivå och databasservern. Kommunikationen mellan webbservern och databasservern sker över programservern. Detaljerad information om programlager och -nivåer finns i Microsoft Application Architecture Guide.

Innan du börjar läsa den här artikeln bör du ha kunskap om de grundläggande begreppen i 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 bekanta dig med tillgängliga datalagringstjänster 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 applikationer ska du tydligt förstå när och vilken datalagringstjänst du ska använda.

Välj SQL Server på Azure Virtual Machines när:

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

  • Du behöver en fullständig kompatibilitet med SQL Server och vill flytta befintliga program till Azure as-is.

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

1 nivå (enkel): Enskild virtuell dator

I det här programmönstret distribuerar du ditt SQL Server-program och din databas till en fristående virtuell dator i Azure. Samma virtuella dator innehåller klient-/webbprogram, affärskomponenter, dataåtkomstlager och databasservern. Presentations-, företags- och dataåtkomstkoden är logiskt åtskilda men finns fysiskt på en enskild serverdator. De flesta kunder börjar med det här programmönstret och sedan skalar de 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 uppfyller programmets krav eller inte.
  • Du vill behålla alla programnivåer som finns 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 stresstester 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.

en-nivå applikationsmönster

Om du distribuerar affärsskiktet (komponenter för affärslogik och dataåtkomst) på samma fysiska nivå som presentationslagret kan du 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 dina data till din virtuella SQL Server-dator: migreringsguide: SQL Server till SQL Server på Azure Virtual Machines.

3-nivå (enkel): Flera virtuella datorer

I det här programmönstret distribuerar du ett program på 3 nivåer i Azure genom att placera varje programnivå på en annan virtuell dator. Detta ger en flexibel miljö för enkla 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 diskussion om företagsprogram finns i Vad är ett företagsprogram.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstester 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å tre 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 konfigurerar ett virtuellt nätverk. Azure Virtual Network skapar en betrodd säkerhetsgräns och gör det också möjligt för virtuella datorer att kommunicera sinsemellan via den privata IP-adressen. Se dessutom alltid till att alla Internetanslutningar bara 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-portalen.

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

Anmärkning

Det är kostnadsfritt att konfigurera ett virtuellt nätverk i Azure. Du debiteras dock för VPN-gatewayen som ansluter till en lokal plats. Den här avgiften baseras på hur lång tid anslutningen etableras och är tillgänglig.

Tvånivå och trenivå med skalning på presentationsnivå

I det här programmönstret distribuerar du 2- eller 3-nivådatabasprogram till Azure Virtual Machines genom att placera varje programnivå på en annan virtuell dator. Dessutom skalar du ut presentationsnivån på grund av ökad volym 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 ökad volym inkommande klientbegäranden.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstester 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åerna på flera virtuella datorer i Azure genom att skala ut presentationsnivån på grund av ökad volym inkommande klientbegäranden. Som du ser i diagrammet ansvarar Azure Load Balancer för att distribuera trafik över flera virtuella datorer och även avgöra vilken webbserver som ska anslutas till. Att ha flera instanser av webbservrarna bakom en lastbalanserare garanterar hög tillgänglighet för presentationsnivån.

Programmönster – utskalning av presentationsnivå

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

Vi rekommenderar att du placerar de virtuella datorerna som tillhör samma nivå i samma molntjänst och i samma tillgänglighetsuppsättning. Du kan till exempel placera 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 med hög tillgänglighet i separata feldomäner och uppgradera domäner.

Om du vill utnyttja flera VM-instanser av en nivå måste du konfigurera Azure Load Balancer mellan programnivåer. Om du vill konfigurera Load Balancer på varje nivå skapar du en belastningsutjämningsslutpunkt 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ämningsuppsättning distribuerar du trafik över flera virtuella datorer och låter även lastbalanseraren avgöra vilken nod som ska anslutas när en vm-nod på serverdelen misslyckas. Om du till exempel har flera instanser av webbservrarna bakom en lastbalanserare säkerställs hög tillgänglighet för presentationsnivån.

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 tillåter åtkomst till presentationsskiktet finns i Tillåt extern åtkomst till den virtuella datorn med hjälp av Azure-portalen.

Observera att Lastbalanseraren 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 konfigurerar 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-nivå och 3-nivå med utskalning på affärsnivå

I det här programmönstret distribuerar du ett 2- eller 3-nivås databasprogram 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 affärstung lokal LOB-programvara (line-of-business) till Azure Virtual Machines. LOB-program är en uppsättning viktiga datorprogram som är viktiga för att köra ett företag, till exempel redovisning, personal (HR), löner, hantering av leveranskedjan och resursplaneringsprogram.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstester 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åerna på flera virtuella datorer i Azure genom att skala ut affärsnivån, som innehåller komponenterna för affärslogiknivå och dataåtkomst. Som du ser i diagrammet ansvarar Azure Load Balancer för att distribuera trafik över flera virtuella datorer och även avgöra vilken webbserver som ska anslutas till. Att ha flera instanser av programservrarna bakom en lastbalanserare säkerställer hög tillgänglighet för affärsnivån. Mer information finns i Metodtips för 2-nivå, 3-nivå eller n-nivå programmönster som har flera virtuella datorer på en nivå.

Applikationsmönster med skaleffekt på affärslagret

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

I det här programmönstret distribuerar du ett 2- eller 3-nivås databasprogram till Azure Virtual Machines genom att distribuera presentationsnivån (webbservern) och komponenterna på affärsnivå (programserver) till flera virtuella datorer. Dessutom implementerar du HADR-lösningar med 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 funktioner för hög tillgänglighet och haveriberedskap i SQL Server.
  • Du vill skala ut presentationsnivån och affärsnivån på grund av ökad volym inkommande klientbegäranden och programmets komplexitet.
  • Du vill snabbt etablera utvecklings- och testmiljöer under korta tidsperioder.
  • Du vill utföra stresstester 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å affärsnivå på flera virtuella datorer i Azure. Dessutom implementerar du tekniker med hög tillgänglighet och haveriberedskap (HADR) för SQL Server-databaser i Azure.

Om du kör flera kopior av ett program på olika virtuella datorer kontrollerar du att du har belastningsutjämningsbegä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 tidpunkt. Om du konfigurerar belastningsutjämning spårar Azure Load Balancer hälsotillståndet för virtuella datorer och dirigerar inkommande anrop till felfria fungerande VM-noder korrekt. Information om hur du konfigurerar 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 säkerställer hög tillgänglighet för presentations- och affärsnivåerna.

skalbarhet och hög tillgänglighet

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

När du konfigurerar hög tillgänglighet och katastrofåterställningslösningar i Azure Virtual Machines är det obligatoriskt att ställa in ett virtuellt nätverk för dina virtuella maskiner med hjälp av Azure Virtual Network. Virtuella datorer i ett virtuellt nätverk har en stabil privat IP-adress även efter en tjänstavbrottstid, vilket gör att du kan undvika den uppdateringstid som krävs för DNS-namnmatchning. Dessutom kan du med det virtuella nätverket utöka ditt lokala nätverk till Azure och skapa en betrodd säkerhetsgräns. Om ditt program till exempel har begränsningar för företagsdomäner (till exempel Windows-autentisering, Active Directory) måste du konfigurera Azure Virtual Network-.

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

Omfattande information och handledningar 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-nivå och 3-nivå med hjälp av Azure Virtual Machines och Cloud Services

I det här programmönstret distribuerar du ett program på 2 eller 3 nivåer till Azure med hjälp av både Azure Cloud Services (webb- och arbetsroller – PaaS (Plattform som en tjänst)) och Azure Virtual Machines (Infrastruktur som en tjänst (IaaS)). Att använda Azure Cloud Services- för presentationsnivån/affärsnivån 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 i Cloud Services ger enkel hantering, distribution, övervakning och utskalning.

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

Sammanfattningsvis använder du Azure Cloud Services om du inte vill äga omfattande administrativa uppgifter för presentations-/affärsnivån och programmet inte kräver någon komplex konfiguration av programvara eller operativsystem. Om Azure SQL Database inte stöder alla funktioner som du letar efter använder du SQL Server på en virtuell Azure-dator för datanivån. Om du kör ett program på Azure Cloud Services och lagrar data i Azure Virtual Machines kombineras fördelarna med båda tjänsterna. En detaljerad jämförelse finns i avsnittet i det här avsnittet om 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. Företags- eller serverdelsnivån innehåller en arbetsroll, som är en Cloud Services-komponent som körs i Azure-körningsmiljön och är användbar för generaliserad utveckling och kan utföra bakgrundsbearbetning för en webbroll. Databasnivån finns på en virtuell SQL Server-dator i Azure. Kommunikationen mellan presentationsnivån och databasnivån sker direkt eller över affärsnivån – arbetsrollkomponenter.

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 funktioner för hög tillgänglighet och haveriberedskap i SQL Server.
  • Du vill äga en infrastrukturmiljö som kan skalas upp och ned på begäran.
  • Azure SQL Database stöder inte alla funktioner som programmet eller databasen behöver.
  • Du vill utföra stresstester 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 på virtuella datorer i Azure. Genom att köra flera kopior av presentationslagret i olika webbroller säkerställer du att förfrågningar blir belastningsutjämnade mellan dem. När du kombinerar Azure Cloud Services med Azure Virtual Machines rekommenderar vi att du även konfigurerar Azure Virtual Network-. Med Azure Virtual Network-kan du ha stabila och beständiga privata IP-adresser i 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. Att ha virtuella datorer och Azure-webb-/arbetsroller i samma Azure Virtual Network- ger dessutom låg svarstid och säkrare anslutning. Mer information finns i Vad är en molntjänst.

Som du ser i diagrammet distribuerar Azure Load Balancer trafik över flera virtuella datorer och avgör även vilken webbserver eller programserver som ska anslutas till. Att ha flera instanser av webb- och programservrarna bakom en lastbalanserare säkerställer 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-.

Diagrammet visar lokala fysiska eller virtuella datorer som är anslutna till webbrollsinstanser 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 affärsnivå enligt följande diagram. Det här programmönstret är användbart för program som kräver tillståndskänslig design. Eftersom Azure tillhandahåller tillståndslösa beräkningsnoder för webb- och arbetsroller rekommenderar vi att du implementerar en logik för att lagra sessionstillstånd med någon av följande tekniker: Azure Caching, Azure Table Storage eller Azure SQL Database.

Diagrammet 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 IaaS-komponenter (Infrastruktur som en tjänst) i Azure med PaaS (Plattform som en tjänst) i din lösning. Det här mönstret fokuserar på Azure SQL Database för relationsdatalagring. Den innehåller inte SQL Server på en virtuell Azure-dator, som ingår i Azure-infrastrukturen som ett tjänsterbjudande.

I det här programmönstret distribuerar du ett databasprogram till Azure genom att placera presentations- och affärsnivåerna på samma virtuella dator och komma åt en databas i 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 presentations- 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 konfigurerad 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.
  • Dina komponenter för affärslogik och dataåtkomst 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åerna på en enda virtuell dator i Azure och får åtkomst till data i Azure SQL Database.

Blandat applikationsmönster

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 dynamiska länkbibliotek (DLL:er) i kontexten för ett webbprogram.

Läs 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 hybridprogram på N-nivå

I mönstret för hybridprogram på n-nivå implementerar du ditt program på flera nivåer som distribueras mellan 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änsten.

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

  • Du vill skapa program som körs delvis 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öretagsdatabasprogram.

Följande diagram visar ett hybridprogrammönster på n-nivå som sträcker sig över hela den lokala miljön och Azure. Som du ser i diagrammet innehåller den lokala infrastrukturen Active Directory Domain Services domänkontrollant för att stödja 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.

N-nivåprogrammönster

I Azure kan du använda Microsoft Entra-ID (tidigare Azure Active Directory) för identitets- och åtkomsthantering, eller så kan du integrera en befintlig lokal Active Directory med Microsoft Entra-ID. Som du ser i diagrammet kan komponenterna på affärsnivå autentiseras mot flera datakällor, till exempel: SQL Server på virtuella Azure-datorer via en privat intern IP-adress, lokal SQL Server via Azure Virtual Networkeller Azure SQL Database- med hjälp av .NET Framework-dataprovidertekniker. I det här diagrammet är Azure SQL Database en valfri datalagringstjänst.

I mönstret för hybridprogram på n-nivå kan du implementera följande arbetsflöde i den angivna ordningen:

  1. Identifiera företagsdatabasprogram som behöver flyttas upp till molnet med hjälp av Microsoft Assessment and Planning (MAP) Toolkit. MAP Toolkit samlar in inventerings- och prestandadata från datorer som du överväger för virtualisering 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 Azure Virtual 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 lokalt 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 reglerna för nätverkssäkerhetsgruppen för att styra den offentliga trafiken till den virtuella datorn. Mer information finns i Tillåt extern åtkomst till den virtuella datorn med hjälp av Azure-portalen.

    2. Upprätta en anslutning mellan den lokala miljön och Azure via en VPN-tunnel (Virtual Private Network). 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-autentisering på den virtuella datorn. För närvarande har Azure stöd för 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 i utvecklings- och testsyfte.

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

  4. Konfigurera schemalagda jobb och aviseringar som säkerhetskopierar lokala data på en virtuell datordisk i Azure. Mer information finns i säkerhetskopiering och återställning av SQL Server med Azure Blob Storage och Säkerhetskopiering och återställning för SQL Server på 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 okä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 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 lokala webbservrar eller rapporteringsprogram komma åt databasreplikerna i Azure. Därför kan du sänka arbetsbelastningen i en lokal databas. Vi rekommenderar att du implementerar det här scenariot för tunga läsarbetsbelastningar och utvecklingsändamål. Information om hur du skapar databasrepliker i Azure finns i Always On-tillgänglighetsgrupper på hög tillgänglighet och katastrofåterställning för SQL Server på Azure Virtual Machines.

Jämföra strategier för webbutveckling i Azure

Om du vill implementera och distribuera ett SQL Server-baserat program med flera nivåer 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 innehåller 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 Webbhotell med Azure Web Apps
Applikationsmigrering från lokala system Befintliga program as-is. Program behöver webb- och arbetsroller. Befintliga program as-is men lämpade 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 tjänstpaketet och konfigurationen: 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 konfiguration Du ansvarar för administrativa uppgifter för programmet, data, brandväggsregler, virtuella nätverk och operativsystem. Du ansvarar för administrativa uppgifter i 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 katastrofåterställning (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. Att behålla dina virtuella datorer i samma molntjänst möjliggör 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å virtuella Azure-datorer 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 ansvarar för att säkerhetskopiera dina egna data och program.

Azure kan flytta dina virtuella datorer om värddatorn i datacentret misslyckas på grund av maskinvaruproblem. Dessutom kan det finnas planerad stilleståndstid 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 enda virtuell dator.
Azure hanterar de fel som uppstår på grund av den underliggande maskinvaran eller operativsystemprogramvaran. 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 Service Level Agreement.

Du ansvarar för att säkerhetskopiera dina 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 avbrott. Information om HADR-tekniker som stöds finns i Hög tillgänglighet och haveriberedskap för SQL Server på virtuella Azure-datorer.

SQL Server Database Mirroring: Använd med Azure molntjänster (webb- och arbetsroller). Virtuella SQL Server-datorer och ett molntjänstprojekt kan finnas i samma virtuella Azure-nätverk. Om den virtuella SQL Server-datorn inte finns i samma virtuella nätverk måste du skapa ett SQL Server-alias för att dirigera kommunikationen till instansen av SQL Server. Dessutom måste aliasnamnet matcha SQL Server-namnet.
Hög tillgänglighet ärvs från Azure-arbetsroller, Azure Blob Storage och Azure SQL Database. Azure Storage underhåller till exempel tre repliker av alla blob-, tabell- och ködata. När som helst håller Azure SQL Database tre datarepliker igång – en primär replik och två sekundära repliker. Mer information finns i Azure Storage och Azure SQL Database.

När du använder SQL Server på 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 virtuella SQL Server-datorer i Azure gå igenom 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 konfigurerar 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 virtuella SQL Server-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ämningsslutpunkter.
anslutningar mellan platser Du kan använda Azure Virtual Network för att ansluta till dina lokala nätverk. Du kan använda Azure Virtual Network för att ansluta till dina lokala nätverk. Azure Virtual Network stöds.
Skalbarhet Uppskalning är tillgängligt genom att öka storleken på den virtuella datorn eller lägga till fler diskar. Mer information om storlekar för virtuella maskiner finns i Virtual Machine Sizes för Azure.

För Databasserver: Utskalning är tillgängligt via databaspartitioneringstekniker och SQL Server AlwaysOn-tillgänglighetsgrupper.

För tunga läsbördor kan du använda Always On-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å affärsnivånivån, 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: Funktionen AutoScale i Azure gör att du automatiskt kan öka eller minska de virtuella maskiner 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 innehåller 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 något tröskelvärde och att stänga av en virtuell dator när CPU-användningen blir lägre än den. Funktionen Autoskalning är användbar för tillståndslösa program, till exempel webbservrar, där alla virtuella datorer kan hantera arbetsbelastningen utan några referenser till något tidigare tillstånd. Autoskalningsfunktionen är dock inte användbar för tillståndskänsliga 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 använder Cloud Serviceskan 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 distribuerats för en roll och skala ned en molntjänst genom att minska antalet rollinstanser. För mer detaljerad information, se Azure-körningsmodeller.

Utskalning är tillgängligt via inbyggd Azure-support med hög tillgänglighet via Cloud Services, Virtual Machines och Service Level Agreement för virtuella nätverk och Load Balancer.

För ett program med flera nivåer rekommenderar vi att du ansluter webb-/arbetsroller programmet till databasserverns virtuella maskiner (VMs) via Azure Virtual Network. Dessutom tillhandahåller Azure belastningsutjämning för virtuella datorer i samma molntjänst och 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 AutoScale på Azure-portalen såväl som 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 webbplatsen.

Skala ut: Du kan lägga till fler reserverade instanser (VIRTUELLA datorer) för webbplatsen.

Du kan konfigurera AutoScale på portalen såväl som schematiderna. Mer information finns i Skala webappar.

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

Nästa steg

Mer information om hur du kör SQL Server på azure virtual machines finns i SQL Server på Azure Virtual Machines Overview.