Activo-activo en varias ubicaciones con Global Tables y Route 53
Ejecute simultáneamente toda la capacidad de producción en dos o más Regiones mediante DynamoDB Global Tables, Aurora Global Database y el enrutamiento por latencia de Route 53
Activo-activo en varias ubicaciones con Global Tables y Route 53 es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
Definición de Multi-Site Active-Active
Multi-Site Active-Active es el nivel más alto de recuperación ante desastres, en el que la aplicación se ejecuta a plena capacidad de producción en dos o más regiones de AWS simultáneamente. A diferencia de una configuración activa-pasiva, en la que un entorno en espera aguarda para tomar el control, en una configuración activa-activa ambas regiones atienden tráfico real de usuarios en todo momento. Cuando una región falla, la otra absorbe inmediatamente el 100 % del tráfico, sin retraso de failover. Este patrón también reduce la latencia para los usuarios distribuidos globalmente, ya que les atiende desde la región más cercana.
# 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)Arquitectura de DynamoDB Global Tables
DynamoDB Global Tables es la base de datos de las arquitecturas activa-activa. Global Tables permite la replicación multi-primary y multirregional: las aplicaciones de cualquier región pueden leer y escribir en una tabla local de DynamoDB, y los cambios se replican en las demás regiones en aproximadamente 1 segundo. Para habilitar Global Tables, debe especificar en qué regiones debe existir la tabla. AWS gestiona automáticamente toda la replicación, la resolución de conflictos (gana la última escritura) y el 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-1Aurora Global Database para lecturas activas y escrituras en la primaria
Aurora Global Database proporciona lecturas activas-activa, pero escrituras activas-pasivas. Todas las regiones secundarias atienden lecturas con una latencia de replicación inferior a 1 segundo, mientras que solo la región primaria acepta escrituras. Esta opción es ideal para aplicaciones con muchas lecturas que desean lecturas de baja latencia a nivel global y una región primaria de escritura claramente definida. Durante un fallo regional de la región primaria, puede promover una secundaria a primaria en menos de 1 minuto y conseguir un RTO bajo para la capa de escritura. Compárelo con DynamoDB Global Tables, que admite escrituras activa-activa en todas las regiones.
# 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.comEnrutamiento de Route 53 para Active-Active
Route 53 dirige el tráfico en las arquitecturas activa-activa multirregionales. Utilice el enrutamiento basado en latencia para enviar a cada usuario a la región con la menor latencia de red desde su ubicación. Asocie comprobaciones de estado a cada registro regional: cuando una región no supera su comprobación de estado, Route 53 la elimina automáticamente de las respuestas DNS y envía todo el tráfico a las regiones saludables restantes. Configure el TTL en 60 segundos o menos para minimizar el tiempo que tardan los usuarios en cambiar a la región saludable.
# 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 para absorber el tráfico
Cuando una región falla en una configuración activa-activa, la región superviviente debe gestionar el doble de su tráfico normal (o incluso más). Su Auto Scaling Group debe tener una capacidad máxima suficiente y políticas de escalado horizontal que reaccionen con rapidez. Configure el escalado basado en seguimiento de objetivos según el recuento de solicitudes del ALB por destino, de modo que el ASG añada instancias automáticamente cuando el tráfico se duplique. Considere también el precalentamiento: durante los simulacros de failover, observe con qué rapidez escala horizontalmente su ASG y asegúrese de que pueda alcanzar la capacidad necesaria dentro del objetivo de 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
}'Gestión de sesiones en Active-Active
En una arquitectura de una sola región, las sesiones de los usuarios pueden almacenarse localmente en los servidores de aplicaciones. En una arquitectura activa-activa multirregional, los usuarios pueden alternar entre regiones en solicitudes posteriores, lo que interrumpe las sesiones del lado del servidor. Soluciones: 1) Sesiones sin estado: almacene los datos de sesión en un JWT firmado o una cookie que cualquier servidor de cualquier región pueda validar. 2) DynamoDB Global Tables para sesiones: almacene las sesiones de forma centralizada, con acceso en milisegundos desde cualquier región. 3) ElastiCache con Global Datastore: replique Redis entre regiones para almacenar las sesiones.
# 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 ALBConflictos de escritura y resolución
El mayor desafío de una arquitectura activa-activa con escrituras multi-primary son los conflictos de escritura. Si dos usuarios de regiones diferentes actualizan simultáneamente el mismo registro, ¿qué actualización prevalece? DynamoDB Global Tables utiliza el criterio de gana la última escritura, según la marca de tiempo de la escritura. Esto funciona bien en la mayoría de los casos de uso, pero puede provocar la pérdida de datos en actualizaciones simultáneas (por ejemplo, si dos usuarios incrementan un contador al mismo tiempo). Diseñe el modelo de datos para evitar escrituras simultáneas en el mismo elemento desde distintas regiones mediante escrituras condicionales o asignando la propiedad de los datos por región.
# 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 gracefullyReplicación de S3 en Active-Active
Para el almacenamiento de objetos en una arquitectura activa-activa, utilice S3 Cross-Region Replication con replicación bidireccional (disponible en buckets con el versionado habilitado). A diferencia de la CRR unidireccional, la replicación bidireccional mantiene sincronizados los buckets de ambas regiones: los objetos escritos en cualquiera de las regiones se replican automáticamente en la otra. Esto es fundamental para las aplicaciones que escriben archivos cargados por los usuarios en el bucket de S3 de su región local, pero necesitan que esos archivos sean accesibles globalmente. Habilite Replication Time Control (RTC) de S3 para garantizar que el 99,99 % de los objetos se replique en un plazo de 15 minutos.
# 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 orígenes multirregionales
Utilice CloudFront con grupos de orígenes para crear una CDN activa-activa con failover automático. Configure un origen primario (ALB en us-east-1) y un origen secundario (ALB en eu-west-1). CloudFront cambia automáticamente al origen secundario cuando el origen primario devuelve errores 5xx. Para los recursos estáticos servidos desde S3, configure grupos de orígenes que apunten a buckets de S3 en varias regiones con replicación bidireccional. Esto añade una capa de resiliencia a nivel de CDN sobre el enrutamiento activa-activa de 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"}]}
}]
}
}'Supervisión del estado de Active-Active
Las arquitecturas activa-activa requieren una supervisión sólida para garantizar que ambas regiones estén saludables y que el tráfico se distribuya según lo previsto. Métricas clave: Route 53 HealthCheckPercentageHealthy por región, DynamoDB ReplicationLatency para la latencia de Global Tables, ALB RequestCount por región para verificar la distribución del tráfico y CloudWatch cross-account/cross-region dashboards para obtener una vista unificada. Configure alarmas cuando la latencia de replicación supere su umbral de RPO o cuando la distribución del tráfico se desequilibre considerablemente.
# 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-alertsCuándo elegir Active-Active
Active-Active es adecuado cuando: los usuarios están distribuidos globalmente y la latencia hacia una única región resulta inaceptable. El RTO debe ser prácticamente cero: el negocio no puede tolerar ni siquiera unos minutos de interrupción. Un alto rendimiento de escritura requiere distribuir las escrituras entre regiones. Los requisitos normativos exigen procesar los datos dentro del país. El coste es considerablemente mayor que el de otros niveles de DR, por lo que solo debe elegir Active-Active cuando los requisitos del negocio y los aspectos económicos lo justifiquen claramente. Para muchas cargas de trabajo, Warm Standby es suficiente y mucho más económico.
# 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)Comprobación rápida
Compruebe sus conocimientos sobre los conceptos de AWS Solutions Architect (SAA-C03) tratados en esta lección.
Resumen de la lección
En esta lección ha aprendido que DynamoDB Global Tables permite escrituras multi-primary entre regiones para lograr una verdadera configuración activa-activa, que el enrutamiento por latencia de Route 53, junto con las comprobaciones de estado, dirige a los usuarios a la región saludable más cercana y que la gestión de sesiones debe ser sin estado o utilizar almacenamiento replicado globalmente en una arquitectura activa-activa. Active-Active ofrece un RTO y un RPO prácticamente nulos, pero con un coste considerablemente mayor. A continuación, exploraremos los pilares de Excelencia operativa y Seguridad del Well-Architected Framework.
Preguntas frecuentes
¿La lección «Activo-activo en varias ubicaciones con Global Tables y Route 53» es gratis?
Sí — el texto completo de «Activo-activo en varias ubicaciones con Global Tables y Route 53» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Activo-activo en varias ubicaciones con Global Tables y Route 53»?
Ejecute simultáneamente toda la capacidad de producción en dos o más Regiones mediante DynamoDB Global Tables, Aurora Global Database y el enrutamiento por latencia de Route 53 Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?
No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Activo-activo en varias ubicaciones con Global Tables y Route 53»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?
Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- RTO, RPO y niveles de recuperación ante desastres
- Copia de seguridad y restauración
- Pilot Light y sistema en espera activa
- Activo-activo en varias ubicaciones con Global Tables y Route 53