Helsesjekker, kretsbrytere og logikk for nye forsøk
Bruk helsesjekker i ELB, endepunktsjekker i Route 53 og kretsbrytere på applikasjonsnivå for å oppdage feil og rute trafikken automatisk på nytt
Helsesjekker, kretsbrytere og logikk for nye forsøk er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.
Hvorfor automatisert feildeteksjon er viktig
I distribuerte systemer svikter komponenter kontinuerlig – instanser krasjer, nettverkspartisjoner oppstår, og nedstrømstjenester blir overbelastet. Uten automatisert feildeteksjon fortsetter trafikken å strømme til komponenter som har sviktet, noe som forårsaker kaskaderende feil. AWS tilbyr flere lag med helsekontroller: ELB-helsekontroller oppdager ustabile instanser, Route 53-helsekontroller oppdager ustabile endepunkter, og Auto Scaling erstatter instanser som har sviktet. Mønstre på applikasjonsnivå, som circuit breakers og retries, fullfører bildet av robusthet.
ELB-helsesjekker
Helsesjekker for Elastic Load Balancer sender med jevne mellomrom forespørsler til registrerte mål for å avgjøre om de er friske. De konfigurerer sti for helsesjekk (for eksempel /health), protokoll, port, intervall (standard er 30 sekunder) og terskel for frisk eller usunn (antall sammenhengende vellykkede eller mislykkede sjekker). Når et mål ikke består helsesjekkene, slutter ELB å dirigere trafikk til det. Målet evalueres kontinuerlig på nytt og legges til igjen når det har nådd terskelen for friske mål.
# Configure ALB target group health check
aws elbv2 modify-target-group \
--target-group-arn arn:aws:elasticloadbalancing::123:targetgroup/my-tg/abc \
--health-check-protocol HTTPS \
--health-check-port 443 \
--health-check-path /health \
--health-check-interval-seconds 15 \
--healthy-threshold-count 2 \
--unhealthy-threshold-count 3 \
--matcher HttpCode=200Route 53-helsesjekker
Helsesjekker i Route 53 overvåker endepunkter fra flere steder globalt og fungerer sammen med DNS-ruting for failover. Det finnes tre typer: Endepunktsjekker sender forespørsler direkte til URL-en til applikasjonen. Beregnede helsesjekker kombinerer flere underordnede helsesjekker med AND/OR-logikk (nyttig for kompleks overvåking). CloudWatch-alarmsjekker overlater helsevurderingen til CloudWatch – nyttig når De ikke kan eksponere et offentlig helsendepunkt, eller trenger helsevurderinger basert på måleverdier.
# Create endpoint health check
aws route53 create-health-check \
--caller-reference ref-$(date +%s) \
--health-check-config '{
"Type": "HTTPS",
"FullyQualifiedDomainName": "api.example.com",
"Port": 443,
"ResourcePath": "/health",
"RequestInterval": 10,
"FailureThreshold": 2,
"EnableSNI": true
}'Helsesjekker for Auto Scaling
Auto Scaling-grupper kan bruke to typer helsesjekker: EC2-helsesjekker oppdager feil i instanser på hypervisornivå (feil i statussjekken for instansen). ELB-helsesjekker tar i større grad hensyn til applikasjonen – en instans kan være i drift, men likevel levere feil, og dette oppdages av ELB-helsesjekker. De kan konfigurere ASG til å bruke ELB-helsesjekker, slik at feil på applikasjonsnivå også utløser utskifting av instansen, og ikke bare underliggende EC2-feil.
# Configure ASG to use ELB health checks
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name my-asg \
--health-check-type ELB \
--health-check-grace-period 300
# Grace period: time after launch before health checks start
# Prevents premature termination during startupCircuit Breaker-mønsteret
En circuit breaker er et mønster på applikasjonsnivå som hindrer kaskaderende feil ved å overvåke kall til en nedstrøms tjeneste og midlertidig stoppe kall når antallet feil overskrider en terskel. Circuit breakeren har tre tilstander: Closed (normal drift), Open (terskelen for feil er overskredet, og kall blokkeres umiddelbart) og Half-Open (etter en tidsavbruddsperiode tillates et lite antall testkall for å kontrollere om tjenesten er gjenopprettet). AWS App Mesh og SDK-er for applikasjoner, som Resilience4j, implementerer dette mønsteret.
# Circuit breaker states
# CLOSED: All calls pass through
# failureCount < threshold -> stay CLOSED
# failureCount >= threshold -> open circuit
# OPEN: All calls fail immediately
# After timeout -> enter HALF-OPEN
# HALF-OPEN: Allow limited test calls
# Success -> return to CLOSED
# Failure -> return to OPEN
# Example threshold: 5 failures in 10 seconds -> OPENAWS App Mesh for Circuit Breaking
AWS App Mesh er et tjenestenett som implementerer circuit breaking, retries og tidsavbruddspolicyer på infrastrukturnivå uten kodeendringer. De definerer circuit breaker-policyer i konfigurasjonen for den virtuelle noden eller den virtuelle ruteren. Når en oppstrøms tjeneste blir usunn, åpner Envoy-proxyen i App Mesh automatisk circuit breakeren og returnerer feil umiddelbart i stedet for å vente på tidsavbrudd. Dette er spesielt verdifullt i mikrotjenestearkitekturer som kjører på ECS eller EKS.
# App Mesh virtual node with circuit breaker
# (JSON configuration)
{
'spec': {
'listeners': [{
'outlierDetection': {
'consecutiveErrors': 5,
'interval': {'unit': 'ms', 'value': 10000},
'baseEjectionDuration': {'unit': 's', 'value': 30},
'maxEjectionPercent': 50
}
}]
}
}Retry-logikk og eksponentiell backoff
Retry-logikk forsøker automatisk å utføre mislykkede operasjoner på nytt, men naiv retry-logikk (umiddelbar retry i en tett løkke) kan forverre situasjoner med overbelastning. Eksponentiell backoff øker ventetiden mellom forsøk eksponentielt: 1s, 2s, 4s, 8s ... Dette reduserer belastningen på en tjeneste som sliter, og gir den tid til å gjenopprette seg. Jitter (tilfeldig variasjon i retry-intervallene) hindrer problemet med en flokk som stormer til, der alle klienter prøver på nytt samtidig etter et kort avbrudd. AWS SDK implementerer automatisk eksponentiell backoff med jitter.
# AWS SDK retries with exponential backoff automatically
# Default retry config for most AWS services:
# Max retries: 3-5 (varies by service)
# Base delay: 100ms
# Max delay: ~20 seconds
# Python boto3 custom retry configuration
import boto3
from botocore.config import Config
config = Config(
retries={'max_attempts': 5, 'mode': 'adaptive'}
)
client = boto3.client('s3', config=config)Idempotens for trygge retries
Retries er bare trygge hvis operasjonene er idempotente – det gir samme resultat å utføre den samme operasjonen flere ganger. Det er for eksempel idempotent å opprette et S3-objekt med samme nøkkel (samme resultat). Å legge inn en bestilling to ganger oppretter derimot to bestillinger – det er ikke idempotent. Utform API-er idempotent ved å bruke idempotensnøkler levert av klienten: Serveren lagrer resultatet av den første forespørselen og returnerer det samme resultatet for senere forespørsler med samme nøkkel. DynamoDB, SQS og API Gateway støtter mønstre med idempotensnøkler.
# SQS message deduplication ID for FIFO queues
aws sqs send-message \
--queue-url https://sqs.us-east-1.amazonaws.com/123/orders.fifo \
--message-body '{"orderId":"ord-123","items":[...]}' \
--message-group-id 'customer-456' \
--message-deduplication-id 'ord-123-attempt-1'
# SQS deduplicates messages with same ID for 5 minutesKonfigurering av tidsavbrudd
Uten eksplisitte tidsavbrudd kan en treg nedstrøms tjeneste føre til at tråder blokkeres på ubestemt tid, slik at tilkoblingspoolen tømmes og kaskaderende feil oppstår. Angi tidsavbrudd på hvert lag: tilkoblingstidsavbrudd (tiden det tar å opprette en TCP-tilkobling), lesetidsavbrudd (tiden det tar å motta et svar) og samlet tidsavbrudd for forespørselen. I AWS konfigurerer De inaktivitetstidsavbruddet for ELB (standard 60 s), kjøringstidsavbruddet for Lambda (maks. 15 min) og integrasjonstidsavbruddet for API Gateway (maks. 29 s). Tidsavbrudd utløser retry- eller circuit-breaker-logikken.
# Lambda: set execution timeout
aws lambda update-function-configuration \
--function-name my-function \
--timeout 30
# ALB: configure idle timeout
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn <ALB-ARN> \
--attributes Key=idle_timeout.timeout_seconds,Value=60
# API Gateway: integration timeout max 29000msDead Letter Queues for mislykket behandling
Når meldingsbehandlingen mislykkes gjentatte ganger, fanger en Dead Letter Queue (DLQ) opp meldinger som ikke kunne behandles etter det maksimale antallet mottaksforsøk. Konfigurer DLQ-er for SQS-køer og Lambda-tilordninger for hendelseskilder for å hindre at ugyldige meldinger blokkerer køen på ubestemt tid. Meldinger i DLQ-en kan inspiseres, spilles av på nytt etter at feilen er rettet, eller arkiveres. DLQ-er er en kritisk komponent i robuste hendelsesdrevne arkitekturer.
# Configure DLQ on SQS queue
aws sqs set-queue-attributes \
--queue-url https://sqs.us-east-1.amazonaws.com/123/main-queue \
--attributes '{
"RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:123:dlq\",\"maxReceiveCount\":3}"
}'
# After 3 failed processing attempts, message goes to DLQOvervåking av feil med CloudWatch
Effektive helsesjekker og circuit breakere krever overvåking for å forstå feilmønstre. CloudWatch er laget for observability: opprett alarmer for ELB UnHealthyHostCount (instanser som ikke består helsesjekkene), frekvensen for Lambda Errors, SQS NumberOfMessagesSentToDLQ (meldinger som havner i DLQ) og Target group RequestCountPerTarget. Sett opp SNS-varsler slik at vaktteamet umiddelbart blir varslet når automatiske helsesjekker oppdager forringet tilstand.
# CloudWatch alarm for unhealthy hosts
aws cloudwatch put-metric-alarm \
--alarm-name 'ALB-UnhealthyHosts' \
--alarm-description 'Alert when targets fail health checks' \
--metric-name UnHealthyHostCount \
--namespace AWS/ApplicationELB \
--period 60 \
--evaluation-periods 2 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--alarm-actions arn:aws:sns:us-east-1:123:ops-teamKunnskapssjekk
Test forståelsen Deres av AWS Solutions Architect-konsepter (SAA-C03) fra denne leksjonen.
Oppsummering av leksjonen
I denne leksjonen har De lært at ELB- og Route 53-helsesjekker automatiserer feildeteksjon på infrastrukturnivå, at circuit breakere hindrer kaskaderende feil ved å stoppe kall til usunne tjenester, og at eksponentiell backoff med jitter gjør retries trygge under belastning. Dead Letter Queues fanger opp mislykkede meldinger for inspeksjon. Neste tema er RTO, RPO og nivåer for katastrofegjenoppretting.
Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 150
- Leksjoner
- 600
Ofte stilte spørsmål
Er leksjonen «Helsesjekker, kretsbrytere og logikk for nye forsøk» gratis?
Ja – hele teksten i «Helsesjekker, kretsbrytere og logikk for nye forsøk» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.
Hva lærer jeg i «Helsesjekker, kretsbrytere og logikk for nye forsøk»?
Bruk helsesjekker i ELB, endepunktsjekker i Route 53 og kretsbrytere på applikasjonsnivå for å oppdage feil og rute trafikken automatisk på nytt Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?
Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Helsesjekker, kretsbrytere og logikk for nye forsøk»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?
Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Høy tilgjengelighet kontra feiltoleranse: Definisjoner og avveininger
- Multi-AZ-mønstre for tilstandsbaserte tjenester
- Multi-Region aktiv-aktiv og aktiv-passiv
- Helsesjekker, kretsbrytere og logikk for nye forsøk