Como soluciono problemas de escalabilidade com meu provedor de capacidade do Amazon ECS?

10 minuto de leitura
0

Configurei um provedor de capacidade para meu cluster do Amazon Elastic Container Service (Amazon ECS). No entanto, o provedor de capacidade não se expande quando o cluster fica sem recursos ou aumenta quando a capacidade está menos ocupada.

Breve descrição

O provedor de capacidade do seu cluster do Amazon ECS não aumenta ou diminui automaticamente devido a um ou mais dos seguintes motivos:

  • O serviço Amazon ECS não está associado ao provedor de capacidade.
  • As políticas de escalabilidade relacionadas ao provedor de capacidade não estão vinculadas ao grupo de Auto Scaling.
  • As políticas de escalabilidade de rastreamento de destino não estão configuradas corretamente.
  • A porcentagem de capacidade de destino não está configurada corretamente no provedor de capacidade.
  • A estratégia de posicionamento de tarefas não está definida de acordo com a workload.
  • O serviço ECS está falhando com alguns erros e impedindo a escalabilidade do provedor de capacidade.
  • Você está usando o dimensionamento gerenciado para o provedor de capacidade, e o grupo Auto Scaling tem políticas de escalabilidade personalizadas anexadas a ele.
  • O grupo Auto Scaling executou a instância do contêiner, mas não consegue ingressar no cluster.
  • Suas instâncias de contêiner estão protegidas contra aumento da escala.
  • O provedor de capacidade está preso no estado de falha.
  • O grupo do Auto Scaling está preso em um loop de escala horizontal e aumento da escala.

Resolução

O serviço Amazon ECS não está associado ao provedor de capacidade

Para verificar se o serviço ECS está associado ao provedor de capacidade, execute o comando describe-services do AWS Command Line Interface (AWS CLI).

aws ecs describe-services --cluster example-cluster --services example-service --region example-region --query services[].capacityProviderStrategy

Se o serviço ECS estiver associado ao provedor de capacidade, a saída deverá ser semelhante à seguinte:

[
  [
    {
      "capacityProvider": "example-capacity-provider",
      "weight": 1,
      "base": 1
    }
  ]
]

Certifique-se de que o campo capacityProviderStrategy não seja nulo na saída. Você pode visualizar a configuração do serviço analisando os eventos do AWS CloudTrail para chamadas das APIs CreateService e UpdateService.

Para resolver esse problema, atualize o serviço ECS usando os comandos update-service, run-task ou put-cluster-capacity-providers da AWS CLI. Você também pode atualizar o serviço usando o console do Amazon ECS.

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.

As políticas de escalabilidade relacionadas ao provedor de capacidade não estão vinculadas ao grupo de Auto Scaling

Quando um provedor de capacidade é criado e associado a um grupo de Auto Scaling, o grupo de Auto Scaling cria uma política de escalabilidade que usa o rastreamento de destino para modificar a capacidade desejada para acomodar cargas de cluster.

Para solucionar esse problema, analise os eventos do CloudTrail para as APIs UpdateAutoScalingGroup, CreateCapacityProvider, UpdateCapacityProvider e PutScalingPolicy.

Verifique se o grupo de Auto Scaling foi criado como um anexo de cluster executando o seguinte comando:

aws ecs describe-clusters --clusters example-cluster --include ATTACHMENTS --region example-region --query clusters[].attachments[]

A saída do comando deve ser semelhante à seguinte:

[
  {
    "id": "100a23456-5f0b-4abc-b998-d6789d111a",
    "type": "asp",
    "status": "CREATED",
    "details": [
      {
        "name": "capacityProviderName",
        "value": "example-capacityProvider"
      },
      {
        "name": "scalingPlanName",
        "value": "ECSManagedAutoScalingPlan-bb60c8fa-3ed7-4808-b39c-abcdef2345"
      }
    ]
  }
]

Se você estiver usando uma política de escalabilidade gerenciada, verifique se a política está anexada ao grupo de Auto Scaling fazendo o seguinte:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters.
  3. Abra o cluster que você deseja verificar.
  4. Escolha a guia Provedores de capacidade.
  5. Para o provedor de capacidade que você deseja verificar, escolha o ASG.
    Você é direcionado para a página de grupos do Auto Scaling no console do Amazon EC2.
  6. Escolha a guia Escalabilidade automática.
    Você pode ver as políticas de escalabilidade.
  7. Verifique se a política de escalabilidade que você está usando está incluída.

Além disso, certifique-se de incluir o prefixo AutoScaling-ECSManagedAutoScalingPlan no nome da política de escalabilidade de grupo de Auto Scaling. Caso contrário, o grupo de Auto Scaling usa uma política de escalabilidade diferente da gerenciada pelo provedor de capacidade. Observe que os provedores de capacidade podem ser usados junto com outros tipos de políticas de escalabilidade. Para obter mais informações, consulte Escalonamento automático de serviços.

As políticas de escalabilidade de rastreamento de destino não estão configuradas corretamente

Uma política de escalabilidade de rastreamento de metas rastreia um valor alvo para a métrica que você define. A escalabilidade automática do Amazon ECS cria e gerencia os alarmes do Amazon CloudWatch que acionam a política de dimensionamento e calcula o ajuste de escalabilidade com base na métrica e no valor de destino. Se a política de monitoramento do objetivo não estiver configurada corretamente, as tarefas podem não ser escalada automaticamente conforme necessário.

Suponha que a política de escalabilidade automática de rastreamento de destino esteja rastreando a métrica CPUUtilization no CloudWatch e você especifique uma porcentagem de rastreamento de destino de 60. Nesse caso, o provedor de capacidade trabalha com base nos melhores esforços para manter a utilização agregada da CPU em 60%. Isso resulta em um evento de expansão horizontal quando a utilização da CPU é maior que 60% e uma escala no evento quando a utilização é inferior a 60%.

