Como posso configurar o Amazon ECS Service Auto Scaling no Fargate?

6 minuto de leitura
0

Quero configurar o Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling no AWS Fargate.

Breve descrição

Você pode aumentar ou diminuir o número de tarefas desejado integrando o Amazon ECS no Fargate aos alarmes do Amazon CloudWatch e ao Application Auto Scaling. Em seguida, você pode usar as métricas do CloudWatch para configurar seus alarmes do CloudWatch.

Quando os alarmes do CloudWatch acionam uma política do Auto Scaling, o Application Auto Scaling decide a nova contagem desejada com base na política de ajuste de escala configurada. Em seguida, o Application Auto Scaling faz a chamada de API UpdateService para o Amazon ECS com o novo valor de contagem desejado. O agendador de serviços do Amazon ECS inicia ou encerra tarefas para atender à nova contagem desejada. Sua atividade de ajuste de escala permanece no estado InProgress até que a contagem desejada e a contagem em execução sejam iguais.

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Resolução

Observação: O usuário do IAM que acessa as configurações do Service Auto Scaling deve ter as permissões apropriadas para os serviços que oferecem suporte ao ajuste de escala dinâmico. Para obter mais informações, consulte as permissões do IAM necessárias para o ajuste de escala automático de serviços.

Configure o Service Auto Scaling para seu serviço Fargate

Ao criar ou atualizar um serviço no console do Amazon ECS, escolha o seguinte na página Definir ajuste de escala automático:

1.    Escolha Configurar o Service Auto Scaling para ajustar a contagem desejada do seu serviço.

2.    Em Número mínimo de tarefas, insira o menor número de tarefas que você deseja que o Service Auto Scaling use.

3.    Em Número desejado de tarefas, insira o número de tarefas que você deseja que o Service Auto Scaling use.

Observação: O número desejado de tarefas deve estar na faixa de sua contagem mínima e máxima de tarefas.

4.    Em Número máximo de tarefas, insira o maior número de tarefas que você deseja que o Service Auto Scaling use.

Observação: O número mínimo e máximo de tarefas são limites rígidos para seu serviço.

5.    Para o perfil do IAM para Service Auto Scaling, escolha ecsAutoscaleRole.

6.    Na seção Políticas de ajuste de escala automático de tarefas, escolha Política de ajuste de escala automático.

7.    Conclua as etapas restantes no assistente de configuração para criar ou atualizar seu serviço.

Escolha uma política de ajuste de escala

Escolha uma política de rastreamento de alvos ou uma política de ajuste de escala por etapas com base em seus requisitos e nas seguintes considerações:

Para políticas de rastreamento de alvos:

  • Você deve definir um valor alvo (limite) para sua métrica especificada. O Application Auto Scaling cria e gerencia os alarmes do CloudWatch que acionam a política de ajuste de escala.
  • Você pode usar as métricas de serviço ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization e ALBRequestCountPerTarget do Amazon ECS para rastreamento de alvos.
  • Uma política de rastreamento de alvos calcula o ajuste de escala (ou seja, a contagem de tarefas desejada) com base na métrica e no valor alvo definidos por você. Você não precisa configurar a ação de ajuste de escala como faz com uma política de ajuste de escala por etapas. Isso ocorre porque uma política de rastreamento de alvos adiciona ou remove capacidade conforme necessário para manter a métrica no valor alvo especificado ou próximo dele.
  • Você deve escolher um período de esfriamento para aumento e redução de escala.

Para políticas de ajuste de escala por etapas:

  • Você pode criar ou usar alarmes existentes do CloudWatch para qualquer métrica de ajuste de escala por etapas.
  • Você deve escolher ações de ajuste de escala ou ajustes de etapas, como ScalingAdjustment, MetricIntervalUpperBound e MetricIntervalLowerBound.
  • Você pode especificar o tipo de ajuste de escala como uma porcentagem da capacidade atual do seu alvo escalável ou usando números absolutos.
  • Você pode aumentar ou diminuir o número de tarefas desejado criando políticas de ajuste de escala para lidar com a atividade de aumento e redução.

**Observação:**Para obter mais informações, consulte a Etapa 5: Configuração do serviço para usar o Service Auto Scaling.

Configure o Service Auto Scaling usando a AWS CLI

1.    Registre seu serviço Fargate como um alvo escalável com o Application Auto Scaling:

aws application-autoscaling register-scalable-target \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-service-name \
--min-capacity 1 --max-capacity 10 --region us-east-1

2.    Crie uma política de rastreamento de alvos ou ajuste de escala por etapas para o alvo escalável (ou seja, seu serviço Fargate).

Política de rastreamento de alvos:

Crie uma política de rastreamento de alvos:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/<cluster>/<service-name> \
--policy-name Test-target-tracking-scaling-policy --policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{ "TargetValue": 75.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "ECSServiceAverageCPUUtilization" }, "ScaleOutCooldown": 60,"ScaleInCooldown": 60}'

Observação: Quando você cria sua política de rastreamento de alvos, o Application Auto Scaling cria alarmes do CloudWatch para aumentar e reduzir a escala com base no valor alvo (limite) que você escolher.

Política de ajuste de escala por etapas:

1.    Crie uma política de ajuste de escala por etapas com os ajustes de etapas necessários:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-service-name \
--policy-name Test-Step-scaling-policy-ScaleOut --policy-type StepScaling \
--step-scaling-policy-configuration '{"AdjustmentType": "ExactCapacity","StepAdjustments": [ { "MetricIntervalLowerBound": 20, "ScalingAdjustment": 10}, { "MetricIntervalLowerBound": 0, "MetricIntervalUpperBound": 20,"ScalingAdjustment": 5}],"Cooldown": 60, "MetricAggregationType": "Average"}'

2.    Associe sua política de ajuste de escala da etapa 1 como uma ação de alarme ao seu alarme novo ou existente do CloudWatch:

aws cloudwatch put-metric-alarm \
--alarm-name Test-ScaleOut --metric-name MemoryUtilization \
--namespace AWS/ECS --statistic Average --period 60 --threshold 60 \
--comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --datapoints-to-alarm 1 \
--dimensions Name=ClusterName,Value=your-cluster Name=ServiceName,Value=your-service-name --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"

3.    Crie outra política de ajuste de escala por etapas e um alarme do CloudWatch para a atividade de redução de escala.

Observação: Quando a atividade de aumento de escala do seu serviço está em andamento, qualquer atividade de redução de escala acionada pelo CloudWatch é bloqueada até que a atividade de aumento seja concluída. A atividade de aumento de escala InProgress atinge o tempo limite quando o Amazon ECS não atinge a contagem desejada definida pelo Auto Scaling. O tempo limite pode ter várias causas, como problemas de imagem ou rede. Se uma atividade de redução for acionada pelas métricas do CloudWatch durante o período de esfriamento do aumento de escala mas uma atividade de aumento for concluída, uma atividade de redução será executada.


Informações relacionadas

Solução de problemas do ajuste de escala automático de serviços

Ajuste de escala automático de serviços

DescribeScalingActivities

Referência de comandos da AWS CLI para application-autoscaling

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos