Företagsdistribution med hög tillgänglighet med hjälp av App Service-miljön

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

Kommentar

App Service-miljön version 3 är huvudkomponenten i den här arkitekturen. Version 3 är nu tillgänglig. Version 1 och 2 dras tillbaka den 31 augusti 2024.

Tillgänglighetszoner är fysiskt avgränsade samlingar av datacenter i en viss region. Om du distribuerar resurser mellan zoner ser du till att avbrott som är begränsade till en zon inte påverkar tillgängligheten för dina program. Den här arkitekturen visar hur du kan förbättra motståndskraften för en App Service-miljön distribution genom att distribuera den i en zon-redudant-arkitektur. Dessa zoner är inte relaterade till närhet. De kan mappa till olika fysiska platser för olika prenumerationer. Arkitekturen förutsätter en distribution med en prenumeration.

När du konfigurerar App Service-miljön att vara zonredundant distribuerar plattformen automatiskt instanser av Azure App Service-planen i tre zoner i den valda regionen. Därför är det minsta antalet App Service-planinstanser alltid tre.

Azure-tjänster som stöder tillgänglighetszoner kan vara zonindeliga, zonredundanta eller båda. Zonindelade tjänster kan distribueras till en specifik zon. Zonredundanta tjänster kan distribueras automatiskt mellan zoner. Detaljerad vägledning och rekommendationer finns i Stöd för tillgänglighetszoner. Den tidigare versionen av App Service-miljön (v2) stödde endast zonindeliga distributioner, men den aktuella versionen (v3) stöder zonredundanta distributioner.

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

Arkitektur

Diagram that shows a reference architecture for high-availability deployment of App Service Environment.

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

Resurserna i App Service-miljön undernät i den här referensimplementeringen är desamma som i standardarkitekturen App Service-miljön 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. Observera att omfånget för den här referensarkitekturen är begränsat till en enda region.

Workflow

I det här avsnittet beskrivs tillgängligheten för tjänster som används i den här arkitekturen:

  • App Service-miljön v3 kan konfigureras för zonredundans. Du kan bara konfigurera zonredundans när App Service-miljön skapas och endast i regioner som stöder alla App Service-miljön v3-beroenden. Varje App Service-plan i en zonredundant App Service-miljön måste ha minst tre instanser så att de kan distribueras i tre zoner. Den lägsta avgiften är för nio instanser. Mer information finns i den här prisvägledningen. Detaljerad vägledning och rekommendationer finns i App Service-miljön Support för Tillgänglighetszoner.

  • Azure Virtual Network omfattar alla tillgänglighetszoner som finns i en enda region. Undernäten i det virtuella nätverket korsar även tillgänglighetszoner. Mer information finns i nätverkskraven för App Service-miljön.

  • Application Gateway v2 är zonredundant. Precis som det virtuella nätverket omfattar det flera tillgänglighetszoner per region. Därför räcker det med en enda programgateway för ett system med hög tillgänglighet, vilket visas i referensarkitekturen. Referensarkitekturen använder WAF SKU för Application Gateway, som ger ökat skydd mot vanliga hot och sårbarheter, baserat på en implementering av Core Rule Set (CRS) för Open Web Application Security Project (OWASP). Mer information finns i Skala Application Gateway v2 och WAF v2.

  • Azure Firewall har inbyggt stöd för hög tillgänglighet. Den kan korsa flera zoner utan någon ytterligare konfiguration.

    Om du behöver kan du även konfigurera en specifik tillgänglighetszon när du distribuerar brandväggen. Mer information finns i Azure Firewall och Tillgänglighetszoner. (Den här konfigurationen används inte i referensarkitekturen.)

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

  • GitHub Actions tillhandahåller funktioner för kontinuerlig integrering och kontinuerlig distribution (CI/CD) i den här arkitekturen. Eftersom App Service-miljön finns i det virtuella nätverket används en virtuell dator som 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. För förbättrad säkerhet och smidig RDP/SSH-anslutning kan du överväga att använda Azure Bastion för jumpboxen.

  • 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 i Microsoft Azure Well-Architected Framework.

Tillgänglighet

App Service Environment

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

När du implementerar zonredundans distribuerar plattformen automatiskt instanserna av App Service-planen över tre zoner i den valda regionen. Därför är det minsta antalet App Service-planinstanser alltid tre. Om du anger en kapacitet som är större än tre och antalet instanser är delbart med tre distribueras instanserna jämnt. Annars läggs eventuella återstående instanser till i den återstående zonen eller distribueras över de återstående två zonerna.

  • Du konfigurerar tillgänglighetszoner när du skapar din App Service-miljön.
  • Alla App Service-planer som skapats i den App Service-miljön kräva minst tre instanser. De blir automatiskt zonredundanta.
  • Du kan bara ange tillgänglighetszoner när du skapar en ny App Service-miljön. Du kan inte konvertera en befintlig App Service-miljön för att använda tillgänglighetszoner.
  • Tillgänglighetszoner stöds endast i en delmängd av regioner.

Mer information finns i Migrera App Service-miljön till stöd för tillgänglighetszoner.

Återhämtning

De program som körs i App Service-miljön 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-miljön. Den här referensarkitekturen implementerar hälsokontroller i huvudwebbklientdelen, votingApp. Den här hälsoavsökningen kontrollerar om webb-API:et och Redis-cachen är felfria. Du kan se koden som implementerar den här avsökningen i Startup.cs:

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

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

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

# Generates parameters file for appgw script
cat <<EOF > appgwApps.parameters.json
[
{
    "name": "votapp",
    "routingPriority": 100,
    "hostName": "${APPGW_APP1_URL}",
    "backendAddresses": [
      {
        "fqdn": "${INTERNAL_APP1_URL}"
      }
    ],
    "certificate": {
      "data": "${CERT_DATA_1}",
      "password": "${PFX_PASSWORD}"
    },
    "probePath": "/health"
  }
]

Om någon av komponenterna (webbklientdelen, API:et eller cachen) 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 dirigeras till programmet i ett helt tillgängligt App Service-miljön undernät.

Hälsoavsökningen implementeras också i standardreferensimplementeringen. Där returnerar gatewayen helt enkelt ett fel om hälsoavsökningen misslyckas. Implementeringen med hög tillgänglighet förbättrar dock programmets återhämtning och kvaliteten på användarupplevelsen.

Kostnadsoptimering

Kostnadsoptimering handlar om att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

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

Följande skillnader kan påverka kostnaden:

  • Du debiteras för minst nio App Service-planinstanser i en zonredundant App Service-miljön. Mer information finns i App Service-miljön prissättning.
  • Azure Cache for Redis är också 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.

Kompromissen för ett mycket tillgängligt, motståndskraftigt och mycket säkert system är en ökad kostnad. Använd priskalkylatorn för att utvärdera dina behov när det gäller priser.

Att tänka på vid distribuering

Den här referensimplementeringen använder samma CI/CD-pipeline på produktionsnivå som standarddistributionen, med endast en virtuell jumpbox-dator. Du kan dock välja att 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. Jumpbox används endast för distribution och testning.

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.

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudsakliga författare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg

Du kan ändra den här arkitekturen genom att horisontellt skala dina program, inom samma region eller i flera regioner, baserat på den förväntade högsta belastningskapaciteten. Att replikera dina program i flera regioner kan bidra till att minska riskerna för större geografiska datacenterfel, till exempel sådana som orsakas av jordbävningar eller andra naturkatastrofer. Mer information om horisontell skalning finns i Geo-distribuerad skala med App Service-miljön. Överväg att använda Azure Front Door för en global routningslösning med hög tillgänglighet.