Para resolver esse problema, escolha a métrica correta e defina os valores corretos de aumento e redução na política de rastreamento de destino com base em sua workload. Para obter mais informações, consulte Políticas de dimensionamento de rastreamento de destino para o Aplicativo Auto Scaling.

A porcentagem de capacidade de destino não está configurada corretamente no provedor de capacidade

O valor da capacidade de destino é usado como o valor de destino para a métrica do CloudWatch usada na política de dimensionamento com monitoramento do objetivo do Amazon ECS. Esse valor de capacidade de destino é correspondido com base no melhor esforço. Os valores permitidos para esse valor são inteiros entre 1 e 100. Por exemplo, se você definir a capacidade de destino como 100%, todas as instâncias serão utilizadas e todas as instâncias que não estiverem executando tarefas serão dimensionadas. No entanto, esse comportamento não é garantido em todos os momentos. Se você precisar de capacidade sobressalente, defina a capacidade de destino para um valor ligeiramente inferior a 100% com base em sua necessidade.

Para atualizar o provedor de capacidade com a porcentagem de capacidade desejada correta, siga as instruções em Atualização de um provedor de capacidade de grupo do Auto Scaling usando o console clássico.

A estratégia de posicionamento de tarefas não está definida de acordo com a workload

As estratégias de posicionamento de tarefas podem ser especificadas quando você cria um serviço ou executa uma tarefa. Você também pode atualizar as estratégias de posicionamento de tarefas para os serviços existentes. Por exemplo, se sua workload é intensiva em memória e você não configurou a estratégia de posicionamento de tarefas de acordo, as tarefas não aumentam ou diminuem com base no uso da memória. Certifique-se de verificar os tipos de estratégia de colocação de tarefas e definir essas estratégias de acordo com sua carga de trabalho.

O serviço ECS está falhando com alguns erros e impedindo a escalabilidade do provedor de capacidade

Se o serviço ECS falhar com algum erro, o provedor de capacidade será impedido de aumentar e reduzir a escala. Para solucionar o motivo da falha do serviço do ECS, verifique as mensagens de evento de serviço no console do Amazon ECS.

Você está usando o dimensionamento gerenciado para o provedor de capacidade, e o grupo Auto Scaling tem políticas de escalabilidade personalizadas anexadas a ele

Quando seu cluster não é dimensionado automaticamente, você pode receber o seguinte erro:

"StatusCode": "ActiveWithProblems"
"StatusMessage": "Scaling plan has been created but failed to be applied to all resources. Problems were encountered for 1 resource. See scaling plan resources for the failure details."

Esse erro ocorre quando as duas condições a seguir são verdadeiras:

  • Você está usando a escalabilidade gerenciado pela AWS para o provedor de capacidade.
  • O grupo do Auto Scaling tem políticas de escalabilidade personalizadas que não são criadas pelo Amazon ECS anexado.

Para resolver esse erro, consulte Evitar o erro ActiveWithProblems. Quando você habilita a escalabilidade gerenciada, o Amazon ECS gerencia as ações de aumento e redução do grupo Auto Scaling com planos de escalabilidade do Auto Scaling. É uma prática recomendada sempre criar um novo grupo de Auto Scaling e anexar esse grupo ao provedor de capacidade.

O grupo Auto Scaling executou a instância do contêiner, mas não consegue ingressar no cluster

Suas instâncias de contêiner estão protegidas contra aumento da escala

Se você habilitou a proteção contra encerramento gerenciada ao configurar o provedor de capacidade, o Amazon ECS impedirá que as instâncias do Amazon EC2 em um grupo do Auto Scaling que contenha tarefas sejam encerradas durante uma ação de escalabilidade.

Para garantir que o grupo de Auto Scaling possa encerrar instâncias antigas quando você alterar a capacidade desejada, faça o seguinte:

Para saber mais, no Amazon ECS, como soluciono o erro "A configuração de proteção de encerramento gerenciada para o fornecedor da capacidade não é válida"?

O provedor de capacidade está preso no estado de falha

É uma prática recomendada criar um novo grupo de Auto Scaling para usar com seu provedor de capacidade em vez de usar um grupo existente. Se você usar um grupo de Auto Scaling existente, poderá ter problemas ao usar o provedor de capacidade. Isso ocorre porque as instâncias do Amazon EC2 no estado de execução associadas ao grupo existente e registradas em um cluster do Amazon ECS podem não estar devidamente registradas com o provedor de capacidade.

Para ver o status do provedor de capacidade, execute o comando da AWS CLI describe-capacity-providers.

Além disso, analise os eventos do CloudTrail e verifique se há erros relacionados à API CreateCapacityProvider.

O grupo do Auto Scaling está preso em um loop de escala horizontal e aumento da escala

Quando o valor da métrica especificado na política de escalabilidade para o serviço ECS aumenta, o grupo do Auto Scaling expande e inicia instâncias conforme necessário. No entanto, se o valor da métrica cair após o pico repentino, o grupo de Auto Scaling tentará escalar as instâncias. Se o valor da métrica flutuar várias vezes em um curto período de tempo, o grupo de Auto Scaling pode ficar preso em um loop de redução da escala horizontal e aumento de escala. Para evitar esse problema, certifique-se de definir o valor limite da métrica na política de escalabilidade de acordo com sua carga de trabalho.


Informações relacionadas

Aprofundamento na escalabilidade automática do cluster do Amazon ECS

Como solucionar erros de provedor de capacidade no Amazon ECS?

Provedores de capacidade do AWS Fargate

Fornecedores de capacidade do grupo de Auto Scaling

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos