Dela via


Tillförlitlighet i Azure Container Apps

Azure Container Apps är en fullständigt hanterad serverlös värdtjänst för containrar för distribution av mikrotjänster och containerbaserade program. I den här artikeln beskrivs tillförlitlighetsstöd i Azure Container Apps. Den omfattar intraregional återhämtning via tillgänglighetszoner och haveriberedskapsalternativ mellan regioner.

När du använder Azure är tillförlitlighet ett delat ansvar. Microsoft tillhandahåller en rad funktioner för att stödja återhämtning och återställning. Du ansvarar för att förstå hur dessa funktioner fungerar inom alla tjänster som du använder och välja de funktioner du behöver för att uppfylla dina affärsmål och drifttidsmål.

Rekommendationer för produktionsdistribution

Mer information om hur du distribuerar Container Apps för att stödja lösningens tillförlitlighetskrav och hur tillförlitlighet påverkar andra aspekter av din arkitektur finns i Metodtips för arkitektur för Azure Container Apps i Azure Well-Architected Framework.

Översikt över tillförlitlighetsarkitektur

När du använder Container Apps distribuerar du en miljö som fungerar som den grundläggande distributionsenheten och representerar en säker gräns runt en grupp med containerappar. I miljön konfigurerar du grundläggande inställningar, inklusive stöd för tillgänglighetszoner och nätverkskonfiguration. Det finns två typer av miljöer: miljöer med arbetsbelastningsprofiler och förbrukningsmiljöer. Mer information finns i Beräknings- och faktureringsstrukturer i Azure Container Apps.

I en enda miljö kan du distribuera flera appar som var och en kör en eller flera containrar. En miljö kan också köra ett eller flera jobb som representerar icke-interaktiva uppgifter. Mer information finns i Containrar i Azure Container Apps och Jobb i Azure Container Apps.

Varje app har en eller flera repliker som representerar de instanser som körs av appen. Du kan styra hur appen skalar, inklusive det lägsta och högsta antalet repliker, och hur appen dynamiskt lägger till och tar bort repliker. Plattformens schemaläggare säkerställer optimal distribution mellan fysiska värdar samtidigt som du respekterar dina minsta krav på antal repliker. Mer information finns i Ange skalningsregler i Azure Container Apps.

Diagram som visar en Container Apps-miljö som kör en app med tre repliker.

Container Apps är utformat för att stödja tillförlitligheten i dina program med hjälp av en mängd olika funktioner, inklusive:

  • Automatisk hälsoövervakning. Den inbyggda ingresskontrollanten lastbalanserar automatiskt trafik över felfria repliker. Om en replik misslyckas med hälsokontroller eller om dess underliggande infrastruktur blir otillgänglig under en längre tid startar tjänsten automatiskt om misslyckade containrar eller skapar ersättningsrepliker, omdistribuerar trafik bort från felfria repliker och hanterar nätverksförsök i klustret. Den här automatiska återställningsprocessen kräver ingen insats från kunden och upprätthåller antalet repliker som du specificerat. Mer information finns i Hälsoavsökningar.

  • Applikationsresiliens via Dapr. Container Apps ger nära integrering med Dapr, som är ett ramverk som erbjuder en mängd olika funktioner för drift av mikrotjänster i produktionsklass och containerbaserade program, inklusive för motståndskraft mot problem i andra tjänster. Mer information finns i Mikrotjänster med Azure Container Apps.

  • Infrastrukturåterhämtning för systemkomponenter, inklusive kontrollplanet, ingresskontrollanter och containerkörning. I regioner med tillgänglighetszoner tillhandahåller Container Apps zonredundans. Mer information finns i Stöd för tillgänglighetszoner.

Tillfälliga fel

Tillfälliga fel är kortvariga, intermittenta fel i komponenter. De förekommer ofta i en distribuerad miljö som molnet, och de är en normal del av åtgärderna. Tillfälliga fel korrigerar sig själva efter en kort tidsperiod. Det är viktigt att dina program kan hantera tillfälliga fel, vanligtvis genom att försöka igen.

Alla molnbaserade program bör följa vägledningen för tillfälliga felhantering i Azure när de kommunicerar med molnbaserade API:er, databaser och andra komponenter. Mer information finns i Rekommendationer för hantering av tillfälliga fel.

