Drenaje de instancias de contenedor de Amazon ECS - Amazon Elastic Container Service

Drenaje de instancias de contenedor de Amazon ECS

Es posible que, en ocasiones, se deba eliminar una instancia de contenedor de un clúster; por ejemplo, para realizar actualizaciones del sistema o reducir verticalmente la capacidad del clúster. Amazon ECS ofrece la capacidad de pasar de una instancia de contenedor a un estado DRAINING. Esto se denomina vaciado de instancias de contenedor. Cuando se establece una instancia de contenedor en DRAINING, Amazon ECS evita que se programen nuevas tareas para su ubicación en la instancia de contenedor.

Comportamiento de drenaje de los servicios

Se detiene de inmediato cualquier tarea que forme parte de un servicio que se encuentre en estado PENDING. Si la instancia de contenedor tienen capacidad disponible en el clúster, el programador de servicios iniciará las tareas de sustitución. Si la instancia de contenedor no dispone de capacidad suficiente, se enviará un mensaje de evento de servicio indicando el problema.

Las tareas que forman parte de un servicio en la instancia de contenedor y se encuentran en estado RUNNING pasan al estado STOPPED. El programador de servicios intenta sustituir las tareas de acuerdo con los parámetros minimumHealthyPercent y maximumPercent de configuración y el tipo de implementación del servicio. Para obtener más información, consulte Servicios de Amazon ECS y Parámetros de definición de servicio de Amazon ECS.

  • Si minimumHealthyPercent está por debajo del 100%, el programador puede hacer caso omiso de desiredCount temporalmente durante la sustitución de tareas. Por ejemplo, desiredCount son cuatro tareas, un mínimo del 50% permite al programador detener dos tareas existentes antes de iniciar dos nuevas tareas. Si el mínimo es el 100%, el programador de servicio no puede eliminar las tareas existentes hasta que las tareas de sustitución se consideren en buen estado. Si hay tareas para servicios que no utilizan un balanceador de carga en el estado RUNNING, se consideran en buen estado. Las tareas para servicios que utilizan un balanceador de carga se consideran en buen estado si están en estado RUNNING y el balanceador de carga notifica que la instancia de contenedor en la que están alojados tiene buen estado.

    importante

    Si usa instancias de spot y minimumHealthyPercent es superior o igual al 100 %, el servicio no tendrá tiempo suficiente para reemplazar la tarea antes de que finalice la instancia de spot.

  • El parámetro maximumPercent representa un límite superior en la cantidad de tareas en ejecución durante la sustitución de tareas, que permite definir el tamaño del lote de sustitución. Por ejemplo, si desiredCount de cuatro tareas, un máximo de 200% comienza cuatro tareas nuevas antes de parar las cuatro tareas que se van a vaciar (siempre que los recursos del clúster requeridos para hacer esto estén disponibles). Si el mínimo es 100%, entonces las tareas de sustitución no pueden comenzar hasta que se hayan parado las tareas de vaciado.

    importante

    Si tanto minimumHealthyPercent como maximumPercent son el 100 %, entonces el servicio no puede eliminar las tareas existentes y tampoco puede iniciar tareas de reemplazo. Esto impide el drenaje correcto de las instancias de contenedores e impide realizar nuevas implementaciones.

Comportamiento de drenaje para tareas independientes

Las tarea independiente en estado PENDING o RUNNING no se verán afectadas; debe esperar a que se detengan por su cuenta o detenerlas manualmente. La instancia de contenedor permanecerá en el estado DRAINING.

Comportamiento de vaciado de Instancias administradas de Amazon ECS

Los procesos de terminación de instancias administradas de Amazon ECS garantizan transiciones de carga de trabajo eficientes y, al mismo tiempo, optimizan los costos y mantienen el sistema en buen estado. El sistema de terminación ofrece tres vías de decisión distintas para la terminación de instancias, cada una con características temporales y perfiles de impacto en los clientes diferentes.

Terminación iniciada por el cliente

Proporciona un control directo sobre la eliminación de instancias cuando es necesario eliminar inmediatamente las instancias de contenedor del servicio. Se pone en marcha deregister-container-instance con el parámetro de solicitud force establecido en true, lo que significa que es necesaria la terminación inmediata a pesar de cualquier carga de trabajo en marcha.

Terminación de inactividad iniciada por el sistema

Implementa la optimización de costos mediante la detección inteligente de inactividad que identifica las instancias que ya no atienden las cargas de trabajo. Elastic Workload Service (EWS) implementa sofisticados algoritmos de detección de inactividad que supervisan el uso de las instancias e inician la terminación de las instancias que permanecen inactivas durante periodos configurables.

Terminación de actualización de la infraestructura

Implementa una administración proactiva de la infraestructura mediante la política de degradación natural de Node Manager, según la cual las instancias se actualizan periódicamente para garantizar que se pongan en marcha en las versiones más recientes de la plataforma y mantener la seguridad. Node Manager implementa políticas de tiempo de vida (TTL) que inician la terminación sin problemas de las instancias que han alcanzado su vida útil operativa máxima.

El sistema de terminación implementa un enfoque de dos fases que equilibra la continuidad de la carga de trabajo con los requisitos de administración de la infraestructura.

Fase 1: periodo de finalización eficiente

Durante esta fase, el sistema implementa estrategias de vaciado gradual que priorizan la continuidad de la carga de trabajo. Las tareas de servicio se vacían sin problemas mediante los procesos de programación normales de Amazon ECS. Las tareas independientes siguen en marcha porque es posible que se completen de forma natural. El sistema supervisa que todas las tareas lleguen al estado de parada mediante procesos de finalización naturales.

Fase 2: cumplimiento de plazos estrictos

Cuando la finalización eficiente no permite alcanzar los objetivos de terminaci´n dentro de los plazos aceptables, el sistema implementa un estricto cumplimiento de los plazos. Por lo general, el plazo fijo consiste en vaciar el tiempo de iniciación más siete días, lo que proporciona un tiempo considerable para completarlo de forma gradual y, al mismo tiempo, mantener los requisitos operativos. El cumplimiento incluye procedimientos automáticos de terminación forzosa del registro y terminación inmediata de todas las tareas pendientes, independientemente del estado en que estén terminadas.

Una instancia de contenedor ha completado el vaciado cuando todas las tareas que se ejecutan en la instancia pasan al estado STOPPED. La instancia de contenedor permanece en estado DRAINING hasta que se vuelva a activar o se elimine. Puede verificar el estado de las tareas de la instancia de contenedor mediante la operación ListTasks, a través del parámetro containerInstance, para obtener una lista de tareas de la instancia, y realizar a continuación la operación DescribeTasks, a través del nombre de recurso de Amazon (ARN) o el ID de cada tarea, para verificar el estado de la tarea.

Cuando esté listo para que la instancia de contenedor comience a alojar nuevamente tareas, cambie el estado de la instancia de contenedor de DRAINING a ACTIVE. El programador de servicios de Amazon ECS volverá a considerar la instancia de contenedor para la ubicación de tareas.

Procedimiento

Para establecer una instancia de contenedor en vaciado desde la nueva , siga estos pasos Consola de administración de AWS.

También puede utilizar la acción de API UpdateContainerInstancesState o el comando update-container-instances-state para cambiar el estado de una instancia de contenedor a DRAINING.

Consola de administración de AWS
  1. Abra la consola en https://console.aws.amazon.com/ecs/v2.

  2. En el panel de navegación, seleccione Clusters (Clústeres).

  3. En la página Clusters (Clústeres), elija un clúster que aloja sus instancias.

  4. En la página de Cluster : name (Clúster; nombre), elija la pestaña Infrastructure (Infraestructura). En Container instances (Instancias de contenedor) seleccione la casilla de verificación junto a cada instancia de contenedor que desee vaciar.

  5. Elija Acciones, Vaciar.