AWS Solutions Architect · Lektion

Multi-site Active-Active med Global Tables og Route 53

Kør fuld produktionskapacitet i to eller flere Regions samtidigt ved hjælp af DynamoDB Global Tables, Aurora Global Database og Route 53-latensrouting

Lektion 4 af 413 trin

Multi-site Active-Active med Global Tables og Route 53 er en gratis AWS Solutions Architect-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i AWS Solutions Architect, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.

Active-active med flere lokationer forklaret

Multi-Site Active-Active er det højeste niveau inden for disaster recovery, hvor din applikation kører med fuld produktionskapacitet i to eller flere AWS-regioner samtidig. I modsætning til active-passive, hvor en standby-instans venter på at overtage, leverer begge regioner altid trafik til aktive brugere i active-active-konfigurationen. Når én region svigter, overtager den anden straks 100 % af trafikken uden forsinkelse til failover. Dette mønster reducerer også latenstiden for brugere, der er geografisk spredt, ved at levere indhold fra den nærmeste region.

# Active-Active traffic split (normal operation):
# us-east-1: serving ~50% of users (North America)
# eu-west-1: serving ~50% of users (Europe)

# Active-Active traffic split (us-east-1 failure):
# us-east-1: 0% (health check failed)
# eu-west-1: 100% (ASG scales up automatically)

# RTO: near-zero (DNS TTL propagation only)
# RPO: near-zero (with DynamoDB Global Tables)

Arkitektur for DynamoDB Global Tables

DynamoDB Global Tables er datagrundlaget for active-active-arkitekturer. Global Tables muliggør replikering med flere mastere på tværs af regioner — applikationer i alle regioner kan læse og skrive til en lokal DynamoDB-tabel, og ændringer replikeres til alle andre regioner inden for cirka 1 sekund. Du aktiverer Global Tables ved at angive, hvilke regioner tabellen skal findes i. AWS håndterer al replikering, konfliktløsning (den senest skrevne vinder) og failover automatisk.

# Create DynamoDB table and add global regions
aws dynamodb create-table \
  --table-name UserSessions \
  --attribute-definitions AttributeName=userId,AttributeType=S \
  --key-schema AttributeName=userId,KeyType=HASH \
  --billing-mode PAY_PER_REQUEST \
  --region us-east-1

# Add replica regions for Global Table
aws dynamodb update-table \
  --table-name UserSessions \
  --replica-updates '[{"Create":{"RegionName":"eu-west-1"}},{"Create":{"RegionName":"ap-southeast-1"}}]' \
  --region us-east-1

Aurora Global Database til aktive skrivninger og læsninger

Aurora Global Database understøtter aktive læsninger, men passive skrivninger. Alle sekundære regioner leverer læsninger med under 1 sekunds replikationsforsinkelse, mens kun den primære region accepterer skrivninger. Det er ideelt til læsetunge applikationer, der ønsker læsninger med lav latenstid globalt og en tydeligt defineret primær skrive-region. Under et regionalt svigt i den primære region kan du promovere en sekundær region til primær på under 1 minut og dermed opnå en lav RTO for skrive-området. Sammenlign dette med DynamoDB Global Tables, som understøtter aktive skrivninger i alle regioner.

# Aurora Global Database read configuration
# Primary region (us-east-1): reads + writes
# Secondary region (eu-west-1): reads only
#   ~100ms replication lag, serves EU users low-latency reads

# Application reads from local Aurora endpoint
# Application writes to primary region Aurora endpoint

# Java connection string with region routing:
# readEndpoint=eu-west-1.cluster-ro-xxx.aurora.amazonaws.com
# writeEndpoint=us-east-1.cluster-xxx.aurora.amazonaws.com

Route 53-routing til active-active

Route 53 fungerer som trafikdirigent for active-active-arkitekturer med flere lokationer. Brug latensbaseret routing til at sende hver bruger til den region, der har den laveste netværkslatenstid fra brugerens placering. Tilknyt sundhedstjek til hver regional post — når en region ikke består sit sundhedstjek, fjerner Route 53 den automatisk fra DNS-svarene og sender al trafik til de resterende sunde regioner. Indstil DNS-TTL til 60 sekunder eller mindre for at minimere den tid, det tager for brugere at skifte over til den sunde region.

# Route 53 latency routing with health checks
aws route53 change-resource-record-sets \
  --hosted-zone-id ZXXX \
  --change-batch '{
    "Changes": [
      {
        "Action": "UPSERT",
        "ResourceRecordSet": {
          "Name": "api.example.com",
          "Type": "A",
          "Region": "us-east-1",
          "SetIdentifier": "us-east-1",
          "HealthCheckId": "hc-us-east-1",
          "AliasTarget": {"DNSName": "alb-us-east-1.amazonaws.com", "EvaluateTargetHealth": false}
        }
      }
    ]
  }'

Auto Scaling til håndtering af trafik

Når én region svigter i en active-active-konfiguration, skal den overlevende region håndtere 2 gange (eller mere) den normale trafik. Din Auto Scaling Group skal have tilstrækkelig maksimal kapacitet og politikker for opskalering, der reagerer hurtigt. Konfigurer målbaseret skalering baseret på ALB-anmodningstælling pr. mål, så ASG automatisk tilføjer instanser, når trafikken fordobles. Overvej også forvarmning: Under failover-øvelser skal du observere, hvor hurtigt din ASG skalerer ud, og sikre, at den kan nå den krævede kapacitet inden for dit RTO-mål.

# ASG target tracking for request count
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name app-asg-eu-west-1 \
  --policy-name scale-on-requests \
  --policy-type TargetTrackingScaling \
  --target-tracking-configuration '{
    "TargetValue": 1000,
    "PredefinedMetricSpecification": {
      "PredefinedMetricType": "ALBRequestCountPerTarget",
      "ResourceLabel": "app/my-alb/xxx/targetgroup/my-tg/yyy"
    },
    "ScaleInCooldown": 60,
    "ScaleOutCooldown": 30
  }'

Sessionshåndtering i active-active

I en arkitektur med én region kan brugersessioner gemmes lokalt på applikationsservere. I active-active på tværs af flere regioner kan brugere skifte mellem regioner ved efterfølgende anmodninger, så sessionshåndtering på serversiden bryder sammen. Løsninger: 1) Tilstandsløse sessioner — gem sessionsdata i en signeret JWT eller cookie, som enhver server i enhver region kan validere. 2) DynamoDB Global Tables til sessioner — gem sessioner centralt med adgang på millisekundniveau fra enhver region. 3) ElastiCache with Global Datastore — Redis-replikering på tværs af regioner til lagring af sessioner.

# DynamoDB Global Table for session storage
# Session item structure:
{
  'sessionId': 'sess-abc123',
  'userId': 'usr-456',
  'data': {'cart': [...], 'preferences': {}},
  'expiresAt': 1750000000,
  'lastUpdatedRegion': 'us-east-1'
}

# Application reads from local region DynamoDB
# Writes replicate to all regions within ~1 second
# No sticky sessions needed on the ALB

Skrivekonflikter og konfliktløsning

Den største udfordring ved active-active med skrivninger fra flere mastere er skrivekonflikter. Hvis to brugere i forskellige regioner opdaterer den samme post samtidig, hvilken opdatering vinder så? DynamoDB Global Tables bruger den senest skrevne vinder baseret på tidspunktet for skrivningen. Det fungerer godt i de fleste anvendelser, men kan medføre datatab ved konkurrerende opdateringer (f.eks. når to brugere øger en tæller samtidig). Design din datamodel, så samtidige skrivninger til det samme element fra forskellige regioner undgås, ved hjælp af betingede skrivninger eller ved at fordele dataejerskabet efter region.

# Avoid conflicts with conditional writes
aws dynamodb update-item \
  --table-name UserProfiles \
  --key '{"userId":{"S":"usr-123"}}' \
  --update-expression 'SET profileVersion = profileVersion + :inc, username = :name' \
  --condition-expression 'profileVersion = :expectedVersion' \
  --expression-attribute-values '{
    ":inc":{"N":"1"},
    ":name":{"S":"newname"},
    ":expectedVersion":{"N":"5"}
  }'
# If another region already updated version, this fails gracefully

S3-replikering i active-active

Til objektlagring i active-active skal du bruge S3 Cross-Region Replication with bidirectional replication (tilgængelig for buckets, hvor versionering er aktiveret). I modsætning til CRR i én retning holder tovejsreplikering begge regionsbuckets synkroniserede — objekter, der skrives i den ene region, replikeres automatisk til den anden. Dette er afgørende for applikationer, der skriver brugeruploadede filer til den lokale regions S3-bucket, men har brug for, at filerne er tilgængelige globalt. Aktivér S3 Replication Time Control (RTC) for at garantere, at 99,99 % af objekterne replikeres inden for 15 minutter.

# Bidirectional S3 replication
# Bucket A (us-east-1) replicates to Bucket B (eu-west-1)
# Bucket B (eu-west-1) replicates to Bucket A (us-east-1)

# Enable S3 RTC for guaranteed replication time
aws s3api put-bucket-replication \
  --bucket us-east-1-uploads \
  --replication-configuration '{
    "Rules": [{
      "Status": "Enabled",
      "ReplicationTime": {"Status": "Enabled", "Time": {"Minutes": 15}},
      "Metrics": {"Status": "Enabled", "EventThreshold": {"Minutes": 15}},
      "Destination": {"Bucket": "arn:aws:s3:::eu-west-1-uploads"}
    }]
  }'

CloudFront med oprindelser i flere regioner

Brug CloudFront with origin groups til at oprette et active-active-CDN med automatisk failover. Konfigurer en primær oprindelse (ALB i us-east-1) og en sekundær oprindelse (ALB i eu-west-1). CloudFront skifter automatisk over til den sekundære oprindelse, når den primære returnerer 5xx-fejl. For statiske aktiver, der leveres fra S3, skal du konfigurere oprindelsesgrupper, som peger på S3-buckets i flere regioner med tovejsreplikering. Dette tilføjer et robusthedslag på CDN-niveau oven på din active-active-routing med Route 53.

# CloudFront origin group for multi-region failover
aws cloudfront create-distribution \
  --distribution-config '{
    "Origins": {
      "Quantity": 2,
      "Items": [
        {"Id": "us-east-1", "DomainName": "alb-us-east-1.amazonaws.com"},
        {"Id": "eu-west-1", "DomainName": "alb-eu-west-1.amazonaws.com"}
      ]
    },
    "OriginGroups": {
      "Items": [{
        "Id": "multi-region-group",
        "FailoverCriteria": {"StatusCodes": {"Items": [500,502,503,504]}},
        "Members": {"Items": [{"OriginId": "us-east-1"},{"OriginId": "eu-west-1"}]}
      }]
    }
  }'

Overvågning af active-active-sundhed

Active-active-arkitekturer kræver robust overvågning for at sikre, at begge regioner er sunde, og at trafikken fordeles som forventet. Vigtige målepunkter er: Route 53 HealthCheckPercentageHealthy pr. region, DynamoDB ReplicationLatency for forsinkelsen i Global Tables, ALB RequestCount pr. region for at kontrollere trafikfordelingen samt CloudWatch cross-account/cross-region dashboards for et samlet overblik. Opret alarmer, når replikationsforsinkelsen overskrider din RPO-tærskel, eller når trafikfordelingen bliver markant skæv.

# CloudWatch alarm for DynamoDB Global Table replication lag
aws cloudwatch put-metric-alarm \
  --alarm-name 'GlobalTable-ReplicationLag-eu-west-1' \
  --metric-name ReplicationLatency \
  --namespace AWS/DynamoDB \
  --dimensions Name=TableName,Value=UserSessions Name=ReceivingRegion,Value=eu-west-1 \
  --period 60 \
  --evaluation-periods 3 \
  --threshold 5000 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:123:ops-alerts

Hvornår er active-active det rette valg

Active-active er passende, når: brugerne er geografisk spredt, og latenstiden til én enkelt region er uacceptabel. RTO skal være tæt på nul — virksomheden kan ikke acceptere selv få minutters nedetid. Høj skrivegennemstrømning kræver, at skrivninger fordeles på tværs af regioner. Lovgivningsmæssige krav kræver databehandling i det pågældende land. Omkostningerne er væsentligt højere end ved andre DR-niveauer, så vælg kun active-active, når forretningskravene og økonomien tydeligt berettiger det. For mange arbejdsbelastninger er Warm Standby tilstrækkeligt og langt billigere.

# Active-Active justification checklist:
# [ ] Users in 2+ continents with latency SLAs
# [ ] RTO requirement < 5 minutes
# [ ] Revenue impact of downtime justifies 2x+ cost
# [ ] Data must remain within specific regions (regulations)
# [ ] Write throughput exceeds single-region capacity

# If fewer than 2-3 boxes checked:
# Consider Warm Standby instead (lower cost, adequate RTO)

Hurtigt tjek

Test din forståelse af AWS Solutions Architect (SAA-C03)-koncepterne fra denne lektion.

Opsummering af lektionen

I denne lektion har du lært, at: DynamoDB Global Tables muliggør skrivninger med flere mastere på tværs af regioner og dermed ægte active-active, Route 53-latensrouting med sundhedstjek leder brugerne til den nærmeste sunde region, og sessionshåndtering skal være tilstandsløs eller bruge globalt replikeret lagring i active-active. Active-active giver en RTO og RPO tæt på nul, men til betydeligt højere omkostninger. Dernæst ser vi på søjlerne Operational Excellence og Security i Well-Architected Framework.

Gratis at komme i gang

Lær AWS Solutions Architect med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Multi-site Active-Active med Global Tables og Route 53” gratis?

Ja — alle 3 lektioner i læringssporet AWS Solutions Architect, inklusive “Multi-site Active-Active med Global Tables og Route 53”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. AWS Solutions Architect-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Multi-site Active-Active med Global Tables og Route 53”?

Kør fuld produktionskapacitet i to eller flere Regions samtidigt ved hjælp af DynamoDB Global Tables, Aurora Global Database og Route 53-latensrouting Du øver dig i AWS Solutions Architect med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på AWS Solutions Architect?

Der kræves ingen tidligere erfaring. AWS Solutions Architect på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Multi-site Active-Active med Global Tables og Route 53”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne AWS Solutions Architect-lektion?

Ja. Alle AWS Solutions Architect-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. RTO, RPO og DR-niveauer
  2. Sikkerhedskopiering og gendannelse
  3. Pilot Light og varm standby
  4. Multi-site Active-Active med Global Tables og Route 53
← Tilbage til AWS Solutions Architect