¿Por qué cambió el recuento de tareas en ejecución en mi servicio Amazon ECS?

7 minutos de lectura
0

El recuento de tareas en ejecución en mi servicio Amazon Elastic Container Service (Amazon ECS) ha aumentado o disminuido.

Descripción corta

El recuento de tareas en ejecución para su servicio Amazon ECS puede aumentar o disminuir debido a varios motivos. Algunas de las causas más comunes son las siguientes:

  • Sus tareas de Amazon ECS no superan las comprobaciones de estado.
  • AWS CloudFormation o el kit de desarrollo en la nube de AWS (AWS CDK) actualizaron el recuento deseado en el servicio ECS.
  • Actualizó manualmente el recuento deseado para su servicio ECS.
  • El escalado automático del servicio Amazon ECS actualizó el número de tareas en función de la política de escalado.
  • Actualizó el recuento mínimo o máximo en Application Auto Scaling mediante la API RegisterScalableTarget.
  • La configuración de implementación de su servicio ECS modificó el recuento de tareas en ejecución durante la implementación.

Resolución

Las tareas de ECS no superan las comprobaciones de estado

CloudFormation o AWS CDK actualizaron el recuento deseado en su servicio ECS

Si creó su servicio ECS con CloudFormation o CDK sin especificar el campo DesiredCount, el recuento deseado se establece en un valor predeterminado de 1. Sin embargo, cuando el servicio se actualiza a través de CloudFormation o CDK sin especificar el campo DesiredCount, el recuento deseado existente en la implementación actual se usa para la nueva implementación.

Para solucionar este problema, revise los eventos de AWS CloudTrail para comprobar si CloudFormation realizó la llamada a la API UpdateService. Puede verificar esto mismo si comprueba que el campo userAgent en la sección Event record (Registro de eventos) especifica lo siguiente:

"userAgent": "cloudformation.amazonaws.com"

Para resolver este problema, elimine el parámetro desiredCount del código de CloudFormation o CDK durante la actualización.

Actualizó manualmente el recuento deseado para su servicio ECS

Si actualizó manualmente el servicio ECS mediante la API UpdateService, la consola de Amazon ECS o AWS Command Line Interface (AWS CLI), vuelva a actualizar el servicio para cambiar el recuento deseado a un valor apropiado. Para obtener más información, consulte Actualización de un servicio y update-service.

Para solucionar este problema, revise los eventos de CloudTrail para comprobar si la llamada a la API UpdateService se realizó desde la consola de Amazon ECS o AWS CLI. Puede ver esta información en el campo userAgent en el registro de CloudTrail.

Ejemplo:

"userAgent": "console.amazonaws.com"

El escalado automático del servicio Amazon ECS actualizó el número de tareas en función de la política de escalado

Es posible que el escalado automático del servicio Amazon ECS haya aumentado o disminuido el recuento deseado en función de la política de escalado. Revise el servicio y compruebe si hay alguna actividad de escalado reciente.

Para ver las actividades de escalado, haga lo siguiente:

  1. Abra la consola de Amazon ECS.
  2. En el panel de navegación, elija Clusters (Clústeres).
  3. Elija el clúster que desea verificar.
  4. Elija la pestaña Services (Servicios).
  5. Elija el servicio que desea verificar.
  6. Elija la pestaña Events (Eventos).

Si hubo un evento de escalado, puede ver mensajes informativos, como los siguientes, en la columna Message (Mensaje):

Successfully set desired count to 1. Change successfully fulfilled by ecs. Cause: monitor alarm TargetTracking-service/service-autoscaling/sample-webapp-AlarmLow-fcd80aef-5161-4890-aeb4-35dde11ff42c in state ALARM triggered policy TargetTrackingPolicy.

Si las tareas se detienen debido a una actividad de escalado, revise las políticas de seguimiento de destino o escalado escalonado. A continuación, actualice el recuento deseado de acuerdo con los requisitos de su aplicación.

