Quero configurar o Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling no AWS Fargate.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Quando um alarme do Amazon CloudWatch inicia o ajuste de escala automático, o ajuste de escala automático de aplicações usa sua política de escalabilidade para determinar a nova contagem desejada. Em seguida, o ajuste de escala automático de aplicações inicia a chamada de API UpdateService para o Amazon ECS com o novo valor do parâmetro desiredCount. O agendador de serviços do Amazon ECS inicia ou encerra tarefas para atender à nova contagem desejada. Sua atividade de escalabilidade permanece no estado InProgress até que a nova contagem desejada e a contagem em execução sejam iguais.
É possível usar o console do Amazon ECS ou a AWS CLI para configurar o ajuste de escala automático do Amazon ECS no Fargate. O usuário do AWS Identity and Access Management (AWS IAM) que define as configurações de ajuste de escala automático do serviço deve ter permissões para os serviços que oferecem suporte para a escalabilidade dinâmica. Para obter mais informações, consulte Permissões da IAM exigidas para o ajuste de escala automático do serviço Amazon ECS.
Use o console do Amazon ECS
Conclua as seguintes etapas:
- Abra o console do Amazon ECS.
- Escolha Serviço de Ajuste de Escala Automático e, em seguida, selecione a opção Usar ajuste de escala automático do serviço.
- Insira os seguintes valores para o ajuste de escala automático do serviço:
Em Número mínimo de tarefas, insira o menor número de tarefas.
Em Número máximo de tarefas, insira o maior número de tarefas.
Observação: a contagem desejada não fica abaixo do número mínimo nem acima do número máximo.
- Crie uma política de escalabilidade de monitoramento de alvo ou crie uma política de escalonamento por etapas para adicionar ao Amazon ECS.
Use a AWS CLI
Execute o seguinte comando register-scalable-target para registrar o Fargate como um alvo dimensionável com o ajuste de escala automático de aplicações:
aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--min-capacity 1 --max-capacity 10 --region REGION
Observação: substitua CLUSTER_NAME por seu cluster, SERVICE_NAME por seu serviço e REGIÃO por sua região da AWS.
Em seguida, execute put-scaling-policy para criar a política de escalabilidade de monitoramento de alvo ou a política de escalabilidade por etapas para o Fargate como alvo dimensionável. No comando, inclua o arquivo JSON que você criou.
Exemplo de comando para política de escalabilidade de monitoramento de alvo:
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/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: substitua CLUSTER_NAME por seu cluster, SERVICE_NAME por seu serviço e REGIÃO por sua região. O ajuste de escala automático de aplicações cria alarmes do CloudWatch para escalabilidade com base em seus valores destino.
Exemplo de comando para política de escalabilidade por etapas:
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/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"}'
Observação: substitua CLUSTER_NAME por seu cluster, SERVICE_NAME por seu serviço e REGIÃO por sua região.
Se você criou uma política de escalabilidade por etapas, execute o seguinte comando put-metric-alarm para adicionar sua política de escalabilidade a um alarme do CloudWatch. Em seguida, repita a etapa anterior para criar uma segunda política de escalabilidade por etapas e um alarme do CloudWatch para a atividade de escalabilidade:
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=CLUSTER_NAME Name=ServiceName,Value=SERVICE_NAME --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"
Observação: substitua CLUSTER_NAME por seu cluster, SERVICE_NAME por seu serviço e REGIÃO por sua região.
O ajuste de escala automático de aplicações bloqueia todas as atividades de redução horizontal de escala durante as atividades de aumento horizontal de escala até que o aumento esteja concluído. Se não atingir a contagem que você configurou, o Amazon ECS atinge o tempo limite da atividade de aumento horizontal da escala InProgress. Os motivos comuns para um limite de tempo incluem problemas de imagem ou de rede. Se as métricas do CloudWatch reduzirem a escala horizontalmente durante o período de espera de aumento horizontal da escala e a atividade de aumento horizontal da escala for concluída, o ajuste de escala automático de aplicações executa a atividade de redução horizontal da escala.
Informações Relacionadas
Solução de problemas do serviço ajuste de escala automático no Amazon ECS
Escale automaticamente seu serviço do Amazon ECS
DescribeScalingActivities
application-autoscaling