Mi tarea de Amazon Elastic Container Service (Amazon ECS) tarda mucho en pasar al estado DETENIDO. O bien, mi tarea de Amazon ECS se bloquea en el estado EN EJECUCIÓN cuando la instancia del contenedor está configurada en VACIANDO.
Descripción corta
Cuando configuras una instancia de ECS en VACIANDO, Amazon ECS evita que se programen nuevas tareas para su colocación en la instancia de contenedor. Amazon ECS detiene inmediatamente las tareas de servicio en estado PENDIENTE. Amazon ECS hace la transición de las tareas de servicio en estado EN EJECUCIÓN al estado DETENIDO. Las tareas independientes en estado PENDIENTE o EN EJECUCIÓN no se ven afectadas. Para detener las tareas independientes, espera a que se detengan solas o hazlas manualmente.
Los problemas con los parámetros o las tareas de configuración pueden mantener las tareas en estado EN EJECUCIÓN o retrasar su transición al estado DETENIDO.
Para solucionar estos problemas, realiza las siguientes tareas:
- Actualización de los parámetros DeploymentConfiguration
- Actualización del valor del retraso en la cancelación del registro
- Actualización del valor ECS_CONTAINER_STOP_TIMEOUT
- Búsqueda de otros problemas relacionados con las tareas
Resolución
Para solucionar los problemas de las tareas de Amazon ECS que tardan mucho tiempo en detenerse, completa las siguientes tareas.
Actualización de los parámetros DeploymentConfiguration
Sigue estos pasos:
- Abre la consola de Amazon ECS.
- En el panel de navegación, selecciona Clústeres. A continuación, elige el clúster en el que se vacía tu instancia de contenedor.
- Selecciona la pestaña Infraestructura.
- En Instancias de contenedor, filtra por estado para VACIANDO.
- Elige tu instancia de contenedor y, a continuación, busca el servicio para las tareas que se están vaciando o que tardan mucho en vaciarse.
- Elige la pestaña Servicios, selecciona el servicio y, a continuación, elige Despliegues.
- Comprueba los valores de minimumHealthyPercent y maximumPercent.
Nota: Las tareas de servicio de las instancias de contenedor que están en estado EN EJECUCIÓN se detienen y se sustituyen de acuerdo con los parámetros de configuración del despliegue del servicio. Para obtener más información, consulta Drenaje de instancias de contenedor de Amazon ECS.
Actualización del valor del retraso en la cancelación del registro
Importante: Los pasos siguientes solo se aplican a los servicios que utilizan el equilibrador de carga de aplicación o el equilibrador de carga de red. Si tu servicio utiliza el equilibrador de carga clásico, comprueba los valores de drenaje de conexiones.
Sigue estos pasos:
- Abre la consola de Amazon ECS.
- En el panel de navegación, elige Clústeres y, a continuación, elige el clúster en el que se está vaciando la instancia de contenedor.
- Elige la pestaña Servicios y, a continuación, selecciona el servicio con la pila bloqueada en el estado EN EJECUCIÓN.
- Elige Nombre del grupo de destino.
- En la pestaña Detalles, desplázate hacia abajo y, a continuación, selecciona la casilla Retraso de anulación del registro.
Actualización del valor ECS_CONTAINER_STOP_TIMEOUT
Sigue estos pasos:
-
Usa Secure Shell (SSH) para conectarte a tu instancia de contenedor.
-
Para buscar el valor ECS_CONTAINER_STOP_TIMEOUT, ejecuta el siguiente comando:
docker inspect ecs-agent --format '{{json .Config.Env}}'
-
Si hay un valor para ECS_CONTAINER_STOP_TIMEOUT, comprueba el valor de duración.
Nota: ECS_CONTAINER_STOP_TIMEOUT es un parámetro del agente de contenedores de ECS que define la cantidad de tiempo que Amazon ECS espera antes de finalizar un contenedor. La duración del tiempo comienza a contar cuando se detiene una tarea. Si el parámetro ECS_CONTAINER_STOP_TIMEOUT no aparece en el resultado, Amazon ECS utiliza el valor predeterminado de 30 segundos.
Búsqueda de otros problemas relacionados con las tareas
Para buscar otros problemas relacionados con las tareas, usa SSH para conectarte a tu instancia de Linux. A continuación, realiza las siguientes tareas:
Información relacionada
Drenaje de instancias de contenedor de Amazon ECS