Drenagem de instâncias de contêiner do Amazon ECS
Poderá haver momentos em que você precisará remover uma instância de contêiner do cluster, por exemplo, para executar atualizações do sistema ou para reduzir a escala verticalmente da capacidade do cluster. O Amazon ECS fornece a capacidade de fazer a transição de uma instância de contêiner para um status DRAINING. Esse recurso é denominado drenagem de instância de contêiner. Quando uma instância de contêiner é definida como DRAINING, o Amazon ECS impede que novas tarefas sejam programadas para posicionamento na instância de contêiner.
Comportamento de drenagem para serviços
Todas as tarefas que fazem parte de um serviço e que estão no estado PENDING são interrompidas de imediato. Se houver capacidade de instância de contêiner disponível no cluster, o programador de serviços iniciará as tarefas de substituição. Se não houver capacidade suficiente de instância de contêiner, será enviada uma mensagem de evento de serviço indicando o problema.
Tarefas que fazem parte de um serviço na instância de contêiner e que estão no estado RUNNING são transferidas para o estado STOPPED. O programador de serviços tenta substituir as tarefas de acordo com os parâmetros de tipo de implantação e de configuração de implantação do serviço, minimumHealthyPercent e maximumPercent. Para obter mais informações, consulte Serviços do Amazon ECS e Parâmetros de definição de serviço do Amazon ECS.
-
Se
minimumHealthyPercentestiver abaixo de 100%, o programador pode ignorardesiredCounttemporariamente durante a substituição de tarefas. Por exemplo, sedesiredCountfor quatro tarefas, um mínimo de 50% permitem que o programador interrompa duas tarefas existentes antes de iniciar duas novas tarefas. Se o mínimo é 100%, a programador de serviço não pode remover tarefas existentes até que as tarefas de substituição sejam consideradas saudáveis. Se as tarefas para serviços que não usam um load balancer estiverem com o status deRUNNING, elas serão consideradas saudáveis. As tarefas para serviços que usam um load balancer são consideradas saudáveis se estiverem com o status deRUNNINGe se a instância de contêiner que as hospedam são relatadas como saudáveis pelo load balancer.Importante
Se você usar Instâncias Spot e a
minimumHealthyPercentfor maior ou igual a 100%, o serviço não terá tempo suficiente para substituir a tarefa antes que a instância spot seja encerrada. -
O parâmetro
maximumPercentrepresenta um limite maior no número de tarefas em execução durante a substituição de tarefas, o que permite que você defina o tamanho do lote de substituição. Por exemplo, sedesiredCountfor quatro tarefas, um máximo de 200% inicia quatro novas tarefas antes que elas sejam drenadas (considerando que os recursos de cluster necessários fazer isso estejam disponíveis). Se o máximo for 100%, as tarefas de substituição não podem começar até que tarefas de drenagem sejam interrompidas.Importante
Se tanto
minimumHealthyPercentquantomaximumPercentestiverem em 100%, então o serviço não pode remover tarefas existentes e também não pode iniciar tarefas de substituição. Isso evita a drenagem com êxito da instância de contêiner e evita a realização de novas implantações.
Comportamento de drenagem para tarefas autônomas
Quaisquer tarefas autônomas no estado PENDING ou RUNNING não são afetadas. Você deve esperar até que eles sejam interrompidas por conta própria ou interrompa-as manualmente. A instância de contêiner permanecerá no status DRAINING.
Comportamento da drenagem de instâncias gerenciadas do Amazon ECS.
Os processos de encerramento de instâncias gerenciadas do Amazon ECS garantem transições de workload perfeitas, ao mesmo tempo em que otimizam os custos e mantêm a integridade do sistema. O sistema de encerramento fornece três caminhos de decisão distintos para encerramento de instâncias, cada um com diferentes características de tempo e perfis de impacto no cliente.
- Encerramento iniciado pelo cliente
-
Fornece controle direto sobre a remoção de instâncias quando você precisa remover imediatamente as instâncias de contêiner do serviço. Você executa
deregister-container-instancecom o parâmetro de solicitaçãoforcedefinido como verdadeiro. Isso significa que o encerramento imediato é necessário, apesar de qualquer workload em execução. - Encerramento por inatividade iniciado pelo sistema
-
Implementa a otimização de custos por meio da detecção inteligente de inatividade que identifica instâncias que não atendem mais às workloads. O Elastic Workload Service (EWS) implementa algoritmos sofisticados de detecção de inatividade que monitoram a utilização da instância e iniciam o encerramento de instâncias que permanecem inativas por períodos configuráveis.
- Encerramento da atualização da infraestrutura
-
Implementa o gerenciamento proativo da infraestrutura por meio da política de decaimento natural do Node Manager, em que as instâncias são atualizadas periodicamente para garantir que sejam executadas nas versões mais recentes da plataforma e mantenham a postura de segurança. O Node Manager implementa políticas de tempo de vida útil (TTL) que iniciam o encerramento normal de instâncias que atingiram sua vida útil operacional máxima.
O sistema de encerramento implementa uma abordagem de duas fases que equilibra a continuidade da workload com os requisitos de gerenciamento da infraestrutura.
Fase 1: período de conclusão sem dificuldades
Durante essa fase, o sistema implementa estratégias de drenagem normal que priorizam a continuidade da workload. As tarefas de serviço são drenadas sem dificuldades por meio dos processos normais de agendamento do Amazon ECS. As tarefas autônomas continuam sendo executadas porque podem ser concluídas naturalmente. O sistema monitora se todas as tarefas atingem o estado parado por meio dos processos de conclusão natural.
Fase 2: cumprimento de prazos rigorosos
Quando a conclusão normal não atinge os objetivos de encerramento dentro de prazos aceitáveis, o sistema implementa a aplicação de prazos rigorosos. O prazo rigoroso normalmente é definido como o tempo de início da drenagem mais sete dias, proporcionando um tempo substancial para uma conclusão perfeita e ainda mantendo os requisitos operacionais. A imposição inclui procedimentos automáticas de cancelamento de registro forçado e o encerramento imediato de todas as tarefas restantes, independentemente do status de conclusão.
Uma instância de contêiner terá concluído a drenagem quando todas as tarefas em execução na instância tiverem feito a transição para o estado STOPPED. A instância de contêiner permanece no estado DRAINING até que seja reativada ou excluída. É possível verificar o estado das tarefas na instância de contêiner usando a operação ListTasks com o parâmetro containerInstancepara obter uma lista de tarefas na instância, seguida por uma operação DescribeTasks com o nome do recurso da Amazon (ARN) ou o ID de cada tarefa para verificar o estado da tarefa.
Quando você estiver pronto para que a instância de contêiner comece a hospedar tarefas novamente, altere o estado da instância de contêiner de DRAINING para ACTIVE. O programador de serviços do Amazon ECS considera a instância de contêiner novamente para posicionamento de tarefa.
Procedimento
As etapas a seguir podem ser usadas para definir uma instância de contêiner a ser drenada usando o novo Console de gerenciamento da AWS.
Você também pode usar a ação de API UpdateContainerInstancesState ou o comando update-container-instances-state a fim de alterar o status de uma instância de contêiner para DRAINING.
Console de gerenciamento da AWS
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
No painel de navegação, escolha Clusters.
-
Na página Clusters, escolha um cluster que hospede suas instâncias.
-
Na página Cluster :
name, escolha a guia Infrastructure (Infraestrutura). Em seguida, em Container instances (Instâncias de contêiner), marque a caixa de seleção de cada instância de contêiner que você deseja drenar. -
Escolha Ações, Drenar.