Lab : Configuración de Auto Scaling
Objetivo del Lab
Diseñar y configurar una solución completa de Auto Scaling para una aplicación web con patrones de tráfico variables.
Parte 1 : Escenario
Contexto
NewsPortal es un sitio de noticias que experimenta picos de tráfico impredecibles durante noticias de última hora. El equipo técnico quiere automatizar el escalado para:
- Mantener el rendimiento durante los picos
- Reducir los costos durante las horas de baja demanda
Datos de Tráfico
┌─────────────────────────────────────────────────────────────┐
│ PATRONES DE TRÁFICO NEWSPORTAL │
├─────────────────────────────────────────────────────────────┤
│ │
│ DÍA NORMAL │
│ ─────────────── │
│ │
│ Visitantes ▲ │
│ │ ┌────┐ │
│ 50,000 ─┤ ┌┘ └┐ │
│ │ ┌┘ └┐ ┌──┐ │
│ 30,000 ─┤ ┌──┘ └──────┘ └┐ │
│ │ ┌──┘ └──┐ │
│ 10,000 ─┤──┘ └── │
│ │ │
│ └─────┬─────┬─────┬─────┬─────┬─────► Hora │
│ 6h 9h 12h 18h 21h │
│ │
│ BREAKING NEWS (imprevisible) │
│ ─────────────────────────── │
│ │
│ Visitantes ▲ │
│ │ ▲ Pico repentino x10 │
│ 200,000 ─┤ ╱╲ │
│ │ ╱ ╲ │
│ 100,000 ─┤ ╱ ╲ │
│ │ ╱ ╲ │
│ 20,000 ─┤──────╱ ╲────────── │
│ │ │
│ └─────────────────────────────────► Tiempo │
│ │
└─────────────────────────────────────────────────────────────┘
Requisitos
| Aspecto | Requisito |
|---|---|
| Disponibilidad | 99.9% |
| Tiempo de respuesta | < 500ms (P95) |
| Capacidad mínima | 5,000 visitantes/min |
| Capacidad máxima | 200,000 visitantes/min |
| Presupuesto | Optimizar costos fuera de picos |
Parte 2 : Ejercicios de Diseño
Ejercicio 2.1 : Dimensionamiento
Sabiendo que una instancia t3.medium puede manejar 500 solicitudes/segundo, calcule:
| Pregunta | Su Respuesta |
|---|---|
| Instancias mínimas (normal) | ? |
| Instancias para pico x10 | ? |
| Mínimo recomendado para HA | ? |
| Máximo recomendado | ? |
💡 Solución
Tráfico normal : 50,000 visitantes/min = 833 req/sec
Instancias necesarias : 833 / 500 = 2 instancias
Tráfico pico x10 : 200,000 visitantes/min = 3,333 req/sec
Instancias necesarias : 3,333 / 500 = 7 instancias (redondeado)
Mínimo recomendado : 2 (HA Multi-AZ)
Máximo recomendado : 10 (margen de seguridad)
Desired initial : 2
Ejercicio 2.2 : Elección de la Política
¿Qué política(s) de escalado recomienda y por qué?
| Política | ¿Apropiada? | Justificación |
|---|---|---|
| Target Tracking CPU | ? | ? |
| Target Tracking Requests | ? | ? |
| Scheduled | ? | ? |
| Step Scaling | ? | ? |
💡 Solución
| Política | ¿Apropiada? | Justificación |
|---|---|---|
| Target Tracking CPU | ⚠️ Parcial | Útil pero CPU no siempre correlacionado con las solicitudes |
| Target Tracking Requests | ✅ SÍ | Directamente relacionado con el tráfico de usuarios |
| Scheduled | ⚠️ Parcial | Patrones día/noche predecibles, pero no las breaking news |
| Step Scaling | ✅ SÍ | Respuesta rápida a picos repentinos |
Recomendación: Combinar Target Tracking (requests) + Scheduled (base)
Ejercicio 2.3 : Configuración Launch Template
Complete la configuración del Launch Template:
# Launch Template Configuration
LaunchTemplateName: newsportal-lt
# A completar:
AMI: _______________
InstanceType: _______________
SecurityGroupIds:
- _______________
KeyName: _______________
UserData: |
#!/bin/bash
_______________
_______________
_______________
💡 Solución
LaunchTemplateName: newsportal-lt
AMI: ami-0123456789 (Amazon Linux 2, preconfigurado)
InstanceType: t3.medium
SecurityGroupIds:
- sg-web-servers
KeyName: newsportal-key
UserData: |
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
# O despliegue de la app vía CodeDeploy
aws s3 cp s3://newsportal-deploy/latest.tar.gz /tmp/
tar -xzf /tmp/latest.tar.gz -C /var/www/html/
Ejercicio 2.4 : Configuración ASG
Complete la configuración del Auto Scaling Group:
AutoScalingGroupName: newsportal-asg
# Capacidad
MinSize: ___
MaxSize: ___
DesiredCapacity: ___
# Red (mínimo 2 AZ)
VPCZoneIdentifier:
- _______________
- _______________
# Health Checks
HealthCheckType: _______________
HealthCheckGracePeriod: ___
# Target Group
TargetGroupARNs:
- _______________
💡 Solución
AutoScalingGroupName: newsportal-asg
MinSize: 2
MaxSize: 10
DesiredCapacity: 2
VPCZoneIdentifier:
- subnet-private-az-a
- subnet-private-az-b
HealthCheckType: ELB # Usa los health checks del ALB
HealthCheckGracePeriod: 300 # 5 minutos para iniciar la app
TargetGroupARNs:
- arn:aws:elasticloadbalancing:...:targetgroup/newsportal-tg/xxx
Parte 3 : Configuración de Políticas
Ejercicio 3.1 : Target Tracking
Cree una política Target Tracking para mantener 1000 solicitudes por destino:
# Complete el comando
aws autoscaling put-scaling-policy \
--auto-scaling-group-name newsportal-asg \
--policy-name _______________ \
--policy-type _______________ \
--target-tracking-configuration '{
"TargetValue": ___,
"PredefinedMetricSpecification": {
"PredefinedMetricType": "_______________",
"ResourceLabel": "app/newsportal-alb/xxx/targetgroup/newsportal-tg/yyy"
},
"ScaleOutCooldown": ___,
"ScaleInCooldown": ___
}'
💡 Solución
aws autoscaling put-scaling-policy \
--auto-scaling-group-name newsportal-asg \
--policy-name request-target-tracking \
--policy-type TargetTrackingScaling \
--target-tracking-configuration '{
"TargetValue": 1000.0,
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ALBRequestCountPerTarget",
"ResourceLabel": "app/newsportal-alb/xxx/targetgroup/newsportal-tg/yyy"
},
"ScaleOutCooldown": 60,
"ScaleInCooldown": 300
}'
Ejercicio 3.2 : Scheduled Scaling
Configure el escalado programado para los patrones día/noche:
# Morning scale up (8h UTC, Lun-Vie)
aws autoscaling put-scheduled-update-group-action \
--auto-scaling-group-name newsportal-asg \
--scheduled-action-name _______________ \
--recurrence "_______________ " \
--min-size ___ \
--max-size ___
# Evening scale down (22h UTC, todos los días)
aws autoscaling put-scheduled-update-group-action \
--auto-scaling-group-name newsportal-asg \
--scheduled-action-name _______________ \
--recurrence "_______________" \
--min-size ___ \
--max-size ___
💡 Solución
# Morning scale up (8h UTC, Lun-Vie)
aws autoscaling put-scheduled-update-group-action \
--auto-scaling-group-name newsportal-asg \
--scheduled-action-name morning-scale-up \
--recurrence "0 8 * * MON-FRI" \
--min-size 3 \
--max-size 10
# Evening scale down (22h UTC, todos los días)
aws autoscaling put-scheduled-update-group-action \
--auto-scaling-group-name newsportal-asg \
--scheduled-action-name evening-scale-down \
--recurrence "0 22 * * *" \
--min-size 2 \
--max-size 5
Parte 4 : Monitoreo y Alertas
Ejercicio 4.1 : CloudWatch Dashboard
Liste las métricas esenciales a monitorear:
| Métrica | Namespace | Umbral de Alerta |
|---|---|---|
| ? | AWS/EC2 | ? |
| ? | AWS/ApplicationELB | ? |
| ? | AWS/AutoScaling | ? |
| ? | Custom | ? |
💡 Solución
| Métrica | Namespace | Umbral de Alerta |
|---|---|---|
| CPUUtilization | AWS/EC2 | > 80% |
| TargetResponseTime | AWS/ApplicationELB | > 500ms |
| RequestCount | AWS/ApplicationELB | solo informativo |
| HealthyHostCount | AWS/ApplicationELB | < 2 |
| GroupDesiredCapacity | AWS/AutoScaling | solo informativo |
| GroupInServiceInstances | AWS/AutoScaling | < min |
| HTTPCode_Target_5XX_Count | AWS/ApplicationELB | > 10/min |
Ejercicio 4.2 : Alerta de Scaling
Cree una alerta SNS para notificar durante eventos de escalado:
# 1. Crear el topic SNS
aws sns create-topic --name _______________
# 2. Suscribirse por email
aws sns subscribe \
--topic-arn arn:aws:sns:...:_______________ \
--protocol email \
--notification-endpoint _______________
# 3. Configurar las notificaciones ASG
aws autoscaling put-notification-configuration \
--auto-scaling-group-name newsportal-asg \
--topic-arn arn:aws:sns:...:_______________ \
--notification-types \
"autoscaling:EC2_INSTANCE_LAUNCH" \
"autoscaling:EC2_INSTANCE_TERMINATE" \
"_______________"
💡 Solución
# 1. Crear el topic SNS
aws sns create-topic --name newsportal-scaling-alerts
# 2. Suscribirse por email
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:123456789:newsportal-scaling-alerts \
--protocol email \
--notification-endpoint ops@newsportal.com
# 3. Configurar las notificaciones ASG
aws autoscaling put-notification-configuration \
--auto-scaling-group-name newsportal-asg \
--topic-arn arn:aws:sns:us-east-1:123456789:newsportal-scaling-alerts \
--notification-types \
"autoscaling:EC2_INSTANCE_LAUNCH" \
"autoscaling:EC2_INSTANCE_TERMINATE" \
"autoscaling:EC2_INSTANCE_LAUNCH_ERROR"
Parte 5 : Pruebas de Validación
Plan de Pruebas
| Prueba | Método | Resultado Esperado |
|---|---|---|
| Scale Out | Generar carga | Nuevas instancias en < 5 min |
| Scale In | Detener carga | Reducción después del cooldown |
| Failover | Terminar instancia | Reemplazo automático |
| Health Check | Detener app | Instancia marcada unhealthy |
Script de Prueba de Carga
#!/bin/bash
# test-load.sh - Simular un pico de tráfico
ALB_DNS="newsportal-alb-xxx.region.elb.amazonaws.com"
DURATION=300 # 5 minutos
CONCURRENCY=100
echo "Iniciando prueba de carga..."
echo "URL: http://$ALB_DNS"
echo "Duración: $DURATION segundos"
echo "Concurrencia: $CONCURRENCY"
# Usar Apache Bench o hey
hey -z ${DURATION}s -c $CONCURRENCY http://$ALB_DNS/
echo "Prueba finalizada. Verifique CloudWatch y ASG."
Checklist de Validación
┌─────────────────────────────────────────────────────────────┐
│ CHECKLIST VALIDACIÓN │
├─────────────────────────────────────────────────────────────┤
│ │
│ ☐ Scale out funciona (nuevas instancias) │
│ ☐ Scale in funciona (instancias terminadas) │
│ ☐ Health checks ALB detectan las fallas │
│ ☐ Instancias unhealthy reemplazadas automáticamente │
│ ☐ Notificaciones SNS recibidas │
│ ☐ Métricas visibles en CloudWatch │
│ ☐ Acciones programadas respetadas │
│ ☐ Tiempo de respuesta mantenido < 500ms bajo carga │
│ │
└─────────────────────────────────────────────────────────────┘
Entregable Final
Documento a Entregar
- Arquitectura de Auto Scaling (diagrama)
- Configuración completa (Launch Template + ASG)
- Políticas de escalado (Target Tracking + Scheduled)
- Plan de monitoreo (métricas + alertas)
- Resultados de las pruebas (capturas de pantalla de CloudWatch)
Criterios de Evaluación
| Criterio | Puntos |
|---|---|
| Dimensionamiento correcto | /15 |
| Configuración ASG completa | /25 |
| Políticas adaptadas al escenario | /20 |
| Monitoreo y alertas | /15 |
| Pruebas documentadas | /15 |
| Calidad del documento | /10 |
| Total | /100 |
Semana siguiente : MODULE 10 - Route 53