Dela via


Företagsdistribution med hög tillgänglighet som använder App Service Environment

Microsoft Entra ID
Azure Application Gateway
Azure Firewall
Azure Virtual Network
Azure App Service

Anmärkning

App Service-miljön version 3 är huvudkomponenten i den här arkitekturen. Version 1 och 2 upphörde den 31 augusti 2024.

Tillgänglighetszoner är fysiskt avgränsade samlingar av datacenter i en viss region. Du kan distribuera resurser mellan zoner för att säkerställa att avbrott som är begränsade till en zon inte påverkar tillgängligheten för dina program. Den här arkitekturen beskriver hur du förbättrar motståndskraften för en App Service Environment-distribution genom att distribuera den i en zonredundant arkitektur. Dessa zoner relaterar inte till närhet. De kan mappa till olika fysiska platser för olika prenumerationer. Arkitekturen förutsätter en distribution med en prenumeration.

Azure-tjänster som stöder tillgänglighetszoner kan vara zonindeliga, zonredundanta eller båda. Du kan distribuera zonindeliga tjänster till en viss zon. Och du kan automatiskt distribuera zonredundanta tjänster mellan zoner. Mer information finns i Stöd för tillgänglighetszoner. App Service Environment stöder zonredundanta distributioner.

När du konfigurerar en App Service-miljö för zonredundans distribuerar plattformen automatiskt instanser av Azure App Service-planen i det maximala antalet tillgängliga zoner i den valda regionen. Minst två zoner måste vara tillgängliga i regionen för att zonredundans ska kunna aktiveras. Därför är det minsta antalet App Service-planinstanser alltid två. Plattformen avgör antalet zoner som är tillgängliga för en App Service-miljö.

Architecture

Diagram som visar en referensarkitektur för distribution av App Service Environment med hög tillgänglighet.

Ladda ned en Visio-fil med den här arkitekturen.

GitHub-logotyp En referensimplementering för den här arkitekturen finns på GitHub.

Resurserna i App Service Environment-undernäten i den här referensimplementeringen matchar resurserna i standardarkitekturen för App Service Environment-distribution. Den här referensimplementeringen använder zonredundanta funktioner i App Service-miljön v3 och Azure Cache for Redis för att ge högre tillgänglighet. Omfånget för den här referensarkitekturen är begränsat till en enda region.

Components

I det här avsnittet beskrivs tillgängligheten för tjänster i den här arkitekturen.

  • App Service Environment v3 stöder zonredundans. I regioner som stöder zonredundans kan du konfigurera zonredundans när som helst under livscykeln för en App Service-miljö. Varje App Service-plan i en zonredundant App Service-miljö måste innehålla minst två instanser för att säkerställa distribution över två eller flera zoner. Du kan kombinera zonredundanta och icke-zonredundanta planer i samma App Service-miljö. Om du vill konfigurera en plan som bara har en instans inaktiverar du först zonredundans för planen. Zonredundans medför inte extra avgifter. Du betalar bara för de isolerade v2-instanser som används. Mer information finns i Priser och tillförlitlighet för App Service Environmenti App Service Environment.

  • Azure Virtual Network omfattar alla tillgänglighetszoner i en enda region. Undernäten i det virtuella nätverket sträcker sig också över tillgänglighetszoner. Mer information finns i Nätverkskrav för App Service-miljö och tillförlitlighet i virtuellt nätverk.

  • Azure Application Gateway v2 är zonredundant. Precis som det virtuella nätverket omfattar det flera tillgänglighetszoner i varje region. Därför ger en enda programgateway hög tillgänglighet, vilket visas i referensarkitekturen. Referensarkitekturen använder Web Application Firewall SKU för Application Gateway, vilket ger ökat skydd mot vanliga hot och sårbarheter. Det här skyddet baseras på en implementering av core rule set (CRS) i Open Web Application Security Project (OWASP). Mer information finns i Tillförlitlighet i Application Gateway v2.

  • Azure Firewall innehåller inbyggt stöd för hög tillgänglighet. Den kan använda flera zoner utan extra konfiguration.

    Du kan också konfigurera en specifik tillgänglighetszon när du distribuerar brandväggen. Mer information finns i Stöd för tillgänglighetszoner i Azure Firewall. Referensarkitekturen använder inte den här konfigurationen.

  • Microsoft Entra ID är en mycket tillgänglig, mycket redundant global tjänst som omfattar tillgänglighetszoner och regioner. Mer information finns i Förhandstillgänglighet för Microsoft Entra-ID.

  • GitHub Actions tillhandahåller funktioner för kontinuerlig integrering och kontinuerlig distribution (CI/CD) i den här arkitekturen. App Service Environment finns i det virtuella nätverket, så en virtuell dator (VM) hanterar en jumpbox i det virtuella nätverket för att distribuera appar i App Service-planerna. Åtgärden skapar apparna utanför det virtuella nätverket. Överväg att använda Azure Bastion för jumpboxen för förbättrad säkerhet och sömlös anslutning med RDP (Remote Desktop Protocol) och Secure Shell (SSH).

  • Azure Cache for Redis är en zonredundant tjänst. En zonredundant cache körs på virtuella datorer som distribueras i flera tillgänglighetszoner. Den här tjänsten ger högre motståndskraft och tillgänglighet.

Överväganden

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som du kan använda för att förbättra kvaliteten på en arbetsbelastning. Mer information finns iWell-Architected Framework.

Reliability

Tillförlitlighet hjälper till att säkerställa att ditt program kan uppfylla de åtaganden som du gör gentemot dina kunder. Mer information finns i Checklista för designgranskning för tillförlitlighet.

Jumpboxar

Den här referensimplementeringen använder samma CI/CD-pipeline på produktionsnivå som standarddistributionen, med endast en virtuell jumpbox-dator. Men du kan använda en jumpbox för var och en av de tre zonerna. Den här arkitekturen använder bara en jumpbox eftersom jumpboxen inte påverkar appens tillgänglighet. Jumpboxen stöder distribution och testning.

Tjänstemiljö för appar

Du kan distribuera App Service Environment mellan tillgänglighetszoner för att ge återhämtning och tillförlitlighet för affärskritiska arbetsbelastningar. Den här konfigurationen kallas även zonredundans.

När du implementerar zonredundans distribuerar plattformen automatiskt instanserna av App Service-planen över två eller flera zoner i den valda regionen. Därför är det minsta antalet App Service-planinstanser alltid två.

  • Du kan konfigurera tillgänglighetszoner när du skapar din App Service-miljö eller när som helst i miljöns livscykel.

  • Alla App Service-planer som du skapar i apptjänstmiljön kräver minst två instanser för att aktivera zonredundans. Om App Service Environment är zonredundant kan du selektivt aktivera och inaktivera zonredundans för enskilda App Service-planer. Om du vill skala i en App Service-plan till en enda instans inaktiverar du zonredundans för planen och fortsätter sedan med inskalningsåtgärden.

  • Endast en delmängd av regioner stöder tillgänglighetszoner .

Mer information finns i Tillförlitlighet i App Service.

Resiliency

De program som körs i App Service Environment utgör serverdelspoolen för Application Gateway. När en begäran till programmet kommer från det offentliga Internet vidarebefordrar gatewayen begäran till programmet som körs i App Service Environment. Den här referensarkitekturen implementerar hälsokontroller i huvudwebbklientdelen, votingApp. Den här hälsoavsökningen kontrollerar hälsostatusen för webb-API:et och Redis-cachen. Koden i Startup.cs implementerar den här avsökningen.

var uriBuilder = new UriBuilder(Configuration.GetValue<string>("ConnectionEndpoints:VotingDataAPIBaseUri"))
{
    Path = "/health"
};

services.AddHealthChecks()
    .AddUrlGroup(uriBuilder.Uri, timeout: TimeSpan.FromSeconds(15))
    .AddRedis(Configuration.GetValue<string>("ConnectionEndpoints:RedisConnectionEndpoint"));

Följande kod visar hur skriptet commands_ha.azcli konfigurerar serverdelspoolerna och hälsoavsökningen för programgatewayen.

# Generates parameters file for Azure Application Gateway script
cat <<EOF > appgwApps.parameters.json
[
  {
    "name": "votapp",
    "routingPriority": 100,
    "hostName": "${APPGW_APP1_URL}",
    "backendAddresses": [
      {
        "fqdn": "${INTERNAL_APP1_URL}"
      }
    ],
    "probePath": "/health"
  }
]

Om några komponenter, inklusive webbklientdelen, API:et eller cacheminnet, misslyckas med hälsoavsökningen dirigerar Application Gateway begäran till det andra programmet i serverdelspoolen. Den här konfigurationen säkerställer att begäran alltid dirigerar till programmet i ett fullständigt tillgängligt App Service Environment-undernät.

Standardreferensimplementeringen använder också hälsoavsökningen. I den implementeringen returnerar gatewayen ett fel om hälsoavsökningen misslyckas. Men implementeringen med hög tillgänglighet förbättrar programmets återhämtning och kvaliteten på användarupplevelsen.

Kostnadsoptimering

Kostnadsoptimering fokuserar på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Checklista för designgranskning för kostnadsoptimering.

Kostnadsöverväganden för arkitekturen med hög tillgänglighet liknar standarddistributionen.

Följande skillnader kan påverka kostnaden:

  • Stöd för tillgänglighetszoner medför inte extra avgifter. Du betalar bara för de instanser som du använder. Mer information finns i App Service-miljön prissättning.

  • Azure Cache for Redis är en zonredundant tjänst. En zonredundant cache körs på virtuella datorer som distribueras över flera tillgänglighetszoner för att ge högre motståndskraft och tillgänglighet. Den här konfigurationen medför extra avgifter som är associerade med zonredundans för att stödja dataöverföring mellan zoner.

Kompromissen för ett mycket tillgängligt, motståndskraftigt och mycket säkert system inkluderar ökade kostnader för vissa Azure-tjänster. Om du vill utvärdera dina krav och beräkna kostnader använder du priskalkylatorn.

Distribuera det här scenariot

Information om hur du distribuerar referensimplementeringen för den här arkitekturen finns i GitHub-readme. Använd skriptet för distribution med hög tillgänglighet.

Bidragsgivare

Microsoft ansvarar för den här artikeln. Följande deltagare skrev den här artikeln.

Huvudsakliga författare:

Om du vill se linkedin-profiler som inte är offentliga loggar du in på LinkedIn.

Nästa steg

Om du vill ändra den här arkitekturen kan du skala dina program horisontellt inom samma region eller i flera regioner, baserat på den förväntade högsta belastningskapaciteten. Om du replikerar dina program i flera regioner kan du minska risken för större geografiska datacenterfel, till exempel fel som orsakas av jordbävningar eller andra naturkatastrofer.