Por que a contagem de tarefas em execução foi alterada no meu serviço do Amazon ECS?
Data da última atualização: 4/4/2022
A contagem de tarefas em execução no meu serviço Amazon Elastic Container Service (Amazon ECS) aumentou ou diminuiu.
Descrição breve
A contagem de tarefas em execução para o serviço do Amazon ECS pode aumentar ou diminuir devido a vários motivos. Algumas das causas comuns são as seguintes:
- Suas tarefas do Amazon ECS estão falhando nas verificações de integridade.
- O AWS CloudFormation ou o AWS Cloud Development Kit (AWS CDK) atualizou a contagem desejada no serviço do ECS.
- Você atualizou manualmente a contagem desejada para o serviço do ECS.
- A autoescalabilidade do serviço do Amazon ECS atualizou o número de tarefas com base na política de escalabilidade.
- Você atualizou a contagem mínima ou máxima na autoescalabilidade da aplicação usando a API RegisterScalableTarget.
- A configuração de implantação do serviço do ECS modificou a contagem de tarefas em execução durante a implantação.
Resolução
Suas tarefas do ECS estão falhando nas verificações de integridade
- Se as suas tarefas estiverem usando o tipo de execução do Amazon EC2, consulte Como fazer com que minhas tarefas do Amazon ECS sejam executadas usando o tipo de inicialização do Amazon EC2 para passar na verificação de integridade do Application Load Balancer no Amazon ECS?
- Se as tarefas estiverem usando o tipo de inicialização do AWS Fargate, consulte Como soluciono problemas de falhas de verificação de integridade para tarefas do Amazon ECS no Fargate?
O CloudFormation ou o AWS CDK atualizou a contagem desejada no serviço do ECS
Se você criou o seu serviço do ECS com CloudFormation ou CDK sem especificar o campo DesiredCount, a contagem desejada será definida como um valor padrão de 1. No entanto, quando o serviço é atualizado por meio do CloudFormation ou CDK sem especificar o campo DesiredCount, a contagem desejada existente na implantação atual é usada para a nova implantação.
Para solucionar esse problema, analise os eventos do AWS CloudTrail para verificar se a chamada de API UpdateService foi feita pelo CloudFormation. Você pode verificar isso verificando se o campo UserAgent na seção Registro de evento especifica o seguinte:
"userAgent": "cloudformation.amazonaws.com"
Para resolver esse problema, remova o parâmetro DesiredCount do código CloudFormation ou CDK durante a atualização.
Você atualizou manualmente a contagem desejada para o serviço do ECS
Se você atualizou manualmente o serviço do ECS usando a API UpdateService, o console do Amazon ECS ou a AWS Command Line Interface (AWS CLI), atualize o serviço novamente para alterar a contagem desejada para um valor apropriado. Para obter mais informações, consulte Atualizando um serviço e serviço de atualização.
Para solucionar esse problema, analise os eventos do CloudTrail para verificar se a chamada de APIUpdateService foi feita a partir do console do Amazon ECS ou da AWS CLI. Você pode visualizar essas informações no campo UserAgent no registro do CloudTrail.
Exemplo:
"userAgent": "console.amazonaws.com"
A autoescalabilidade do serviço do Amazon ECS atualizou o número de tarefas com base na política de escalabilidade
A autoescalabilidade do serviço do Amazon ECS pode ter aumentado ou diminuído a contagem desejada com base na política de escalabilidade. Analise o serviço e verifique se há alguma ação de escalabilidade recente.
Para visualizar as atividades de escalabilidade, faça o seguinte:
- Abra o console do Amazon ECS.
- No painel de navegação, escolha Clusters.
- Escolha o cluster que você quer conferir.
- Escolha a guiaServices (Serviços).
- Escolha o serviço que você deseja verificar.
- Escolha a guia Events (Eventos).
Se houver um evento de escalabilidade, você poderá exibir mensagens informativas, como as seguintes, na colunaMessage (Mensagem):
Successfully set desired count to 1. Change successfully fulfilled by ecs. Cause: monitor alarm TargetTracking-service/service-autoscaling/sample-webapp-AlarmLow-fcd80aef-5161-4890-aeb4-35dde11ff42c in state ALARM triggered policy TargetTrackingPolicy.
Se as tarefas forem interrompidas devido a uma ação de escalabilidade, revise as políticas demonitoramento do objetivo ou escalabilidade de etapas. Em seguida, atualize a contagem desejada de acordo com os requisitos da sua aplicação.
Para visualizar a configuração de autoescalabilidade da aplicação, faça o seguinte:
- Abra o console do Amazon ECS.
- No painel de navegação, escolha Clusters.
- Escolha o cluster que você quer conferir.
- Escolha a guiaServices (Serviços).
- Escolha o serviço que você deseja verificar.
- Escolha a guia Auto Scaling (Autoescalabilidade).
Observação: se você estiver usando o novo console do Amazon ECS, escolha Configuration and tasks (Configuração e tarefas) e, em seguida, visualize as informações em Service configuration (Configuração de serviço).
Você atualizou a contagem mínima e máxima na autoescalabilidade da aplicação usando a API RegisterScalableTarget
Se você usou a API RegisterScalableTarget para atualizar o destino escalável, verifique o valor da propriedade MinCapacity especificado na API. Se você especificou um novo valor mínimo, a autoescalabilidade da aplicação usará esse valor como o novo valor mínimo para o qual as tarefas podem ser reduzidas na escala vertical.
Observação: a autoescalabilidade da aplicação não reduz a contagem desejada para menos do que o valor mínimo especificado.
A configuração de implantação do serviço do ECS modificou a contagem de tarefas em execução durante a implantação
Analise os eventos do CloudTrail para verificar se a API UpdateService foi chamada recentemente. Você pode visualizar a configuração de implantação do seu serviço do ECS verificando o parâmetro de solicitaçãoDeploymentConfigration na API UpdateService.
-ou-
Analise a configuração de implantação do serviço do ECS no console do Amazon ECS fazendo o seguinte:
- Abra o console do Amazon ECS.
- No painel de navegação, escolha Clusters.
- Escolha o cluster que você quer conferir.
- Escolha a guiaServices (Serviços).
- Escolha o serviço que você deseja verificar.
- Escolha a guiaDeployments (Implantações).
Os parâmetros de configuração de implantação controlam quantas tarefas são executadas durante uma implantação e a sequência de tarefas de parada e início. Se a configuração de implantação for definida incorretamente, o número de tarefas em execução durante a implantação será reduzido. Portanto, é uma prática recomendada configurar o valor do parâmetroMinimumHealthyPercent para maior que 0%.
O parâmetroMinimumHealthyPercent representa o limite inferior em qualquer um dos itens a seguir como uma porcentagem do número desejado de tarefas para o serviço:
- Número de tarefas que devem ser executadas para um serviço durante uma implantação
- Número de tarefas que devem ser executadas quando uma instância de contêiner está diminuindo.
O valor desse parâmetro é arredondado para cima. Por exemplo, se MinimumHealthyPercent for 50% e o número desejado de tarefas for quatro, o programador poderá interromper duas tarefas existentes antes de iniciar duas novas tarefas. Se MinimumHealthyPercent for 75% e o número desejado de tarefas for dois, o programador não poderá interromper nenhuma tarefa devido ao valor resultante também ser dois.
O parâmetro MaximumPercent representa o limite superior em qualquer um dos itens a seguir como uma porcentagem do número desejado de tarefas para um serviço:
- Número de tarefas que devem ser executadas para um serviço durante uma implantação
- Número de tarefas que devem ser executadas quando uma instância de contêiner está diminuindo.
O valor desse parâmetro é arredondado para baixo. Por exemplo, se MaximumPercent for 200% e o número desejado de tarefas for quatro, o programador poderá iniciar quatro novas tarefas antes de interromper quatro tarefas existentes. Se MaximumPercent for 125% e o número desejado de tarefas for três, o programador não poderá iniciar nenhuma tarefa devido ao valor resultante também ser três.
Para obter mais informações, consulte Atualização contínua.
Informações relacionadas
Este artigo ajudou?
Precisa de ajuda com faturamento ou suporte técnico?