Auto Scaling admite tanto tareas programadas como tareas activadas por eventos (incluidas las reglas de seguimiento de objetivo). Cuando ambas están activas, una configuración inadecuada puede provocar que una tarea activada por eventos anule un escalado horizontal programado, lo que genera una capacidad inesperada. Este tema explica cómo interactúan estas tareas y proporciona una configuración recomendada para evitar conflictos de escalado.
Escenario del problema
Cuando un grupo de escalado tiene habilitados simultáneamente el número esperado de instancias, las tareas programadas y las tareas activadas por eventos (como las reglas de seguimiento de objetivo), puede producirse un conflicto: una tarea programada desencadena un escalado horizontal, pero antes de que se complete, se activa una tarea basada en eventos que sobrescribe el número esperado de instancias e impide que el escalado horizontal surta efecto.
Casos típicos
Análisis de la causa
La causa raíz reside en los diferentes mecanismos de ejecución de las tareas programadas y las tareas activadas por eventos:
|
Aspecto |
Tarea programada (solo modifica el número esperado de instancias) |
Tarea activada por eventos |
|
Método de ejecución |
Solo modifica el valor del número esperado de instancias sin desencadenar directamente una actividad de escalado. |
Desencadena inmediatamente una actividad de escalado y actualiza simultáneamente el número esperado de instancias. |
|
Tiempo de efectividad |
Tarda entre 30 segundos y 1 minuto en surtir efecto después de modificar el número esperado de instancias. |
Surtir efecto de inmediato. |
|
Riesgo de conflicto |
Durante la ventana de retraso, otras tareas pueden sobrescribir el valor. |
Después de la ejecución, el número esperado de instancias se actualiza al valor real actual. |
Problema principal: Cuando una tarea programada solo modifica el número esperado de instancias, el cambio no es atómico ni surte efecto inmediatamente. Durante el retraso de 30 segundos a 1 minuto, una tarea activada por eventos puede activarse según el recuento real actual de instancias, recalcular y sobrescribir el número esperado de instancias.
Mejor práctica: Tareas programadas para la capacidad base y tareas activadas por eventos para la capacidad elástica
Descripción general de la solución
Utilice un modelo de capacidad en capas "base + elástica" para separar claramente las responsabilidades de las tareas programadas y las tareas activadas por eventos:
Capacidad base (gestionada por tareas programadas): Utilice tareas programadas para establecer tanto el número mínimo como el esperado de instancias. Esto garantiza que las tareas activadas por eventos no puedan reducir el límite de capacidad durante las horas pico.
Capacidad elástica (gestionada por tareas activadas por eventos): Utilice reglas de seguimiento de objetivo o tareas activadas por eventos para agregar o eliminar instancias dinámicamente por encima de la capacidad base según la carga real.

Procedimiento
El siguiente ejemplo demuestra la configuración recomendada. Suponga que su negocio necesita escalar desde una línea base diaria de 10 instancias hasta 50 a las 8:00 AM, restaurar el nivel normal a las 10:00 PM y utilizar una regla de seguimiento de objetivo para mantener la utilización de CPU al 60 %.
Paso 1: Crear una tarea de escalado horizontal programada
Cree una tarea programada que establezca tanto el número mínimo como el esperado de instancias al inicio de las horas pico. De este modo, se asegura de que la capacidad base surta efecto inmediatamente y que las tareas activadas por eventos no puedan anularla.
Inicie sesión en la Auto Scaling console.
En el panel de navegación izquierdo, haga clic en Scaling Groups.
Busque el grupo de escalado objetivo y haga clic en su nombre para abrir su página de detalles.
Haga clic en la pestaña Scaling Rules and Tasks. En la pestaña Scheduled Tasks, haga clic en Create Scheduled Task.
-
Cree una tarea de escalado horizontal programada con la siguiente configuración:
Parámetro
Valor
Task Name
scheduled-scale-up
Executed At
8:00 AM todos los días (o el inicio de sus horas pico de negocio)
Recurrence
Daily
Scaling Method
Configure Number of Instances in Scaling Group
Minimum Instances
50
Expected Instances
50
Configuración clave : Establezca Scaling Method en Configure Number of Instances in Scaling Group , y configure tanto Minimum Instances como Expected Instances en 50. De esta forma, la tarea programada actualiza simultáneamente el número mínimo de instancias y el número esperado de instancias, lo que evita que las tareas activadas por eventos reduzcan el escalado por debajo de 50 instancias.
Paso 2: Crear una tarea de reducción de escala programada
Cree una tarea de reducción de escala programada emparejada. Una vez finalizadas las horas pico, restaure el número mínimo de instancias al nivel normal para evitar el desperdicio de recursos.
-
En la pestaña Scheduled Tasks, haga clic en Create Scheduled Task y utilice la siguiente configuración:
Parámetro
Valor
Task Name
scheduled-scale-down
Executed At
10:00 PM todos los días (o el final de sus horas pico de negocio)
Recurrence
Daily
Scaling Method
Configure Number of Instances in Scaling Group
Minimum Instances
10
Expected Instances
10
Paso 3: Configurar una regla de seguimiento de objetivo
Cree una regla de seguimiento de objetivo que permita a las tareas activadas por eventos escalar automáticamente según la carga real por encima de la capacidad base establecida por las tareas programadas.
Haga clic en la pestaña Scaling Rules and Tasks. En la pestaña Scaling Rules, haga clic en Create Scaling Rule.
-
Cree una regla de seguimiento de objetivo con la siguiente configuración:
Parámetro
Valor
Rule Type
Target Tracking Scaling Rule
Metric Type
(ECS) Average CPU Utilization
Target Value
60%
La regla de seguimiento de objetivo ajusta automáticamente el número de instancias entre el mínimo y el máximo del grupo de escalado según la utilización de CPU. Dado que la tarea programada establece el número mínimo de instancias en 50, el recuento de instancias no cae por debajo de 50 incluso cuando la utilización de CPU es baja.
Comportamiento esperado después de la configuración
|
Hora |
Evento |
Número mínimo de instancias |
Número esperado de instancias |
Efecto real |
|
8:00 AM diariamente |
Se activa la tarea de escalado horizontal programada |
10 → 50 |
10 → 50 |
Comienza inmediatamente el escalado horizontal a 50 instancias |
|
8:00 AM – 10:00 PM |
La regla de seguimiento de objetivo se ejecuta continuamente |
50 |
≥50 |
Cuando la utilización de CPU supera el 60 %, escala horizontalmente por encima de la base de 50 instancias. Cuando es inferior al 60 %, reduce la escala a un mínimo de 50 instancias. |
|
10:00 PM diariamente |
Se activa la tarea de reducción de escala programada |
50 → 10 |
50 → 10 |
Restaura el nivel de capacidad normal. Las instancias excedentes se liberan gradualmente. |
|
Otros momentos |
La regla de seguimiento de objetivo se ejecuta continuamente |
10 |
≥10 |
Escala elásticamente desde una base de 10 instancias según la utilización de CPU |
Puntos clave de configuración
Seleccione "Configure Number of Instances in Scaling Group" como método de escalado para las tareas programadas. Establezca tanto el número mínimo de instancias como el número esperado de instancias, en lugar de modificar únicamente el número esperado de instancias.
Cree tareas programadas en pares: Las tareas de escalado horizontal y de reducción deben ir en pares para garantizar que el número mínimo de instancias vuelva a la normalidad después de las horas pico y evitar el desperdicio de recursos.
-
Relación entre el número mínimo de instancias, el número esperado de instancias y el número máximo de instancias:
Las tareas programadas controlan la capacidad base al establecer el número mínimo de instancias y el número esperado de instancias.
Las tareas activadas por eventos y las reglas de seguimiento de objetivo ajustan elásticamente entre el número mínimo de instancias y el número máximo de instancias.
Las reglas integradas del sistema garantizan que número mínimo de instancias ≤ número esperado de instancias ≤ número máximo de instancias. La prioridad es clara y no se necesita ningún mecanismo adicional para evitar conflictos.
Preguntas frecuentes
-
Después de que una tarea programada escala horizontalmente correctamente, ¿la regla de seguimiento de objetivo reducirá la escala de las instancias si la utilización de CPU es baja?
No. La tarea programada también establece Minimum Instances. La regla de seguimiento de objetivo no reducirá la escala por debajo de Minimum Instances. Por esta razón es fundamental establecer simultáneamente Minimum Instances.
-
¿Es viable modificar únicamente el número esperado de instancias en una tarea programada?
No se recomienda. Modificar únicamente Expected Instances implica los siguientes riesgos:
El cambio en Expected Instances tiene un retraso de 30 segundos a 1 minuto antes de surtir efecto. Durante este período, una tarea activada por eventos podría sobrescribir el valor.
Incluso si el escalado horizontal se realiza correctamente, dado que Minimum Instances no se actualizó en consecuencia, la regla de seguimiento de objetivo podría reducir la escala por debajo del nivel previsto.
-
¿Necesito establecer el número máximo de instancias en una tarea programada?
Por lo general, no. Maximum Instances suele permanecer como un límite superior fijo para evitar un escalado ilimitado en situaciones anómalas. Si su negocio requiere diferentes límites de instancias en distintos momentos, también puede ajustar Maximum Instances en la tarea programada.
-
¿Se producirán conflictos con tareas activadas por eventos que utilizan reglas simples en lugar de reglas de seguimiento de objetivo?
Sí, aún pueden producirse conflictos. Independientemente de si la tarea activada por eventos está asociada con una Simple Scaling Rule, una Step Scaling Rule o una Target Tracking Scaling Rule, sobrescribirá Expected Instances si se activa durante el período de retraso de la tarea programada. La solución descrita en este tema se aplica a todos los tipos de tareas activadas por eventos.