Control de las instancias que Amazon ECS termina
importante
Debe activar la protección para la reducción horizontal de instancias de Auto Scaling en el grupo de escalado automático para usar la característica de protección de terminación administrada del escalado automático de clústeres.
La protección contra la terminación administrada permite que el escalado automático de clústeres controle qué instancias se terminan. Cuando utiliza la protección contra la terminación administrada, Amazon ECS solo termina las instancias de EC2 que no tienen ninguna tarea de Amazon ECS en ejecución. Las tareas que ejecuta un servicio que utiliza la estrategia de programación de DAEMON
se ignoran y una instancia se puede terminar mediante el escalado automático del clúster, incluso cuando la instancia ejecuta estas tareas. Esto se debe a que todas las instancias del clúster ejecutan estas tareas.
Amazon ECS activa primero la opción de protección contra la reducción horizontal para las instancias de EC2 del grupo de escalado automático. A continuación, Amazon ECS coloca las tareas en las instancias. Cuando se detienen todas las tareas que no son daemon en una instancia, Amazon ECS inicia el proceso de reducción horizontal y desactiva la protección de reducción horizontal de la instancia de EC2. El grupo de Auto Scaling puede terminar la instancia.
La protección para la reducción horizontal en instancias de Auto Scaling controla qué instancias de EC2 se pueden terminar en Auto Scaling. Las instancias con la característica de reducción horizontal activada no se pueden finalizar durante el proceso de reducción horizontal. Para obtener más información sobre la protección para la reducción horizontal en instancias de Auto Scaling, consulte Uso de la protección para la reducción horizontal de instancias en la Guía del usuario de Amazon EC2 Auto Scaling.
Puede establecer el porcentaje de targetCapacity
para disponer de capacidad sobrante. De este modo, las tareas futuras se inician de forma más rápida porque el grupo de escalado automático no tiene que iniciar más instancias. Amazon ECS utiliza el valor de capacidad de destino para administrar la métrica de CloudWatch que crea el servicio. Amazon ECS administra la métrica de CloudWatch. El grupo de escalado automático se considera un estado estable para que no se requiera ninguna acción de escalado. Los valores pueden ser del 0 al 100 %. Por ejemplo, para configurar Amazon ECS para que 10 % de la capacidad se mantenga libre además de la utilizada por las tareas de Amazon ECS, establezca el valor de capacidad de destino en 90 %. Al establecer el valor targetCapacity
para un proveedor de capacidad, debe tener en cuenta lo siguiente.
-
Un valor
targetCapacity
inferior al 100 % representa la cantidad de capacidad libre (instancias de Amazon EC2) que debe estar presente en el clúster. Capacidad libre significa que no hay tareas en ejecución. -
Restricciones de ubicación, tales como zonas de disponibilidad, sin
binpack
adicional, obliga a Amazon ECS a ejecutar finalmente una tarea por instancia, lo que podría no ser el comportamiento deseado.
Debe activar la protección para la reducción horizontal de instancias de Auto Scaling en el grupo de escalado automático para usar la protección contra terminación administrada. Si no activas la protección para la reducción horizontal, activar la protección contra terminación administrada puede provocar un comportamiento no deseado. Por ejemplo, es posible que algunas instancias se estanquen en estado de vaciado. Para obtener más información, consulte Uso de la protección para la reducción horizontal de instancias en la Guía del usuario de Amazon EC2 Auto Scaling.
Cuando utilice la protección contra terminación con un proveedor de capacidad, no realice ninguna acción manual, como separar la instancia, en el grupo de escalado automático asociado al proveedor de capacidad. Las acciones manuales pueden interrumpir la operación de reducción horizontal del proveedor de capacidad. Si separa una instancia del grupo de escalado automático, también debe anular el registro de la instancia separada del clúster de Amazon ECS.
Comportamiento de escalado horizontal administrado
Cuando tiene proveedores de capacidad de grupos de escalado automático que usan escalado administrado, Amazon ECS calcula el número óptimo de instancias que se van a agregar al clúster y utiliza este valor para determinar cuántas instancias se deben solicitar.
Amazon ECS selecciona un proveedor de capacidad para cada tarea siguiendo la estrategia del proveedor de capacidad desde el servicio, la tarea independiente o el clúster predeterminado. Amazon ECS sigue el resto de estos pasos para un único proveedor de capacidad.
Los proveedores de capacidad ignoran las tareas que no tienen una estrategia de proveedor de capacidad. Una tarea pendiente que no tenga una estrategia de proveedor de capacidad no hará que ningún proveedor de capacidad escale horizontalmente. Las tareas o los servicios no pueden establecer una estrategia de proveedor de capacidad sin establecer un tipo de lanzamiento.
A continuación, se describe el comportamiento de escalado horizontal en más detalle.
-
Agrupe todas las tareas de aprovisionamiento para este proveedor de capacidad de tal modo que cada grupo tenga exactamente los mismos requisitos de recursos.
-
Cuando se utilizan varios tipos de instancias en un grupo de escalado automático, los tipos de instancias del grupo de escalado automático se ordenan por sus parámetros. Estos parámetros incluyen vCPU, memoria, interfaces de red elásticas (ENI), puertos y GPU. Se seleccionan los tipos de instancias más pequeños y más grandes para cada parámetro. Para obtener más información sobre cómo elegir un tipo de instancia, consulte Instancias de contenedor de Amazon EC2 para Amazon ECS.
importante
Si un grupo de tareas tiene requisitos de recursos superiores a los del tipo de instancia más pequeño del grupo de escalado automático, ese grupo de tareas no se puede ejecutar con este proveedor de capacidad. El proveedor de capacidad no escala el grupo de escalado automático. Las tareas permanecen en el estado
PROVISIONING
.Para evitar que las tareas permanezcan en el estado
PROVISIONING
, le recomendamos que cree grupos de escalado automático y proveedores de capacidad independientes para diferentes requisitos de recursos mínimos. Cuando ejecute tareas o cree servicios, agregue únicamente proveedores de capacidad a la estrategia del proveedor de capacidad que puedan ejecutar la tarea en el tipo de instancia más pequeño del grupo de escalado automático. Para otros parámetros, puede utilizar restricciones de ubicación. -
Para cada grupo de tareas, Amazon ECS calcula el número de instancias requeridas para ejecutar las tareas no colocadas. Este cálculo utiliza una estrategia
binpack
. Esta estrategia tiene en cuenta los requisitos de vCPU, memoria, interfaces de red elásticas (ENI), puertos y GPU de las tareas. También tiene en cuenta la disponibilidad de recursos de las instancias de Amazon EC2. Los valores de los tipos de instancias más grandes se consideran como el recuento máximo de instancias calculado. Los valores del tipo de instancia más pequeño se utilizan como protección. Si el tipo de instancia más pequeño no puede ejecutar al menos una instancia de la tarea, el cálculo considera que la tarea no es compatible. Como resultado, se excluye del cálculo de escalado horizontal. Cuando ninguna tarea es compatible con el tipo de instancia más pequeño, el escalado automático de clústeres se detiene y el valorCapacityProviderReservation
se mantiene en el valortargetCapacity
. -
Amazon ECS publica la métrica
CapacityProviderReservation
a CloudWatch con respecto alminimumScalingStepSize
si se da alguna de las siguientes circunstancias.-
El recuento máximo de instancias calculado es inferior al tamaño mínimo del paso de escalado.
-
El valor más bajo de
maximumScalingStepSize
o el recuento máximo de instancias calculado.
-
-
Las alarmas de CloudWatch utilizan la métrica
CapacityProviderReservation
para los proveedores de capacidad. Cuando la métricaCapacityProviderReservation
es mayor que el valor detargetCapacity
, las alarmas también aumentan laDesiredCapacity
del grupo de escalado automático. El valortargetCapacity
es una configuración de proveedor de capacidad que se envía a la alarma de CloudWatch durante la fase en que se activa el escalado automático del clúster.El valor de
targetCapacity
predeterminado es el 100 %. -
El grupo de Auto Scaling lanza instancias de EC2 adicionales. Para evitar el sobreaprovisionamiento, el escalado automático se asegura de que la capacidad de la instancia de EC2 iniciada recientemente se estabilice antes de iniciar nuevas instancias. El escalado automático comprueba si todas las instancias existentes han superado el
instanceWarmupPeriod
(ahora menos el tiempo de lanzamiento de la instancia). El escalado horizontal está bloqueado para las instancias que se encuentran dentro delinstanceWarmupPeriod
.El número predeterminado de segundos para que se caliente una instancia recién lanzada es de 300.
Para obtener más información, consulte Análisis detallado del escalado automático de clústeres de Amazon ECS
Consideraciones de escalado horizontal
Tenga en cuenta lo siguiente para el proceso de escalado horizontal:
-
Aunque existen varias restricciones de ubicación, le recomendamos que solo use la restricción de ubicación de tareas
distinctInstance
. Esto evita que el proceso de escalado horizontal se detenga porque está utilizando una restricción de ubicación que no es compatible con las instancias de muestra. -
El escalado administrado funciona mejor si el grupo de Auto Scaling utiliza los mismos tipos de instancia o similares.
-
Cuando se requiere un proceso de escalado horizontal y no hay instancias de contenedores en ejecución actualmente, Amazon ECS siempre se escala horizontalmente a dos instancias al principio y, a continuación, realiza procesos de escalado o reducción horizontal adicionales. Cualquier escalado horizontal adicional espera al período de preparación de la instancia. En el caso de los procesos de reducción horizontal, Amazon ECS espera 15 minutos después de un proceso de escalado horizontal, antes de iniciar los procesos de reducción horizontal en todo momento.
-
El segundo paso de escalado horizontal debe esperar hasta que
instanceWarmupPeriod
venza, lo cual podría afectar el límite de escalado general. Si necesita reducir este tiempo, asegúrese de queinstanceWarmupPeriod
sea lo suficientemente grande como para que la instancia de EC2 inicie el agente de Amazon ECS (lo que evita el sobreaprovisionamiento). -
El escalado automático de clústeres admite la configuración de lanzamiento, plantillas de lanzamiento y varios tipos de instancias en el grupo de escalado automático del proveedor de capacidad. También puede utilizar la selección del tipo de instancia basada en atributos sin tener varios tipos de instancias.
-
Cuando utilice un grupo de Auto Scaling con tipos de instancias bajo demanda e instancias múltiples o instancias de spot, coloque los tipos de instancias más grandes en la lista de prioridades y no especifique ninguna ponderación. En este momento, no se admite la especificación de ponderaciones. Para obtener más información, consulte Grupos de Auto Scaling con varios tipos de instancias en la Guía del usuario de AWS Auto Scaling.
-
A continuación, Amazon ECS lanzará el
minimumScalingStepSize
si el recuento máximo de instancias calculado es menor que el tamaño mínimo del paso de escalado o elmaximumScalingStepSize
o el valor del recuento máximo de instancias calculado, de ambas opciones, la que sea menor. -
Si un servicio de Amazon ECS o
run-task
lanza una tarea y las instancias de contenedor del proveedor de capacidad no tienen recursos suficientes para iniciar la tarea, Amazon ECS limita el número de tareas con este estado para cada clúster e impide que cualquier tarea supere este límite. Para obtener más información, consulte Cuotas de servicio de Amazon ECS.
Comportamiento de reducción horizontal administrada
Amazon ECS supervisa las instancias de contenedor de cada proveedor de capacidad dentro del clúster. Cuando una instancia de contenedor no ejecuta ninguna tarea, la instancia de contenedor se considera vacía y Amazon ECS inicia el proceso de reducción horizontal.
Las alarmas de reducción horizontal de CloudWatch requieren 15 puntos de datos (15 minutos) antes de que comience el proceso de reducción horizontal del grupo de Auto Scaling. Una vez que se inicia el proceso de reducción horizontal hasta que Amazon ECS necesite reducir el número de instancias de contenedores registradas, el grupo de escalado automático establece el valor DesireCapacity
para que sea superior a una instancia e inferior al 50 % por minuto.
Cuando Amazon ECS solicita un escalado horizontal (cuando CapacityProviderReservation
es superior a 100) mientras un proceso de reducción horizontal está en curso, el proceso de reducción se detiene y comenzará desde el principio si es necesario.
A continuación, se describe el comportamiento de reducción horizontal con más detalle:
-
Amazon ECS calcula el número de instancias de contenedores que están vacías. Una instancia de contenedor se considera vacía incluso cuando se están ejecutando tareas de daemon.
-
Amazon ECS establece el valor
CapacityProviderReservation
en un número entre 0 y 100 que utiliza la siguiente fórmula para representar la relación entre el tamaño que debe tener el grupo de escalado automático y su tamaño real, expresado en porcentaje. A continuación, Amazon ECS publica la métrica en CloudWatch. Para obtener más información sobre cómo se calcula la métrica, consulte Profundización en el escalado automático de clústeres de Amazon ECS. CapacityProviderReservation = (number of instances needed) / (number of running instances) x 100
-
La métrica
CapacityProviderReservation
genera una alarma de CloudWatch. Esta alarma actualiza el valorDesiredCapacity
del grupo de Auto Scaling. A continuación, se lleva a cabo una de las siguientes acciones:-
Si no utiliza la terminación administrada del proveedor de capacidad, el grupo de escalado automático selecciona las instancias de EC2 mediante la política de terminación de grupos de escalado automático y las termina hasta que el número de instancias de EC2 llegue a la
DesiredCapacity
. A continuación, las instancias de contenedor se anulan del registro del clúster. -
Si todas las instancias de contenedor utilizan la protección contra terminación administrada, Amazon ECS elimina la protección para la reducción horizontal de las instancias de contenedor que están vacías. El grupo de Auto Scaling podrá terminar las instancias de EC2. A continuación, las instancias de contenedor se anulan del registro del clúster.
-