Drenagem de instâncias de contêiner do Amazon ECS - Amazon Elastic Container Service

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 ter mais informações, consulte Serviços do Amazon ECS e Parâmetros de definição de serviço do Amazon ECS.

  • Se minimumHealthyPercent estiver abaixo de 100%, o programador pode ignorar desiredCount temporariamente durante a substituição de tarefas. Por exemplo, se desiredCount for 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 de RUNNING, 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 de RUNNING e 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 minimumHealthyPercent for 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 maximumPercent representa 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, se desiredCount for 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 minimumHealthyPercent quanto maximumPercent estiverem 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.

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 do serviço do Amazon ECS considerará a instância de contêiner novamente para a colocação de tarefas.

Procedimento

As etapas a seguir podem ser usadas para definir uma instância de contêiner a ser drenada usando o novo AWS Management Console.

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.

AWS Management Console
  1. Abra o console em https://console.aws.amazon.com/ecs/v2.

  2. No painel de navegação, escolha Clusters.

  3. Na página Clusters, escolha um cluster que hospede suas instâncias.

  4. 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.

  5. Escolha Ações, Drenar.