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
minimumHealthyPercentestá por debajo del 100%, el programador puede hacer caso omiso dedesiredCounttemporalmente durante la sustitución de tareas. Por ejemplo,desiredCountson 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 estadoRUNNING, se consideran en buen estado. Las tareas para servicios que utilizan un balanceador de carga se consideran en buen estado si están en estadoRUNNINGy 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
minimumHealthyPercentes 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
maximumPercentrepresenta 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, sidesiredCountde 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
minimumHealthyPercentcomomaximumPercentson 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
La terminación de Instancias administradas de Amazon ECS garantiza transiciones de carga de trabajo eficientes y, al mismo tiempo, optimiza los costos y mantiene 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 ejecuta
deregister-container-instancecon el parámetro de solicitudforceestablecido en true. Esto significa que es necesaria la terminación inmediata a pesar de que haya cargas de trabajo en ejecución. - Terminación de inactividad iniciada por el sistema
-
Instancias administradas de Amazon ECS supervisa de forma continua y optimiza los costos de forma proactiva al terminar las instancias de contenedor de Amazon ECS inactivas que no ejecutan ninguna tarea. ECS utiliza un retraso heurístico para dar a las instancias de contenedor la oportunidad de adquirir las tareas recién lanzadas antes de su terminación. Esto se puede personalizar con el parámetro de configuración del proveedor de capacidad de Instancias administradas de Amazon ECS
scaleInAfter. - Terminación de actualización de la infraestructura
-
Instancias administradas de Amazon ECS administra y actualiza automáticamente el software de las instancias de contenedores administradas para garantizar la seguridad y el cumplimiento y, al mismo tiempo, mantener la disponibilidad de la carga de trabajo mediante un proceso controlado y configurable. Para obtener más información, consulte la aplicación de revisiones en Instancias administradas de Amazon ECS.
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
Abra la consola en https://console.aws.amazon.com/ecs/v2
. -
En el panel de navegación, seleccione Clusters (Clústeres).
-
En la página Clusters (Clústeres), elija un clúster que aloja sus instancias.
-
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. -
Elija Acciones, Vaciar.