Hälsokontroller och kontrollerad degradering
Konfigurera hälsokontroller i lastbalanserare och Traffic Manager för att snabbt upptäcka fel och utforma mönster med kretsbrytare och kontrollerad degradering för applikationslagret.
Hälsokontroller och kontrollerad degradering är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Varför hälsokontroller är nödvändiga
Hälsokontroller är den mekanism som lastbalanserare och trafikhanterare använder för att upptäcka om en backend-instans kan hantera begäranden. Utan hälsokontroller kan en lastbalanserare fortsätta att skicka trafik till en server som har slutat fungera eller inte svarar, vilket orsakar fel som användarna ser. Korrekt konfigurerade hälsokontroller möjliggör automatisk omdirigering av trafik bort från instanser som inte är friska inom några sekunder efter ett fel.
Hälsokontroller i Azure Load Balancer
Azure Load Balancer stöder två typer av hälsokontroller:
- TCP probe — kontrollerar om backend kan acceptera en TCP-anslutning på en angiven port. Enkelt, men verifierar inte programlogiken.
- HTTP/HTTPS probe — skickar en GET-begäran till en angiven sökväg och förväntar sig ett 200 OK-svar. Mer träffsäkert eftersom det testar programmets slutpunkt direkt.
En backend markeras som ej frisk om kontrollen misslyckas ett konfigurerbart antal gånger i följd.
# Create an HTTP health probe for an Azure Load Balancer:
az network lb probe create \
--resource-group myRG \
--lb-name myLoadBalancer \
--name httpHealthProbe \
--protocol Http \
--port 80 \
--path /health \
--interval 15 \
--threshold 2Utforma en tillförlitlig hälso-slutpunkt
En väl utformad hälso-slutpunkt (/health) gör mer än att returnera 200 OK — den verifierar att programmets kritiska beroenden kan nås. En omfattande hälsokontroll kan testa anslutningen till databasen, cachen och eventuella efterföljande API:er. Om något beroende inte är tillgängligt returnerar slutpunkten en 5xx-statuskod, vilket signalerar till lastbalanseraren att ta bort instansen från rotationen.
# Example health endpoint response (JSON):
# GET /health
# {
# 'status': 'healthy',
# 'checks': {
# 'database': 'ok',
# 'cache': 'ok',
# 'externalApi': 'ok'
# }
# }
# If database check fails, return HTTP 503 instead of 200Hälsokontroller i Traffic Manager
Azure Traffic Manager använder också hälsokontroller, men på regional nivå. Den skickar regelbundna HTTP- eller HTTPS GET-begäranden till den konfigurerade slutpunkts-URL:en i varje region. Om en slutpunkt inte svarar inom tidsgränsen under ett angivet antal intervall i följd markerar Traffic Manager slutpunkten som degraderad och slutar dirigera DNS-frågor till den. Användarna omdirigeras då till en frisk region.
# Configure Traffic Manager health probe settings:
az network traffic-manager profile update \
--resource-group myRG \
--name myTMProfile \
--monitor-protocol HTTPS \
--monitor-port 443 \
--monitor-path /health \
--monitor-interval 30 \
--monitor-timeout 10 \
--monitor-tolerated-failures 3Hälsokontroller i Application Gateway
Azure Application Gateway har mer avancerade funktioner för hälsokontroller än standardversionen av Load Balancer. Den stöder anpassade hälsokontroller där ni kan ange värdhuvudet, det förväntade intervallet för statuskoder (till exempel 200-399) och en sträng som ska matchas i innehållet. Application Gateway stöder även dirigering per sökväg, så att olika backend-pooler kan ha olika konfigurationer för hälsokontroller för olika URL-sökvägar.
# Create a custom probe for Application Gateway:
az network application-gateway probe create \
--gateway-name myAppGateway \
--resource-group myRG \
--name customProbe \
--protocol Http \
--host-name-from-http-settings true \
--path /api/health \
--interval 20 \
--timeout 10 \
--threshold 3Vad innebär kontrollerad degradering?
Kontrollerad degradering är ett programs förmåga att fortsätta tillhandahålla begränsad funktionalitet när ett eller flera av dess beroenden slutar fungera. I stället för att krascha helt upptäcker programmet att en icke-kritisk tjänst inte är tillgänglig och växlar till ett degraderat men fortfarande användbart läge. Om till exempel en rekommendationstjänst slutar fungera kan en e-handelswebbplats visa generella förslag i stället för att hela produktsidan kraschar.
Circuit breaker-mönstret
Circuit breaker-mönstret förhindrar att en applikation upprepade gånger anropar en underliggande tjänst som inte fungerar. När en tjänst börjar fallera öppnas circuit breakern och returnerar omedelbart ett fel eller ett reservsvar utan att göra nätverksanropet. Efter en nedkylningsperiod övergår den till tillståndet halvöppet och tillåter ett testanrop. Om det lyckas stängs circuit breakern och normal drift återupptas.
# Circuit breaker states:
# CLOSED: normal operation, calls pass through
# OPEN: service failing, calls immediately return error/fallback
# HALF-OPEN: cool-down expired, try one request:
# success -> CLOSED
# failure -> OPEN (reset timer)
# Libraries: Polly (.NET), Resilience4j (Java), polly-js (JS)Nytt försök med exponentiell backoff
För tillfälliga fel (korta nätverksstörningar eller tillfällig överbelastning av en tjänst) är en strategi med nytt försök och exponentiell backoff lämplig. Applikationen försöker anropa tjänsten igen efter en fördröjning och fördubblar fördröjningen vid varje försök upp till ett maximum. Genom att lägga till jitter (slumpmässig variation) i fördröjningen förhindrar du att alla nya försök synkroniseras och överbelastar en tjänst som håller på att återhämta sig.
# Exponential backoff with jitter (pseudocode):
# attempt 1: wait 1s + random(0-500ms)
# attempt 2: wait 2s + random(0-500ms)
# attempt 3: wait 4s + random(0-500ms)
# attempt 4: wait 8s + random(0-500ms)
# max retries: 4
# max wait: 30s (cap)
# After max retries: return error to callerBulkhead-mönstret
Bulkhead-mönstret isolerar olika delar av en applikation i separata resurspooler, så att ett fel i ett område inte förbrukar alla resurser och slår ut hela systemet. Namnet kommer från skott i fartyg, som hindrar ett vattenfyllt utrymme från att sänka hela fartyget. I Azure kan detta innebära att separata trådpooler eller separata App Service-planer används för olika tjänster för att begränsa effekten av fel.
Reservsvar och cachade data
En vanlig teknik för degradering under kontrollerade former är att tillhandahålla cachade eller inaktuella data när en datakälla i realtid inte är tillgänglig. En produkts katalogsida kan till exempel visa gårdagens cachade priser från Azure Cache for Redis i stället för ett felmeddelande om databasen tillfälligt inte kan nås. Användarna upplever då en mindre olägenhet (något inaktuella priser) i stället för ett fullständigt avbrott.
Övervakning och aviseringar vid degradering
Degradering under kontrollerade former ska vara synlig och mätbar. Använd Application Insights för att spåra frekvensen av öppnade circuit breakers, reservsvar och nya försök som anpassade mätvärden. Konfigurera aviseringar när dessa mätvärden överskrider tröskelvärden, så att beredskapsteamet informeras om att applikationen körs i ett degraderat tillstånd även om användarupplevelsen verkar acceptabel.
Snabbtest
Testa dina kunskaper om koncepten i Microsoft Azure Fundamentals (AZ-900) från den här lektionen.
Sammanfattning av lektionen
I den här lektionen har du lärt dig att hälsokontroller gör det möjligt för lastbalanserare att upptäcka backend-servrar som inte fungerar och automatiskt dirigera om trafik; att degradering under kontrollerade former håller applikationer delvis fungerande när beroenden fallerar; samt att mönster som circuit breaker, retry med backoff och bulkhead implementerar motståndskraft på applikationsnivå. Härnäst utforskar vi koncept inom haveriberedskap — RTO, RPO och återställningsnivåer.
Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 150
- Lektioner
- 600
Vanliga frågor
Är lektionen ”Hälsokontroller och kontrollerad degradering” gratis?
Ja – hela texten till ”Hälsokontroller och kontrollerad degradering” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.
Vad lär jag mig i ”Hälsokontroller och kontrollerad degradering”?
Konfigurera hälsokontroller i lastbalanserare och Traffic Manager för att snabbt upptäcka fel och utforma mönster med kretsbrytare och kontrollerad degradering för applikationslagret. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?
Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Hälsokontroller och kontrollerad degradering”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?
Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Azure-SLA:er och sammansatta SLA:er
- Tillgänglighetsuppsättningar och tillgänglighetszoner
- Aktiv-aktiv-arkitektur över flera regioner
- Hälsokontroller och kontrollerad degradering