Container Apps hanterar automatiskt många tillfälliga fel via sina mekanismer för omprövning på plattformsnivå och hälsoövervakning. Följ dessa rekommendationer för att säkerställa att dina program är motståndskraftiga mot tillfälliga fel:

  • Konfigurera hälsoavsökningar som gör att plattformen kan identifiera och svara på programspecifika feltillstånd. Ange lämpliga tröskelvärden för fel och tidsgränsvärden baserat på programmets startegenskaper, till exempel använd ett tröskelvärde för fel på 3 med en period på 10 sekunder för liveness-avsökningar för att undvika för tidiga omstarter av containrar under tillfälliga problem. Mer information finns i Hälsoavsökningar.

  • Använd resiliensstrategier för tjänstupptäckt (förhandsversion) för att proaktivt förhindra, identifiera och återhämta sig från tjänstefel med hjälp av enkla resiliensstrategier. När du till exempel använder en återhämtningsprincip kan varje inkommande begäran till appen göras om automatiskt om det finns ett tillfälligt fel som hindrar appen från att svara. Mer information finns i Resiliens för tjänstidentifiering (förhandsversion).

  • Implementera logik för återförsök i dina program för externa tjänstanrop, databasanslutningar och API-begäranden.

    Om ditt program använder Dapr för att integrera med molntjänster använder du Dapr-komponentåterhämtning (förhandsversion) för att konfigurera återförsök, tidsgränser och kretsbrytare.

    För andra beroenden måste programmet hantera tillfälliga fel. Använd exponentiella backoff-strategier och kretsbrytarmönster när du anropar externa tjänster för att förhindra sammanhängande fel vid avbrott i nedströmstjänsten. Container Apps inbyggda tjänstidentifiering och belastningsutjämning dirigerar automatiskt trafik bort från misslyckade instanser, men dina återförsöksprinciper på programnivå säkerställer en korrekt hantering av tillfälliga problem innan hälsokontroller på plattformsnivå utlöser att containern startas om.

  • Utforma jobb som ska vara motståndskraftiga mot tillfälliga fel, inklusive fel i jobbkörningen eller dess beroenden. Utforma dina jobb för att återuppta arbetet om de startas om eller designa för idempotens så att de kan köras på ett säkert sätt.

Stöd för tillgänglig zon

Tillgänglighetszoner är fysiskt separata grupper av datacenter i varje Azure-region. När en zon misslyckas kan tjänsterna redundansväxla till en av de återstående zonerna.

När du skapar en Container Apps-miljö kan du aktivera zonredundans för att distribuera den underliggande infrastrukturen över flera tillgänglighetszoner i den valda Azure-regionen. Container Apps schemalägger automatiskt replikerna av dina appar mellan zoner. Den här fördelningen sker transparent – du behöver inte ange zonplacering för enskilda repliker.

Zonredundans förbättrar programmets motståndskraft mot fel på zonnivå genom att se till att containerappens repliker är spridda över flera zoner.

Följande diagram visar ett exempel på en zonredundant containerapp som har tre repliker, var och en körs i en separat tillgänglighetszon:

Diagram som visar en zonredundant app med tre repliker som var och en körs i en separat tillgänglighetszon.

Stöd för regioner

Zonredundans är tillgängligt i alla regioner som stöder Container Apps och tillgänglighetszoner.

Information om vilka regioner som stöder tillgänglighetszoner finns i Azure-regioner med stöd för tillgänglighetszoner.

Information om vilka regioner som stöder Container Apps finns i Produkttillgänglighet per region.

Kravspecifikation

Zonredundans är tillgängligt för alla Container Apps-planer, inklusive profiler för både förbrukning och dedikerad arbetsbelastning.

Om du vill använda tillgänglighetszoner med Azure Container Apps måste du dock uppfylla följande krav:

  • Aktivera zonredundans när miljön skapas. Det går inte att ändra den här inställningen när miljön har skapats.

  • Distribuera en Container Apps-miljö i ett virtuellt nätverk. Det virtuella nätverket måste finnas i en region som stöder tillgänglighetszoner. Kontrollera att det virtuella nätverket har ett tillräckligt stort undernät. Konsumtionsmiljöer behöver ett undernät med ett /23 CIDR-intervall eller större, medan miljöer för arbetsbelastning kräver /27 eller större.

  • Konfigurera ditt minsta antal repliker till minst två för att säkerställa distribution över flera tillgänglighetszoner. Överväg att ange ett högre minsta antal repliker om något av dessa villkor gäller:

    • Din förväntade högsta belastning kräver fler än två repliker.
    • Du måste vara resilient mot flera samtidiga zonavbrott.
    • Du vill minimera den tid du väntar på att nya repliker ska skapas i andra zoner under ett zonfel.

Konfigurera stöd för tillgänglighetszoner

  • Skapa en zonredundant Container Apps-miljö. Distributionsinstruktioner för Azure-portalen, Azure CLI och Azure PowerShell finns i Anvisningar: Skapa en zonredundant containerapp.

  • Migrera till zonredundant driftsättning. Du kan inte aktivera zonredundans i en befintlig Container Apps-miljö. Om du vill uppgradera befintliga miljöer som inte är zonredundanta skapar du en ny miljö med zonredundans aktiverad i en region som stöds. Distribuera dina containerappar igen.

  • Inaktivera zonredundans. Zonredundans kan inte avaktiveras efter att den har aktiverats under skapandet av miljön. Om du behöver en icke-zonredundant distribution måste du skapa en ny miljö utan att aktivera alternativet zonredundans eller distribuera till en region som inte stöder tillgänglighetszoner.

  • Verifiera. Du kan använda Azure-portalen, Azure CLI och Azure PowerShell för att verifiera zonredundansstatusen för din miljö. Anvisningar finns i Verifiera zonredundans.

Kostnad

Du debiteras inte ytterligare avgifter utöver standardpriset för Container Apps när du aktiverar zonredundans för Azure Container Apps. Du betalar samma prissättning för beräkningsresurser, begäranden och virtuella processorkärnor oavsett om zonredundans är aktiverad eller inte. Mer information finns i Prissättning för Azure Container Apps och Container Apps-fakturering.

Kapacitetsplanering och -hantering

Om en tillgänglighetszon blir otillgänglig använder Container Apps-plattformen dina skalningsregler för att bestämma när du ska ersätta eventuella förlorade repliker i den zonen. Det är viktigt att skalningsreglerna är korrekt konfigurerade så att schemaläggaren kan fatta lämpliga schemaläggningsbeslut.

Följ dessa principer för att konfigurera skalningsreglerna korrekt:

  • Ange ett minsta antal repliker som programmet kan tolerera. Det kan ta en kort tid innan förlorade repliker ersätts eftersom plattformen måste identifiera att de gamla replikerna har förlorats. Sedan måste nya repliker starta och returnera en felfri status för beredskapsavsökningen innan de kan skickas inkommande begäranden. Om du inte kan tolerera någon tidsperiod där du kanske har färre repliker än det minimum du har angett kan du överväga överdimensionering för att säkerställa att programmet bibehåller sin prestanda även om en zon skulle bli otillgänglig.

  • Ange resursbegäranden och begränsningar på lämpligt sätt för dina containrar för att säkerställa att Container Apps-schemaläggaren kan fatta optimala placeringsbeslut mellan zoner. Underspecifika resurskrav kan leda till ojämna distributions- eller placeringsfel vid hög belastning.

Mer information finns i Ange skalningsregler för konfigurationsalternativ.

Normala åtgärder

Det här avsnittet beskriver vad du kan förvänta dig när Container Apps-resurser konfigureras för zonredundans och alla tillgänglighetszoner används.

  • Trafikroutning mellan zoner. Med zonredundanta Container Apps fungerar plattformen i en aktiv/aktiv modell där flera repliker samtidigt hanterar trafik. Ingresskontrollanten distribuerar inkommande begäranden över alla friska exemplar oavsett zonplats, med hjälp av round-robin belastningsfördelning som standard. Varje zon bearbetar begäranden oberoende av varandra och plattformen prioriterar inte någon viss zon för trafikdistribution. Hälsoavsökningar kommer från alla zoner för att säkerställa korrekt hälsobedömning av varje replik från flera perspektiv.

  • Datareplikering mellan zoner. Container Apps replikerar inte programdata mellan zoner eftersom de är utformade för tillståndslösa arbetsbelastningar. Alla data som din app lagrar i tillfällig lagring, inklusive i lagring med containeromfattning och lagring med replikomfattning, tas bort när containern eller repliken stängs av.

    För tillståndskänsliga datakrav monterar du en Azure Files-filresurs som konfigurerats för zonredundant lagring eller använder andra Azure-tjänster som Azure Cosmos DB eller Azure SQL Database som tillhandahåller egna replikeringsfunktioner mellan zoner.

    Plattformen replikerar endast metadata för kontrollplanet, inklusive dina appkonfigurationer, skalningsregler och hemligheter mellan zoner för hög tillgänglighet. Containeravbildningar hämtas från containerregistret till varje zon efter behov när repliker skapas.

Avslappningsupplevelse

Det här avsnittet beskriver vad du kan förvänta dig när Azure Logic Apps-resurser konfigureras för zonredundans och det uppstår ett avbrott i tillgänglighetszonen.

  • Identifiering och svar: Azure identifierar automatiskt zonfel. Container Apps slutar omedelbart att schemalägga nya repliker till den felaktiga zonen och börjar omdirigera trafik till friska repliker i de återstående zonerna. Plattformen hanterar alla redundansåtgärder automatiskt utan att du behöver göra något.

  • Meddelande: Container Apps meddelar dig inte när en zon är nere. Du kan dock använda Azure Service Health för att förstå den övergripande hälsan för Container Apps-tjänsten, inklusive eventuella zonfel. Konfigurera aviseringar för att ta emot meddelanden om problem på zonnivå. Mer information finns i Skapa Service Health-aviseringar i Azure-portalen.

    Du kan också övervaka hälsotillståndet för dina appar via Container Apps-mått i Azure Monitor. Konfigurera aviseringar som meddelar dig om att antalet repliker minskar och begärandefelprocenten ökar, så att du omedelbart får veta när zonrelaterade problem uppstår.

  • Aktiva begäranden: Begäranden under flygning till repliker i den misslyckade zonen kan tas bort eller överskrida tidsgränser eller anslutningsfel. Alla jobb som körs i den berörda zonen avbryts och markeras som misslyckade.

  • Förväntad dataförlust: Ingen dataförlust sker på plattformsnivå för Container Apps eftersom tjänsten är utformad för tillståndslösa arbetsbelastningar. Data som lagras i tillfällig lagring i tillgänglighetszonen går förlorade när repliken avslutas och tillfällig lagring bör endast användas för tillfälliga data.

  • Förväntad stilleståndstid: Program upplever minimal eller ingen stilleståndstid under zonfel. Den faktiska effekten beror på applikationens hälsoavkänningsinställningar och antalet repliker i friska zoner. Se till att klienterna följer tillfälliga riktlinjer för felhantering för att minimera påverkan.

    Alla jobbkörningar i den berörda zonen avbryts och registreras som misslyckade. Om du behöver ett jobb för att vara motståndskraftigt mot ett zonfel konfigurerar du återförsök eller konfigurerar parallellitet så att jobbet kör kopior av samma körning. Mer information finns i Avancerad jobbkonfiguration.

  • Trafikomdirigering: Ingresskontrollerens hälsokontroller identifierar snabbt repliker som inte kan nås och tar bort dem från belastningsutjämningspoolen. Beroende på appens konfiguration av hälsoavsökning sker detta vanligtvis inom cirka 30 sekunder. Efterföljande inkommande trafik distribueras över återstående felfria repliker. Detta sker transparent för klienter som fortsätter att använda samma program-URL.

    Om du har aktiverat sessionstillhörighet och en zon slutar fungera dirigeras klienter som tidigare dirigerades till repliker i den zonen till nya repliker eftersom de tidigare replikerna inte längre är tillgängliga. Alla tillstånd som är associerade med de tidigare replikerna går förlorade.

    Inga nya jobbkörningar kommer att schemaläggas i den felaktiga zonen.

  • Instanshantering: Nya replikinstanser kan skapas i friska zoner om reglerna för autoskalering utlöses baserat på ökad belastning.

Zonåterställning

När en tillgänglighetszon återställs efter fel återintegrerar Container Apps automatiskt zonen till aktiv tjänst utan att du behöver göra något. Plattformens hälsosonder identifierar när infrastrukturen i den återställda zonen blir tillgänglig, vilket gör att de börjar schemalägga nya repliker till zonen baserat på din skalningskonfiguration. Befintliga repliker i stabila zoner fortsätter att hantera trafik under den här återintegrationsprocessen och säkerställer att det inte sker några avbrott i tjänsten.

Container Apps balanserar gradvis om replikdistributionen i alla tillgängliga zoner som en del av normala skalningsåtgärder. Den här automatiska ombalanseringen sker när repliker skapas på grund av skalningshändelser eller när felaktiga repliker ersätts. Plattformen framtvingar inte omedelbar omdistribution av befintliga felfria repliker, vilket förhindrar onödiga omstarter av containrar och upprätthåller programstabilitet under återställningen.

