Tutorial: configurar o ajuste de escala automático para processar uma workload pesada - Application Auto Scaling

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: configurar o ajuste de escala automático para processar uma workload pesada

Neste tutorial, você verá como aumentar a escala horizontalmente e com base em janelas de tempo quando a aplicação tiver uma workload mais pesada do que o normal. Isso é útil quando você tem uma aplicação que pode de repente ter um grande número de visitantes em um horário regular ou em uma base sazonal.

Você pode usar uma política de dimensionamento com monitoramento do objetivo com a escalabilidade agendada para lidar com a carga extra. A escalabilidade agendada inicia automaticamente as alterações nas suas MinCapacity e MaxCapacity em seu nome com base em uma programação especificada por você. Quando uma política de dimensionamento com monitoramento do objetivo está ativa no recurso, ela pode ser escalada dinamicamente com base na utilização atual de recursos dentro do novo intervalo de capacidade mínima e máxima.

Após concluir este tutorial, você saberá como:

  • Usar a escalabilidade programada para adicionar capacidade extra para atender a uma carga pesada antes que ela chegue e remover a capacidade extra quando ela não for mais necessária.

  • Usar uma política de dimensionamento com monitoramento do objetivo para escalar a aplicação com base na utilização atual de recursos.

Pré-requisitos

Este tutorial pressupõe que você já tenha feito o seguinte:

  • Criou um Conta da AWS.

  • Instalou e configurou AWS CLI o.

  • Concedeu as permissões necessárias para registrar e cancelar o registro de recursos como destinos escaláveis no Application Auto Scaling. Além disso, concedeu as permissões necessárias para criar políticas de escalabilidade e ações programadas. Para obter mais informações, consulte Gerenciamento de Identidade e Acesso para o Application Auto Scaling.

  • Criou um recurso compatível em um ambiente que não é de produção disponível para uso neste tutorial. Se não tiver, crie uma conta agora. Para obter mais informações sobre os serviços e os recursos da AWS que você pode usar com o Application Auto Scaling, consulte a seção Serviços da AWS que você pode usar com o Application Auto Scaling.

nota

Ao concluir este tutorial, há duas etapas nas quais você define os valores de capacidade mínimo e máximo do seu recurso como 0 para redefinir a capacidade atual como 0. Dependendo do recurso que escolheu usar com o Application Auto Scaling, talvez você não consiga redefinir a capacidade atual para 0 durante essas etapas. Para ajudá-lo a resolver o problema, uma mensagem na saída indicará que a capacidade mínima não pode ser menor que o valor especificado e fornecerá o valor mínimo de capacidade que o AWS recurso pode aceitar.

Etapa 1: inscrever o destino escalável

Comece inscrevendo o recurso como um destino escalável com o Application Auto Scaling. Um destino escalável é um recurso cuja escala pode ser aumentada ou reduzida horizontalmente pelo Application Auto Scaling.

