Saltar al contenido
aprendeaws.dev

Módulo 5 · Cómputo: máquinas e instancias/Lección 35

Auto Scaling y elasticidad

Más servidores cuando llega la gente, menos cuando se va. Grupos, plantillas y políticas de escalado.

Al terminar podrás

  • →Diferenciar escalar vertical y horizontalmente
  • →Configurar un grupo de Auto Scaling con capacidad mínima, deseada y máxima
  • →Elegir una política de escalado

El tráfico de una aplicación casi nunca es plano. Hay horas pico, días de quincena, campañas y madrugadas vacías. Si tienes servidores para el pico todo el tiempo, pagas capacidad ociosa. Si tienes para el promedio, te caes en el pico.

Amazon EC2 Auto Scaling resuelve eso: agrega instancias cuando sube la demanda, las quita cuando baja y reemplaza las que fallan. Es la elasticidad de la nube hecha servicio.

InternetAWS CloudRegión us-east-1la ciudadVPCel conjuntoAZ abarrio 1Subred públicaSubred privadaSubred de datosAZ bbarrio 2Subred públicaSubred privadaSubred de datosGrupo de Auto Scalingmín. 2 · máx. 6Multi-AZescalaDNSUsuariosRoute 53el directorioLoad Balancerla recepciónEC2EC2EC2 nuevaRDS primariaRDS en esperaCloudWatchalarma de CPU

Pasa el mouse para ver qué es cada pieza; haz clic para abrir su ficha. En el celular, usa los botones de abajo.

Amazon EC2 Auto Scaling

Grupo de Auto Scaling

AnalogíaEl supervisor del supermercado: abre cajas cuando la fila crece y las cierra cuando baja.

El grupo usa una plantilla de lanzamiento (launch template) para crear instancias iguales. Le das una capacidad mínima, una deseada y una máxima, y las subredes de varias zonas donde puede crearlas.

Si una instancia falla, la reemplaza. Si una alarma dice que hay mucha carga, sube la capacidad deseada; si la carga baja, la reduce.

Vertical u horizontal

Escalar verticalEscalar horizontal
Cambiar a una máquina más grandeAgregar más máquinas iguales
Requiere detener la instancia para cambiar el tipoSin interrupción: las nuevas entran al balanceador
Tiene techo: el tipo más grande que existaCrece hasta donde necesites
Sigue siendo un punto único de fallaSi una cae, las otras atienden
Sirve para bases de datos y apps difíciles de partirRequiere que la app no guarde estado en la máquina

Dos palabras que el examen distingue. Escalabilidad es la capacidad de un sistema de crecer para atender más carga. Elasticidad es ajustar los recursos a la demanda de forma automática, en ambas direcciones: agregar cuando hace falta y liberar cuando sobra, pagando solo lo que usas. Auto Scaling da las dos. Más sobre estos beneficios en economía de la nube.

El grupo de Auto Scaling

Un grupo de Auto Scaling (Auto Scaling group) es un conjunto de instancias que se administran juntas. Se define con tres cosas:

  1. 1

    Una plantilla de lanzamiento (launch template)

    Las mismas piezas de la lección de EC2: AMI, tipo de instancia, Security Group, rol de IAM y user data. Las launch configurations son la versión antigua; usa plantillas.
  2. 2

    Dónde

    Una lista de subredes en varias zonas de disponibilidad. El grupo reparte las instancias entre ellas y, si una zona falla, lanza en las otras.
  3. 3

    Cuántas

    Capacidad mínima, deseada y máxima.
CapacidadQué significa
MínimaNunca baja de este númeroTu piso de disponibilidad, por ejemplo 2 en dos AZs
DeseadaCuántas debe haber ahoraLas políticas de escalado la suben y la bajan
MáximaNunca pasa de este númeroTu techo de costo

El grupo revisa la salud de sus instancias. Por defecto usa los chequeos de estado de EC2; si lo conectas a un balanceador, puede usar también los health checks del balanceador. Una instancia no saludable se termina y se reemplaza sola, aunque nadie haya tocado la capacidad deseada.

Las políticas de escalado

CriterioTarget trackingStep scalingScheduledPredictive
Cómo decideMantiene una métrica en un valor objetivoAgrega o quita según rangos de una alarmaA una hora fijaPronostica la carga con aprendizaje automático
EjemploCPU promedio en 50 %CPU sobre 70 % → +2; sobre 90 % → +4Lunes a viernes a las 7:00, mínimo 10Lanza antes del pico diario que se repite
AnalogíaUn termostatoAbrir más cajas mientras más larga la filaAbrir cajas antes del almuerzoEl gerente que conoce el patrón de cada semana
Úsala cuandoCasi siempre: es la recomendada para empezarQuieres respuestas distintas según la gravedadLa carga es predecible por calendarioHay patrones diarios o semanales y arrancar tarda

Las políticas de seguimiento y por pasos se apoyan en métricas y alarmas de CloudWatch. Puedes combinar varias: una programada para el pico conocido y una de seguimiento para lo inesperado.

Auto Scaling con un balanceador

  1. 1

    Sube el tráfico

    La CPU promedio del grupo pasa del objetivo.
  2. 2

    El grupo lanza instancias

    Usa la plantilla y las reparte entre las zonas.
  3. 3

    Se registran solas

    Cada instancia nueva entra al grupo de destino del balanceador.
  4. 4

    Pasan el health check

    Solo entonces empiezan a recibir tráfico.
  5. 5

    Baja el tráfico

    El grupo termina instancias sin pasar del mínimo, y el balanceador deja de enviarles antes.

Juntos, el balanceador y el grupo dan alta disponibilidad (varias zonas, reemplazo automático) y elasticidad (capacidad que sigue a la demanda). EC2 Auto Scaling no cobra aparte: pagas las instancias y demás recursos que lanza.

AWS Auto Scaling y EC2 Auto Scaling

  • Amazon EC2 Auto Scaling

    Escala grupos de instancias EC2. Es lo que viste en esta lección.
  • AWS Auto Scaling

    Un punto central para crear planes de escalado sobre recursos de varios servicios: grupos de EC2, servicios de ECS, tablas de DynamoDB y réplicas de Aurora, entre otros.

Quiz

Pon a prueba lo que aprendiste

0 de 5 correctas · 5 sin responder

  1. 1.¿Qué describe mejor la elasticidad?

  2. 2.Un grupo tiene mínimo 2, deseado 4 y máximo 10. El tráfico cae a casi cero. ¿Cuántas instancias quedan como mínimo?

  3. 3.Una tienda sabe que cada viernes a las 18:00 su tráfico se triplica. ¿Qué política encaja mejor?

  4. 4.¿Qué pasa cuando una instancia de un grupo de Auto Scaling falla su chequeo de salud?

  5. 5.Cambiar una instancia de m7i.large a m7i.2xlarge es un ejemplo de: