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

Gäller för:SQL Server på en virtuell Azure-dator

Kommentar

Azure har två olika distributionsmodeller 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.

Ö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

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 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 Presentationsnivån (webbnivå, klientdelsnivå) är det lager där användarna interagerar med ett program.
Arbete Affärsnivån (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 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 se termnivån som att referera 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. Direktkommunikationen sker mellan programservern och databasservern. Programservern innehåller både komponenter på webb- och affärsnivå. I mönstret för tre nivåer finns 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 Microsofts guide för programarkitektur.

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å virtuella Azure-datorer 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 Database och SQL Server på en virtuell Azure-dator. Om du vill fatta de bästa designbesluten för dina program ska du förstå när du ska använda vilken datalagringstjänst som är tydlig.

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 som det är.

  • 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:

    • Databasstorlek: När den här artikeln uppdaterades stöder SQL Database en databas med upp till 1 TB data. Om programmet 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, DTU-baserad inköpsmodell och köpmodell baserad på virtuell kärna (förhandsversion).
    • HIPAA-efterlevnad: Sjukvårdskunder och oberoende programvaruleverantörer (ISV:er) kan välja SQL Server på virtuella Azure-datorer i stället för Azure SQL Database eftersom SQL Server på Virtuella Azure-datorer omfattas av HIPAA Business Associate Agreement (BAA). Information om efterlevnad finns i Microsoft Azure Trust Center: Efterlevnad.
    • Funktioner på instansnivå: För närvarande stöder SQL Database inte funktioner som finns utanför databasen (till exempel länkade servrar, agentjobb, FileStream, Service Broker osv.). Mer information finns i Riktlinjer och begränsningar för Azure SQL Database.

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.

1-tier application pattern

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å virtuella Azure-datorer.

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.

3-tier application pattern

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 tillåter även att virtuella datorer kommunicerar 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.

Kommentar

Det är kostnadsfritt att konfigurera ett virtuellt nätverk i Azure. Du debiteras dock för VPN-gatewayen som ansluter till en lokal plats. Denna kostnad är baserad på mängden tid som anslutningen är upprättad och tillgänglig.

2-nivå och 3-nivå med utskalning 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.

Application pattern - presentation tier scale-out

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ärslogik med stora lokala verksamhetsspecifika program (verksamhetsspecifika) 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 programmönster på 2 nivåer, 3 nivåer eller n-nivå som har flera virtuella datorer på en nivå.

Application pattern with business tier scale-out

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.

Scale-out and high availability

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

När du konfigurerar 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 med 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) är det nödvändigt att 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 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å virtuella Azure-datorer.

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 (Platform as a Service) 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 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. 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. Om du kör flera kopior av presentationsnivån i olika webbroller kan du belastningsutjämningsbegäranden 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 virtuella Azure-nätverk 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.

Diagram shows on-premises physical or virtual machines connected to web role instances in an Azure virtual network through an Azure load balancer.

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 Cachelagring, Azure Table Storage eller Azure SQL Database.

Diagram shows on-premises physical or virtual machines connected to consolidated web/worker role instances in an Azure virtual network.

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.

Mixed application pattern

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 visas i diagrammet innehåller den lokala infrastrukturen Active Directory-domän 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-tier application pattern

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, inklusive: SQL Server på virtuella Azure-datorer via en privat intern IP-adress, lokal SQL Server via Azure Virtual Network eller Azure SQL Database med hjälp av .NET Framework-dataprovidertekniken. 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 verktyget Microsoft Assessment and Planning (MAP). 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 Anslut till en virtuell SQL Server-dator i 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å virtuella Azure-datorer.

  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 uppnå för att 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 AlwaysOn-tillgänglighetsgrupper vid hög tillgänglighet och haveriberedskap för SQL Server på virtuella Azure-datorer.

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 Webbvärd med Azure Web Apps
Programmigrering från lokal plats Befintliga program är som de är. Program behöver webb- och arbetsroller. Befintliga program är i befintligt format 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 installation 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 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. 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å virtuella Azure-datorer.

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. Hdar-tekniker som stöds finns i Hög tillgänglighet och haveriberedskap för SQL Server på virtuella Azure-datorer.

SQL Server Database-spegling: Använd med Azure Cloud Services (webb-/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 användning av SQL Server Database-spegling 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.
Anslutning mellan platser Du kan använda Azure Virtual Network för att ansluta till lokalt. Du kan använda Azure Virtual Network för att ansluta till lokalt. 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 på virtuella datorer finns i Storlekar på 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 tunga läsarbetsbelastningar kan du använda 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å 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! Med funktionen Autoskalning 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 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 Molntjänster.

När du använder 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 distribuerats för en roll och skala ned en molntjänst genom att minska antalet rollinstanser. Detaljerad information finns i Azure-körningsmodeller.

Utskalning är tillgängligt via inbyggd Azure-support med hög tillgänglighet via Molntjänster, Virtuella datorer och Serviceavtal för virtuellt nätverk och Lastbalanserare.

För ett program med flera nivåer rekommenderar vi att du ansluter webb-/arbetsroller till databasserverns virtuella datorer 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 autoskalning på Azure-portalen samt schematiderna. Mer information finns i Konfigurera 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 autoskalning på portalen samt schematiderna. Mer information finns i Skala webbappar.

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 vilka.

Gå vidare

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