Para ver la configuración de Application Auto Scaling, haga lo siguiente:

  1. Abra la consola de Amazon ECS.
  2. En el panel de navegación, elija Clusters (Clústeres).
  3. Elija el clúster que desea verificar.
  4. Elija la pestaña Services (Servicios).
  5. Elija el servicio que desea verificar.
  6. Elija la pestaña Auto Scaling (Escalado automático).
    Nota: si utiliza la nueva consola de Amazon ECS, elija Configuration and tasks (Configuración y tareas) y, a continuación, consulte la información en Service configuration (Configuración de servicio).

Actualizó el recuento mínimo y máximo en Application Auto Scaling mediante la API RegisterScalableTarget

Si utilizó la API RegisterScalableTarget para actualizar el destino escalable, verifique el valor de la propiedad MinCapacity especificado en la API. Si especificó un nuevo valor mínimo, Application Auto Scaling utilizará este valor como el nuevo valor mínimo al que se pueden reducir verticalmente las tareas.

Nota: Application Auto Scaling no reduce verticalmente el recuento deseado a un valor inferior al valor mínimo especificado.

La configuración de implementación de su servicio ECS modificó el recuento de tareas en ejecución durante la implementación

Revise los eventos de CloudTrail para comprobar si se llamó a la API de UpdateService recientemente. Puede ver la configuración de implementación de su servicio ECS si comprueba el parámetro de solicitud deploymentConfiguration en la API UpdateService.

De forma alternativa, realice lo siguiente:

Revise la configuración de implementación de su servicio de ECS en la consola de Amazon ECS de la siguiente manera:

  1. Abra la consola de Amazon ECS.
  2. En el panel de navegación, elija Clusters (Clústeres).
  3. Elija el clúster que desea verificar.
  4. Elija la pestaña Services (Servicios).
  5. Elija el servicio que desea verificar.
  6. Elija la pestaña Deployments (Implementaciones).

Los parámetros de configuración de implementación controlan cuántas tareas se ejecutan durante una implementación y la secuencia de detener e iniciar tareas. Si la configuración de implementación se establece incorrectamente, se reduce la cantidad de tareas que se ejecutan durante la implementación. Por lo tanto, se recomienda configurar el valor del parámetro minimumHealthyPercent para que sea superior al 0 %.

El parámetro minimumHealthyPercent representa el límite inferior de cualquiera de las siguientes opciones como porcentaje del número deseado de tareas para el servicio:

  • Número de tareas que se deben ejecutar para un servicio durante una implementación
  • Número de tareas que deben ejecutarse cuando se está agotando una instancia de contenedor.

El valor de este parámetro se redondea hacia arriba. Por ejemplo, si el valor de minimumHealthyPercent es 50 % y el número deseado de tareas es cuatro, el programador puede detener dos tareas existentes antes de comenzar dos tareas nuevas. Si el valor de minimumHealthyPercent es 75 % y el número deseado de tareas es dos, el programador no puede detener ninguna tarea debido a que el valor resultante también es dos.

El parámetro maximumPercent representa el límite superior de cualquiera de los siguientes elementos como porcentaje del número deseado de tareas para un servicio:

  • Número de tareas que se deben ejecutar para un servicio durante una implementación
  • Número de tareas que deben ejecutarse cuando se está agotando una instancia de contenedor.

El valor de este parámetro se redondea hacia abajo. Por ejemplo, si el valor de maximumPercent es 200 % y el número deseado de tareas es cuatro, el programador puede iniciar cuatro tareas nuevas antes de detener cuatro tareas existentes. Si el valor de maximumPercent es 125 % y el número deseado de tareas es tres, el programador no puede iniciar ninguna tarea debido a que el valor resultante también es tres.

Para obtener más información, consulte Actualización progresiva.


Información relacionada

Servicio de escalado automático

¿Cómo resuelvo el error “[El servicio de AWS] no pudo realizar una tarea porque ninguna instancia de contenedor cumplió con todos sus requisitos” en Amazon ECS?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años