Como posso configurar o Amazon ECS Service Auto Scaling no Fargate?
Quero configurar o Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling no AWS Fargate.
Breve descrição
Para aumentar ou diminuir sua contagem de tarefas, integre o Amazon ECS no Fargate com alarmes do Amazon CloudWatch e o AWS Application Auto Scaling. Em seguida, você pode usar as métricas do CloudWatch para configurar seus alarmes do CloudWatch.
Quando o alarme do CloudWatch inicia um ajuste de escala automático, o Application Auto Scaling usa a política de ajuste de escala configurada para determinar a nova contagem. Em seguida, o Application Auto Scaling faz a chamada de API UpdateService para o Amazon ECS com o novo valor de contagem. O agendador de serviços do Amazon ECS inicia ou encerra tarefas para atender à nova contagem. Sua atividade de escalonamento permanece no estado InProgress até que a nova contagem e a contagem em execução sejam as mesmas.
Resolução
Observação: o usuário do AWS Identity and Access Management (IAM) que acessa as configurações de ajuste de escala automático do serviço deve ter as permissões apropriadas para os serviços que oferecem suporte para ajuste de escala dinâmico. Para obter mais informações, consulte Permissões obrigatórias do IAM para o ajuste de escala automático do serviço Amazon ECS.
Console do Amazon ECS
Para configurar o ajuste de escala automático do serviço do Amazon ECS no Fargate, use o console do Amazon ECS para configurar o ajuste de escala automático do serviço. Em seguida, adicione a política de ajuste de escala ao serviço.
Configurar o ajuste de escala automático do serviço
Quando você cria ou atualiza um serviço no console do Amazon ECS, em Ajuste de escala automático do serviço, conclua as seguintes etapas:
- Selecione a opção Usar serviço de ajuste de escala automático.
- Em Número mínimo de tarefas, insira o menor número de tarefas que você deseja que o Service Auto Scaling use.
- 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.
Adicionar uma política de ajuste de escala ao serviço
Com base em seus requisitos, escolha uma política de monitoramento de destino ou uma política de ajuste de escala em etapas:
- Políticas de monitoramento de destino: Conclua as etapas em Para configurar políticas de ajuste de escala de destino para o serviço do Amazon ECS usando o console do Amazon ECS em Políticas de ajuste de escala com monitoramento de destino.
- Políticas de ajuste de escala em etapas: Conclua as etapas em Para configurar políticas de ajuste de escala em etapas para o serviço do Amazon ECS usando o console do Amazon ECS em Políticas de ajuste de escala em etapas.
AWS CLI
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Use a AWS CLI para configurar o ajuste de escala automático do serviço do Amazon ECS no Fargate. Em seguida, crie uma política de monitoramento de destino ou de ajuste de escala em etapas para escalonar com base nos valores que você definir.
Configurar o ajuste de escala automático do serviço
Para registrar o serviço Fargate como um destino escalável com o Application Auto Scaling, execute o seguinte comando:
aws application-autoscaling register-scalable-target \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/<cluster>/<service-name> \ --min-capacity 1 --max-capacity 10 --region us-east-1
Criar uma política de monitoramento de destino ou de ajuste de escala em etapas
Crie uma política de monitoramento de destino ou de ajuste de escala em etapas para o destino escalonável. No exemplo a seguir, seu serviço do Fargate é o destino escalável.
Política de monitoramento de destino:
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 a política de monitoramento de destino, o Application Auto Scaling cria alarmes do CloudWatch para ajuste de escala com base nos valores de destino que você escolher.
Política de ajuste de escala em etapas:
-
Crie uma política de ajuste de escala em etapas com os ajustes de etapas necessários para sua atividade de aumento de escala horizontal:
aws application-autoscaling put-scaling-policy \ --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \ --resource-id service/<cluster>/<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"}'
-
Associe sua política de ajuste de escala como uma ação de alarme ao seu alarme 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=<cluster> Name=ServiceName,Value=<service-name> --unit Percent \ --alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"
-
Repita as etapas para criar uma segunda política de ajuste de escala em etapas e um alarme do CloudWatch para a atividade de redução da escala horizontal.
Observação: quando o CloudWatch está aumentando a escala horizontalmente, todas as atividades de redução de escala horizontal que o CloudWatch inicia são bloqueadas até que a atividade de aumento da escala horizontal termine. A atividade de aumento de escala horizontal InProgress atinge o tempo limite quando o Amazon ECS não atinge a contagem configurada que o Application Auto Scaling definiu. Os motivos comuns para um tempo limite incluem problemas de imagem ou de rede. Se as métricas do CloudWatch começarem a ter a escala reduza horizontalmente durante o resfriamento do processo de aumentar a escala horizontalmente e uma atividade de aumento de escala horizontal for concluída, uma atividade de redução de escala horizontal será executada.
Informações relacionadas
Solução de problemas do ajuste de escala automático de serviços
Vídeos relacionados
Conteúdo relevante
- feita há um mêslg...
- feita há 14 diaslg...
- Resposta aceitafeita há 12 diaslg...
- feita há 14 diaslg...
- AWS OFICIALAtualizada há 4 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há 21 dias