0Pricing
Cloud & IT Cert Prep · Lezione

Active-active multi-site con Global Tables e Route 53

Eseguire simultaneamente la capacità completa di produzione in due o più Region utilizzando DynamoDB Global Tables, Aurora Global Database e il routing basato sulla latenza di Route 53

Active-active multi-site con Global Tables e Route 53 è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Definizione del multi-sito attivo-attivo

Multi-Site Active-Active è il livello più avanzato di disaster recovery, in cui l'applicazione viene eseguita alla piena capacità di produzione simultaneamente in due o più regioni AWS. A differenza dell'architettura attivo-passivo, in cui un ambiente di standby attende di subentrare, nell'architettura attivo-attivo entrambe le regioni gestiscono traffico reale degli utenti in ogni momento. Quando una regione si guasta, l'altra assorbe immediatamente il 100% del traffico, senza ritardi di failover. Questo modello riduce anche la latenza per gli utenti distribuiti a livello globale, servendoli dalla regione più vicina.

# 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)

Architettura di DynamoDB Global Tables

DynamoDB Global Tables costituisce la base dati delle architetture attivo-attivo. Global Tables abilita la replica multi-master e multi-regione: le applicazioni di qualsiasi regione possono leggere e scrivere in una tabella DynamoDB locale e le modifiche vengono replicate in tutte le altre regioni in circa 1 secondo. Per abilitare Global Tables, specifichi le regioni in cui deve esistere la tabella. AWS gestisce automaticamente tutta la replica, la risoluzione dei conflitti (vince l'ultima scrittura) e il failover.

# 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 per letture attive e scritture

Aurora Global Database fornisce letture attive-attive, ma scritture attive-passive. Tutte le regioni secondarie gestiscono le letture con un ritardo di replica inferiore a 1 secondo, mentre solo la regione primaria accetta scritture. Questa soluzione è ideale per le applicazioni con molte letture che richiedono letture a bassa latenza a livello globale e una primaria di scrittura ben definita. In caso di guasto regionale della primaria, è possibile promuovere una secondaria a primaria in meno di 1 minuto, ottenendo un RTO ridotto per il livello di scrittura. Si confronti questa soluzione con DynamoDB Global Tables, che supporta scritture attivo-attive in tutte le regioni.

# 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

Instradamento di Route 53 per l'attivo-attivo

Route 53 dirige il traffico nelle architetture multi-sito attivo-attivo. Utilizzi il routing basato sulla latenza per inviare ogni utente alla regione con la latenza di rete più bassa dalla sua posizione. Associ controlli dello stato a ogni record regionale: quando una regione non supera il controllo dello stato, Route 53 la rimuove automaticamente dalle risposte DNS e invia tutto il traffico alle regioni sane rimanenti. Imposti un TTL DNS di 60 secondi o inferiore per ridurre al minimo il tempo necessario agli utenti per passare alla regione sana.

# 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 per assorbire il traffico

Quando una regione si guasta in una configurazione attivo-attivo, la regione superstite deve gestire il doppio (o più) del traffico normale. Il Suo Auto Scaling Group deve avere una capacità massima sufficiente e policy di scale-out che reagiscano rapidamente. Configuri il target tracking scaling in base al numero di richieste ALB per destinazione, in modo che l'ASG aggiunga automaticamente istanze quando il traffico raddoppia. Valuti anche il pre-riscaldamento: durante le esercitazioni di failover, osservi la rapidità con cui l'ASG aumenta la capacità e verifichi che possa raggiungere la capacità richiesta entro l'obiettivo RTO.

# 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
  }'

Gestione delle sessioni nell'attivo-attivo

In un'architettura a singola regione, le sessioni degli utenti possono essere archiviate localmente sui server applicativi. In un'architettura multi-regione attivo-attivo, gli utenti potrebbero passare da una regione all'altra nelle richieste successive, interrompendo le sessioni lato server. Soluzioni: 1) sessioni stateless — memorizzi i dati della sessione in un JWT firmato o in un cookie che qualsiasi server di qualsiasi regione possa convalidare. 2) DynamoDB Global Tables per le sessioni — memorizzi le sessioni centralmente, con accesso in millisecondi da qualsiasi regione. 3) ElastiCache con Global Datastore — utilizzi la replica Redis tra regioni per archiviare le sessioni.

# 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

Conflitti di scrittura e risoluzione

La sfida principale dell'attivo-attivo con scritture multi-master consiste nei conflitti di scrittura. Se due utenti in regioni diverse aggiornano simultaneamente lo stesso record, quale aggiornamento deve prevalere? DynamoDB Global Tables utilizza la strategia vince l'ultima scrittura, basata sul timestamp della scrittura. Questa soluzione funziona bene nella maggior parte dei casi d'uso, ma può causare la perdita di dati in caso di aggiornamenti concorrenti (ad esempio, due utenti che incrementano simultaneamente un contatore). Progetti il modello dati in modo da evitare scritture simultanee sullo stesso elemento da parte di regioni diverse, utilizzando scritture condizionali oppure assegnando la proprietà dei dati in base alla regione.

# 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

Replica S3 nell'attivo-attivo

Per l'archiviazione di oggetti in un'architettura attivo-attivo, utilizzi S3 Cross-Region Replication con replica bidirezionale (disponibile nei bucket con il versioning abilitato). A differenza della CRR unidirezionale, la replica bidirezionale mantiene sincronizzati i bucket di entrambe le regioni: gli oggetti scritti in una regione vengono replicati automaticamente nell'altra. Questo è fondamentale per le applicazioni che scrivono i file caricati dagli utenti nel bucket S3 della regione locale, ma devono renderli accessibili a livello globale. Abiliti S3 Replication Time Control (RTC) per garantire che il 99,99% degli oggetti venga replicato entro 15 minuti.

# 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 con origini multi-regione

Utilizzi CloudFront con gruppi di origini per creare una CDN attivo-attiva con failover automatico. Configuri un'origine primaria (ALB in us-east-1) e un'origine secondaria (ALB in eu-west-1). CloudFront esegue automaticamente il failover verso l'origine secondaria quando quella primaria restituisce errori 5xx. Per gli asset statici distribuiti da S3, configuri gruppi di origini che puntino a bucket S3 in più regioni con replica bidirezionale. In questo modo aggiunge un livello di resilienza a livello CDN al routing attivo-attivo di 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"}]}
      }]
    }
  }'

Monitoraggio dello stato nell'attivo-attivo

Le architetture attivo-attivo richiedono un monitoraggio efficace per garantire che entrambe le regioni siano sane e che il traffico sia bilanciato come previsto. Metriche chiave: Route 53 HealthCheckPercentageHealthy per regione, DynamoDB ReplicationLatency per il ritardo di Global Tables, ALB RequestCount per regione per verificare la distribuzione del traffico e dashboard CloudWatch tra account e regioni per una visione unificata. Imposti allarmi quando il ritardo di replica supera la soglia RPO o quando la distribuzione del traffico diventa fortemente sbilanciata.

# 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

Quando scegliere l'attivo-attivo

L'attivo-attivo è appropriato quando: gli utenti sono distribuiti a livello globale e la latenza verso una singola regione è inaccettabile. L'RTO deve essere quasi nullo: l'azienda non può tollerare nemmeno pochi minuti di inattività. Un elevato throughput di scrittura richiede di distribuire le scritture tra più regioni. I requisiti normativi impongono l'elaborazione dei dati nel Paese di origine. Il costo è sostanzialmente maggiore rispetto agli altri livelli di DR, quindi scelga l'attivo-attivo solo quando i requisiti aziendali e gli aspetti economici lo giustificano chiaramente. Per molti carichi di lavoro, Warm Standby è sufficiente e molto più economico.

# 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)

Verifica rapida

Verifichi la Sua comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che: DynamoDB Global Tables abilita scritture multi-master tra regioni per un vero attivo-attivo, il routing basato sulla latenza di Route 53, insieme ai controlli dello stato, indirizza gli utenti verso la regione sana più vicina e la gestione delle sessioni deve essere stateless oppure utilizzare uno storage replicato a livello globale nell'attivo-attivo. L'attivo-attivo offre RTO e RPO quasi nulli, ma a un costo significativamente maggiore. Prossimamente esamineremo i pilastri dell'Eccellenza operativa e della Sicurezza del Well-Architected Framework.

Domande Frequenti

La lezione «Active-active multi-site con Global Tables e Route 53» è gratuita?

Sì — il testo completo di «Active-active multi-site con Global Tables e Route 53» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa imparerò in «Active-active multi-site con Global Tables e Route 53»?

Eseguire simultaneamente la capacità completa di produzione in due o più Region utilizzando DynamoDB Global Tables, Aurora Global Database e il routing basato sulla latenza di Route 53 Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?

Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Active-active multi-site con Global Tables e Route 53»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?

Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. RTO, RPO e livelli di disaster recovery
  2. Backup e ripristino
  3. Pilot Light e Warm Standby
  4. Active-active multi-site con Global Tables e Route 53
← Torna a Cloud & IT Cert Prep