Como soluciono problemas de tarefas do Amazon ECS que demoram muito para serem interrompidas quando a instância de contêiner está definida como DRAINING?

4 minuto de leitura
0

Minha tarefa do Amazon Elastic Container Service (Amazon ECS) está demorando muito para passar para o estado STOPPED. Ou minha tarefa do Amazon ECS fica presa no estado RUNNING quando a instância de contêiner está definida como DRAINING. Como posso resolver esse problema?

Breve descrição

Quando você define uma instância do ECS como DRAINING, o Amazon ECS faz o seguinte:

  • Impede que novas tarefas sejam agendadas para colocação na instância de contêiner
  • Interrompe tarefas na instância de contêiner que estão no estado RUNNING

Suas tarefas podem ficar presas no estado RUNNING ou levar mais tempo para serem movidas para o estado STOPPED devido a problemas com parâmetros de configuração ou tarefas. Para solucionar esses problemas, considere as seguintes opções:

Resolução

**Confirmar se seus parâmetros DeploymentConfiguration estão definidos corretamente **

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters e, em seguida, escolha o cluster em que sua instância de contêiner está sendo drenada.
  3. Escolha a guia Instâncias do ECS e, em seguida, escolha DRAINING na seção Status.
  4. Escolha sua instância de contêiner e, em seguida, descubra o serviço para as tarefas que estão sendo drenadas ou demorando muito para serem drenadas.
  5. Escolha a guia Serviços, selecione o serviço e, em seguida, escolha Implantações.
  6. Verifique os valores de minimumHealthyPercent e maximumPercent.
    Observação: as tarefas de serviço na instância de contêiner que estão no estado RUNNING são interrompidas e substituídas de acordo com os parâmetros de configuração de implantação do serviço: minimumHealthyPercent e maximumPercent.

Confirmar se o valor do atraso de cancelamento do registro está definido corretamente

Importante: as etapas a seguir se aplicam somente aos serviços que usam o Application Load Balancer ou o Network Load Balancer. Se seu serviço estiver usando o Classic Load Balancer, verifique os valores de drenagem da conexão.

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters e, em seguida, escolha o cluster em que sua instância de contêiner está sendo drenada.
  3. Escolha a guia Serviços e selecione o serviço com a pilha presa em RUNNING.
  4. Escolha o Nome do grupo de destino.
  5. Na guia Detalhes, role para baixo e marque a caixa de seleção Atraso no cancelamento de registro.

Confirmar se o valor ECS_CONTAINER_STOP_TIMEOUT está definido corretamente

  1. Conecte-se à sua instância de contêiner usando SSH.
  2. Execute o comando docker inspect ecs-agent --format '{{json .Config.Env}}'.
  3. Verifique se há um valor para ECS_CONTAINER_STOP_TIMEOUT.
    Observação: ECS_CONTAINER_STOP_TIMEOUT é um parâmetro do agente de contêiner do ECS que define a quantidade de tempo que o Amazon ECS espera antes de finalizar um contêiner. A duração do tempo começa a contar quando uma tarefa é interrompida. Se você não vê o parâmetro ECS_CONTAINER_STOP_TIMEOUT na saída depois de executar o comando na etapa 2, então o Amazon ECS está usando o valor padrão de 30s.

Procurar outros problemas relacionados à tarefa

  1. Conecte-se à sua instância de contêiner usando SSH.
  2. Verifique se o daemon do Docker e o agente de contêiner do Amazon ECS estão em execução nas AMIs do Amazon Linux 1 ou do Amazon Linux 2.
  3. Verifique os logs do aplicativo com base no driver de log definido pelo LogConfiguration.
    Observação: por exemplo, se suas tarefas estiverem usando o driver de log awslogs, verifique se há problemas no Amazon CloudWatch Logs.

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos