Pattern Multi-AZ per servizi stateful
Applicare Multi-AZ a RDS, ElastiCache, EFS ed ELB per eliminare i singoli punti di errore all'interno di una Region
Pattern Multi-AZ per servizi stateful è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 2 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 AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.
Perché i servizi stateful richiedono Multi-AZ
I servizi stateful — database, cache e file system — sono i componenti più difficili da rendere altamente disponibili, perché contengono dati che devono sopravvivere ai guasti. Se un database in una singola AZ si guasta, l'intera applicazione perde il proprio archivio dati. La risposta di AWS sono le implementazioni Multi-AZ, in cui il servizio mantiene una replica sincrona o quasi sincrona in una seconda Availability Zone, che può subentrare rapidamente quando il primario si guasta.
RDS Multi-AZ: standby sincrono
RDS Multi-AZ mantiene una replica standby sincrona in una AZ diversa. Ogni scrittura sul primario viene replicata in modo sincrono prima che venga confermato il completamento: ciò significa perdita di dati nulla (RPO=0), ma comporta un leggero aumento della latenza di scrittura. Quando il primario si guasta, RDS aggiorna automaticamente l'endpoint DNS affinché punti allo standby entro 60-120 secondi. L'applicazione deve solo riconnettersi allo stesso endpoint: non sono necessarie modifiche al codice.
# Enable Multi-AZ on existing RDS instance
aws rds modify-db-instance \
--db-instance-identifier mydb \
--multi-az \
--apply-immediately
# RDS endpoint stays the same after failover
# Application reconnects to same DNS nameArchitettura Multi-AZ di Aurora
Amazon Aurora porta il concetto di Multi-AZ a un livello superiore grazie a un livello di storage distribuito condiviso che replica automaticamente i dati in tre AZ, creando sei copie. Le istanze Aurora sono senza stato: leggono e scrivono in questo storage condiviso. Quando il writer Aurora primario si guasta, una replica di lettura in un'altra AZ viene promossa a writer in meno di 30 secondi. È più veloce del failover Multi-AZ di RDS e i dati sono sempre coerenti tra le AZ, senza dover configurare esplicitamente la replica su un'istanza standby.
# Aurora cluster endpoint automatically handles failover
# Writer endpoint: mydb.cluster-xxx.us-east-1.rds.amazonaws.com
# Reader endpoint: mydb.cluster-ro-xxx.us-east-1.rds.amazonaws.com
# Failover time: typically under 30 secondsReplica Multi-AZ di ElastiCache
ElastiCache for Redis supporta la modalità Multi-AZ tramite i gruppi di replica. Un nodo primario accetta le scritture e le replica in modo asincrono sulle repliche di lettura presenti in altre AZ. Quando il primario si guasta, ElastiCache promuove automaticamente una replica a primario. Con Redis in modalità cluster mode enabled, i dati vengono suddivisi tra più gruppi di nodi, ciascuno con un proprio primario e le relative repliche distribuite tra le AZ: ciò offre sia alta disponibilità sia scalabilità orizzontale.
# Create Redis replication group with Multi-AZ
aws elasticache create-replication-group \
--replication-group-id my-redis \
--replication-group-description 'Multi-AZ Redis' \
--num-cache-clusters 3 \
--cache-node-type cache.r6g.large \
--multi-az-enabled \
--automatic-failover-enabledEFS: Multi-AZ nativo
Amazon Elastic File System (EFS) è nativamente Multi-AZ: è un servizio regionale che archivia i dati in modo ridondante in più AZ all'interno di una regione. Si creano mount target nella subnet di ogni AZ e le istanze EC2 di qualsiasi AZ possono montare il file system tramite il mount target locale. Non è necessaria alcuna configurazione manuale della modalità Multi-AZ. EFS offre uno storage di file POSIX condiviso, a cui più istanze distribuite tra le AZ possono accedere contemporaneamente.
# Mount EFS from EC2 in any AZ
# Mount target is created per AZ automatically
sudo mount -t efs -o tls fs-12345678:/ /mnt/efs
# Or use EFS mount helper
sudo mount -t efs fs-12345678 /mnt/efsElastic Load Balancer tra le zone
Gli Elastic Load Balancer sono a loro volta Multi-AZ: ALB e NLB distribuiscono i nodi del load balancer in ogni AZ specificata. Con il cross-zone load balancing enabled (impostazione predefinita per ALB), ogni nodo del load balancer distribuisce il traffico in modo uniforme tra tutti i target registrati in tutte le AZ, non solo nella propria AZ. In questo modo, anche se tutte le istanze di una AZ si guastano, il load balancer continua a gestire il traffico attraverso le istanze presenti nelle AZ rimanenti.
# ALB automatically created in multiple AZs
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-AZ1 subnet-AZ2 subnet-AZ3 \
--security-groups sg-12345
# Cross-zone load balancing is ON by default for ALBPattern Multi-AZ con NAT Gateway
Un errore comune consiste nel distribuire un singolo NAT Gateway in una AZ, mentre le subnet private delle altre AZ instradano il traffico attraverso di esso. Se quella AZ si guasta, tutte le istanze private perdono l'accesso a Internet. Il pattern Multi-AZ corretto consiste nel distribuire un NAT Gateway per AZ e configurare la tabella di routing privata di ogni AZ in modo che instradi 0.0.0.0/0 attraverso il proprio NAT Gateway. In questo modo si elimina il NAT Gateway come SPOF tra AZ e si riducono i costi di trasferimento dati tra AZ.
# Create NAT Gateway in each AZ
aws ec2 create-nat-gateway \
--subnet-id subnet-public-AZ1 \
--allocation-id eipalloc-AZ1
aws ec2 create-nat-gateway \
--subnet-id subnet-public-AZ2 \
--allocation-id eipalloc-AZ2
# Each AZ's private route table points to its own NAT GWDynamoDB Multi-AZ per impostazione predefinita
DynamoDB è un servizio completamente gestito che replica automaticamente i dati in tre AZ all'interno di una regione: non è necessario configurare manualmente la modalità Multi-AZ. Ogni scrittura viene archiviata in modo duraturo in tutte e tre le AZ prima che venga restituito l'esito positivo. DynamoDB è quindi tollerante ai guasti a livello di AZ fin dall'uso predefinito. Per questo DynamoDB è spesso la scelta consigliata per il database quando la domanda d'esame sottolinea l'alta disponibilità con un sovraccarico operativo minimo.
RDS Proxy per una gestione più rapida delle connessioni
Durante un failover Multi-AZ di RDS, le applicazioni che mantengono connessioni persistenti al database possono riscontrare errori quando cambia l'endpoint. RDS Proxy si interpone tra l'applicazione e RDS e mantiene un pool di connessioni al database. Durante il failover, RDS Proxy reindirizza automaticamente le connessioni al nuovo primario, riducendo l'impatto del failover da 60-120 secondi a meno di 30 secondi per le applicazioni che utilizzano l'endpoint del proxy. RDS Proxy è utile anche con le funzioni Lambda, che creano molte connessioni di breve durata.
# Application connects to RDS Proxy endpoint
# Proxy endpoint: myproxy.proxy-xxx.us-east-1.rds.amazonaws.com
# RDS Proxy handles:
# - Connection pooling
# - Failover routing
# - IAM authentication
# - Secrets Manager integrationModalità di replica dei dati: sincrona e asincrona
Comprendere le modalità di replica è fondamentale per scegliere i pattern Multi-AZ. La replica sincrona (RDS Multi-AZ, EFS) garantisce RPO=0, perché ogni scrittura viene confermata in entrambe le AZ prima che venga restituito l'esito positivo. Il compromesso è una latenza di scrittura leggermente maggiore. La replica asincrona (repliche Redis di ElastiCache, Read Replica di RDS) offre una latenza di scrittura inferiore, ma comporta un piccolo ritardo di replica: se il primario si guasta prima del completamento della replica, alcuni dati potrebbero andare persi.
# Synchronous replication: RPO = 0, higher write latency
# Used by: RDS Multi-AZ, Aurora storage layer
# Asynchronous replication: RPO > 0 (replication lag)
# Used by: RDS Read Replicas, ElastiCache Redis replicas
# Replication lag can be monitored:
# aws cloudwatch get-metric-statistics \
# --namespace AWS/RDS --metric-name ReplicaLagTest del failover Multi-AZ
È opportuno testare regolarmente il failover Multi-AZ per verificare le proprie ipotesi sull'RTO. Per RDS, è possibile avviare un failover tramite l'opzione Reboot with failover della console o tramite la CLI. Monitorare CloudWatch per la metrica FailedSQLServerAgentJobsCount e controllare i log dell'applicazione per verificare che la riconnessione avvenga correttamente. Documentare la durata effettiva del failover: può differire dalla documentazione AWS in base alla classe dell'istanza e al carico di lavoro.
# Trigger RDS Multi-AZ failover test
aws rds reboot-db-instance \
--db-instance-identifier mydb \
--force-failover
# Monitor failover in CloudWatch
aws cloudwatch get-metric-statistics \
--namespace AWS/RDS \
--metric-name DatabaseConnections \
--dimensions Name=DBInstanceIdentifier,Value=mydbVerifica rapida
Verifichi la propria comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha appreso che: RDS Multi-AZ utilizza la replica sincrona con failover DNS automatico, Aurora utilizza un livello di storage condiviso tra tre AZ per un failover più rapido e EFS e DynamoDB sono nativamente Multi-AZ senza configurazione manuale. Distribuisca un NAT Gateway per AZ per evitare gli SPOF tra AZ. Ora esamineremo i pattern multi-regione active-active e active-passive.
Domande Frequenti
La lezione «Pattern Multi-AZ per servizi stateful» è gratuita?
Sì — il testo completo di «Pattern Multi-AZ per servizi stateful» è 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 AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.
Cosa imparerò in «Pattern Multi-AZ per servizi stateful»?
Applicare Multi-AZ a RDS, ElastiCache, EFS ed ELB per eliminare i singoli punti di errore all'interno di una Region Eserciti AWS Solutions Architect 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 AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Pattern Multi-AZ per servizi stateful»?
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 AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect 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
- Alta disponibilità e tolleranza ai guasti: definizioni e compromessi
- Pattern Multi-AZ per servizi stateful
- Active-active e active-passive in più Region
- Controlli di integrità, circuit breaker e logica di retry