Test för zonfel

Container Apps-plattformen hanterar trafikroutning, omkoppling vid fel och återkoppling efter fel för zonredundanta containerappar. Den här funktionen är helt hanterad, så du behöver inte initiera eller verifiera felprocesser i tillgänglighetszonen.

Om du vill verifiera programmets motståndskraft mot zonfel simulerar du avbrott på zonnivå på programnivån med hjälp av kontrollerade testmetoder. Stoppa eller ta bort repliker från specifika zoner genom att skala ned programmet och övervaka hur de återstående replikerna hanterar den ökade belastningen. Övervaka viktiga mått under återhämtningstestningen , inklusive antalet repliker, antalet lyckade begäranden, svarstiderna och autoskalningsbeteendet. Se till att ditt minsta antal repliker upprätthåller tjänstens tillgänglighet när repliker tas bort och kontrollera att skalningsreglerna kan hantera den ökade belastningen på de återstående replikerna. Testa konfigurationerna av hälsoavsökningar genom att avsiktligt orsaka fel i hälsoslutpunkter för att bekräfta att plattformen tar bort ohälsosamma instanser ur rotation inom dina förväntade tidsramar.

Stöd för flera regioner

Container Apps är en tjänst för en region. Om regionen blir otillgänglig är din miljö och dina appar inte heller tillgängliga.

Alternativa metoder för flera regioner

Om du vill minska risken för ett fel i en region som påverkar ditt program kan du distribuera miljöer i flera regioner. Följande steg hjälper till att stärka motståndskraften:

  • Distribuera dina program till miljöerna i varje region. Varje miljö kräver en egen konfiguration av virtuella nätverk, och undernätskraven gäller separat för varje regional distribution. Dina containeravbildningar måste vara tillgängliga från alla regioner, vilket du kan uppnå genom att använda Azure Container Registry med geo-replikering aktiverat.
  • Konfigurera belastningsutjämnings- och redundansprinciper med hjälp av en tjänst som Azure Front Door eller Azure Traffic Manager.
  • Replikera dina data mellan regioner så att du kan återställa ditt senaste programtillstånd.

Backups

Azure Container Apps tillhandahåller inte inbyggda säkerhetskopieringsfunktioner för dina program eller data. Som en tillståndslös containervärdplattform förväntar sig Container Apps att program hanterar sina egna strategier för datapersistence och återställning via externa tjänster. Dina programcontainrar och deras lokala filsystem är tillfälliga och alla data som lagras lokalt går förlorade när replikerna startas om eller flyttas.

Tillförlitlighet under programuppdateringar

Använd revisionshantering för att distribuera uppdateringar till ditt program utan stilleståndstid. Du kan skapa nya revisioner med uppdaterade containeravbildningar och utföra en växling med hjälp av en blågrön distributionsstrategi, eller gradvis fördela trafik med hjälp av regler för trafikdelning. Under programuppdateringar säkerställer plattformen att minsta antal repliker upprätthålls genom att skapa nya containrar innan gamla containrar avslutas, vilket förhindrar avbrott i tjänsten.

Mer information finns i Uppdatera och distribuera ändringar i Azure Container Apps.

Tillförlitlighet under tjänstunderhåll

Azure Container Apps utför automatiskt plattformsunderhåll för att tillämpa säkerhetsuppdateringar, distribuera nya funktioner och förbättra tjänstens tillförlitlighet. Plattformen använder löpande uppdateringar över feldomäner och tillgänglighetszoner för att minimera påverkan på program som körs. Under underhållsperioderna fortsätter containrarna att köras utan avbrott när uppdateringarna tillämpas på den underliggande infrastrukturen i etapper.

Du kan ange dina egna underhållsperioder, vilket är tidsperioder då du vill att underhåll ska utföras på dina appar. Kritiska uppdateringar kan dock inträffa utanför underhållsperioderna. Mer information finns i Planerat underhåll av Azure Container Apps.

Serviceavtal

Serviceavtal (SLA) för Azure-tjänster beskriver den förväntade tillgängligheten för varje tjänst och de villkor som din lösning måste uppfylla för att uppnå den tillgänglighetsförväntningen. Mer information finns i Serviceavtal för onlinetjänster.

Serviceavtalet för tillgänglighet för Azure Container Apps baseras på de skalningsregler som du anger för dina appar.