Para inscrever um destino escalável com o Application Auto Scaling
  • Use o register-scalable-targetcomando a seguir para registrar um novo alvo escalável. Defina os valores --min-capacity e --max-capacity como 0 para redefinir a capacidade atual como 0.

    Substitua o texto de amostra por --service-namespace com o namespace do serviço da AWS que você está usando com o Application Auto Scaling, --scalable-dimension com a dimensão escalável associada ao recurso que você está registrando e --resource-id com um identificador para o recurso. Esses valores variam com base em qual recurso é usado e como o ID do recurso é construído. Veja os tópicos na seção Serviços da AWS que você pode usar com o Application Auto Scaling para obter mais informações. Esses tópicos incluem exemplos de comandos que mostram como registrar destinos escaláveis com o Application Auto Scaling.

    Linux, macOS ou Unix

    aws application-autoscaling register-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --min-capacity 0 --max-capacity 0

    Windows

    aws application-autoscaling register-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier --min-capacity 0 --max-capacity 0

    Se obtiver êxito, esse comando retornará o ARN do destino escalável.

    { "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

Etapa 2: configurar ações programadas de acordo com as suas necessidades

Você pode usar o put-scheduled-actioncomando para criar ações agendadas que são configuradas para atender às suas necessidades comerciais. Neste tutorial, focaremos em uma configuração que para de consumir recursos fora do horário de trabalho, reduzindo a capacidade para 0.

Criar uma ação programada que seja ampliada pela manhã
  1. Para escalar a meta escalável, use o put-scheduled-actioncomando a seguir. Incluia o parâmetro --schedule com uma programação recorrente, em UTC, usando uma expressão cron.

    Na programação especificada (todos os dias às 9:00 UTC), o Application Auto Scaling atualiza os valores MinCapacity e MaxCapacity para a faixa desejada de uma a cinco unidades de capacidade.

    Linux, macOS ou Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-first-scheduled-action \ --schedule "cron(0 9 * * ? *)" \ --scalable-target-action MinCapacity=1,MaxCapacity=5

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-first-scheduled-action --schedule "cron(0 9 * * ? *)" --scalable-target-action MinCapacity=1,MaxCapacity=5

    Esse comando não retornará nenhuma saída se for bem-sucedido.

  2. Para confirmar que sua ação agendada existe, use o describe-scheduled-actionscomando a seguir.

    Linux, macOS ou Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

    O seguinte é um exemplo de saída.

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... } ]
Criar uma ação programada que seja reduzida à noite
  1. Repita o procedimento anterior para criar outra ação programada que o Application Auto Scaling use para reduzir a escala ao final do dia.

    Na programação especificada (todos os dias às 20h UTC), o Application Auto Scaling atualiza o MaxCapacity e MinCapacity do alvo para 0, conforme as instruções do comando a seguir. put-scheduled-action

    Linux, macOS ou Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action \ --schedule "cron(0 20 * * ? *)" \ --scalable-target-action MinCapacity=0,MaxCapacity=0

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action --schedule "cron(0 20 * * ? *)" --scalable-target-action MinCapacity=0,MaxCapacity=0
  2. Para confirmar que sua ação agendada existe, use o describe-scheduled-actionscomando a seguir.

    Linux, macOS ou Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

    O seguinte é um exemplo de saída.

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... }, { "ScheduledActionName": "my-second-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 20 * * ? *)", "ScalableTargetAction": { "MinCapacity": 0, "MaxCapacity": 0 }, ... } ]

Etapa 3: adicionar uma política de dimensionamento com monitoramento do objetivo

Agora que você tem a programação básica em vigor, adicione uma política de dimensionamento com monitoramento do objetivo para escalar com base na utilização atual de recursos.

Com o monitoramento do objetivo, o Application Auto Scaling compara o valor do objetivo na política com o valor atual da métrica especificada. Quando eles são desiguais por um período de tempo, o Application Auto Scaling adiciona ou remove capacidade para manter uma performance estável. À medida que a carga na aplicação e o valor métrico aumentam, o Application Auto Scaling adiciona capacidade o mais rápido possível sem ultrapassar MaxCapacity. Quando o Application Auto Scaling remove a capacidade porque a carga é mínima, ele faz isso sem ultrapassar MinCapacity. Ao ajustar a capacidade com base no uso, você paga apenas pelas necessidades da aplicação.

Se a métrica tiver dados insuficientes porque a aplicação não tem nenhuma carga, o Application Auto Scaling não adicionará ou removerá capacidade. Em outras palavras, o Application Auto Scaling prioriza a disponibilidade em situações em que não haja informação suficiente disponível.

Você pode adicionar várias políticas de escalabilidade, mas certifique-se de não adicionar políticas de escalabilidade em etapa conflitantes, o que pode causar comportamento indesejável. Por exemplo, se a política de escalabilidade de etapas iniciar uma atividade de redução antes que a política de rastreamento de destino esteja pronta para ser reduzida, a atividade de redução não será bloqueada. Após a conclusão da atividade de redução, a política de monitoramento do objetivo pode instruir o Application Auto Scaling a aumentar a escala novamente.

Para criar uma política de escalabilidade com monitoramento do objetivo
  1. Use o comando da put-scaling-policy a seguir para criar a política.

    As métricas usadas com mais frequência para o monitoramento de destinos são predefinidas e você pode usá-las sem fornecer a especificação de métrica completa do CloudWatch. Para mais informações sobre as métricas predefinidas disponíveis, consulte Políticas de dimensionamento com monitoramento do objetivo para o Application Auto Scaling.

    Antes de executar esse comando, certifique-se de que a métrica predefinida espere o valor do objetivo. Por exemplo, para aumentar a escala horizontalmente quando a CPU atinge 50% de utilização, especifique um valor alvo de 50,0. Ou, para aumentar a escala horizontalmente da simultaneidade provisionada do Lambda quando o uso atingir 70% de utilização, especifique um valor do objetivo de 0,7. Para obter informações sobre valores de destino para um recurso específico, consulte a documentação fornecida pelo serviço sobre como configurar o monitoramento do objetivo. Para obter mais informações, consulte Serviços da AWS que você pode usar com o Application Auto Scaling.

    Linux, macOS ou Unix

    aws application-autoscaling put-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }}'

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration "{ \"TargetValue\": 50.0, \"PredefinedMetricSpecification\": { \"PredefinedMetricType\": \"predefinedmetric\" }}"

    Se for bem-sucedido, esse comando retornará os nomes ARNs e dos dois CloudWatch alarmes que foram criados em seu nome.

  2. Para confirmar que sua ação agendada existe, use o describe-scaling-policiescomando a seguir.

    Linux, macOS ou Unix

    aws application-autoscaling describe-scaling-policies --service-namespace namespace \ --query 'ScalingPolicies[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scaling-policies --service-namespace namespace --query "ScalingPolicies[?ResourceId==`identifier`]"

    O seguinte é um exemplo de saída.

    [ { "PolicyARN": "arn", "TargetTrackingScalingPolicyConfiguration": { "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }, "TargetValue": 50.0 }, "PolicyName": "my-scaling-policy", "PolicyType": "TargetTrackingScaling", "Alarms": [], ... } ]

Etapa 4: próximas etapas

Quando ocorre uma ação de escalabilidade, você verá um registro dela na saída das ações de escalabilidade para o destino escalável, por exemplo:

Successfully set desired count to 1. Change successfully fulfilled by ecs.

Para monitorar suas atividades de escalabilidade com o Application Auto Scaling, você pode usar o comando a describe-scaling-activitiesseguir.

Linux, macOS ou Unix

aws application-autoscaling describe-scaling-activities --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling describe-scaling-activities --service-namespace namespace --scalable-dimension dimension --resource-id identifier

Etapa 5: limpar

Para evitar que sua conta acumule cobranças de recursos criados durante a escalabilidade ativa, você pode limpar a configuração de escalabilidade associada da seguinte maneira.

A exclusão da configuração de escalabilidade não exclui o recurso subjacente AWS . Também não os devolve à sua capacidade original. Você pode usar o console do serviço em que criou o recurso para excluí-lo ou ajustar sua capacidade.

Como excluir as ações programadas

O seguinte comando delete-scheduled-action exclui uma ação programada especificada. Você pode ignorar esta etapa se deseja manter as ações programadas criadas.

Linux, macOS ou Unix

aws application-autoscaling delete-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action

Windows

aws application-autoscaling delete-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action
Excluir a política de escalabilidade

O delete-scaling-policycomando a seguir exclui uma política de escalabilidade de rastreamento de destino especificada. Você pode ignorar esta etapa se deseja manter as políticas de escalabilidade criadas.

Linux, macOS ou Unix

aws application-autoscaling delete-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy

Windows

aws application-autoscaling delete-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy
Como cancelar o registro do destino dimensionável:

Use o seguinte comando deregister-scalable-target para cancelar o registro do destino dimensionável. Se tiver qualquer política de dimensionamento que você criou ou qualquer ação programada que ainda não foi excluída, elas serão excluídas por esse comando. Você poderá ignorar esta etapa se desejar manter o destino dimensionável registrado para uso futuro.

Linux, macOS ou Unix

aws application-autoscaling deregister-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling deregister-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier