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.
Conteúdo
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-target
comando 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-dimensiondimension
\ --resource-ididentifier
\ --min-capacity 0 --max-capacity 0Windows
aws application-autoscaling register-scalable-target --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--min-capacity 0 --max-capacity 0Se 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-action
Criar uma ação programada que seja ampliada pela manhã
-
Para escalar a meta escalável, use o put-scheduled-action
comando 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
eMaxCapacity
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-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-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-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-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.
-
Para confirmar que sua ação agendada existe, use o describe-scheduled-actions
comando 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
-
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
eMinCapacity
do alvo para 0, conforme as instruções do comando a seguir. put-scheduled-actionLinux, macOS ou Unix
aws application-autoscaling put-scheduled-action \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-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-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-second-scheduled-action
--schedule "cron(0 20 * * ? *
)" --scalable-target-action MinCapacity=0
,MaxCapacity=0
-
Para confirmar que sua ação agendada existe, use o describe-scheduled-actions
comando 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
-
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-dimensiondimension
\ --resource-ididentifier
\ --policy-namemy-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-dimensiondimension
--resource-ididentifier
--policy-namemy-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.
-
Para confirmar que sua ação agendada existe, use o describe-scaling-policies
comando 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-activities
Linux, macOS ou Unix
aws application-autoscaling describe-scaling-activities --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
Windows
aws application-autoscaling describe-scaling-activities --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
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
Linux, macOS ou Unix
aws application-autoscaling delete-scheduled-action \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-second-scheduled-action
Windows
aws application-autoscaling delete-scheduled-action --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-second-scheduled-action
Excluir a política de escalabilidade
O delete-scaling-policy
Linux, macOS ou Unix
aws application-autoscaling delete-scaling-policy \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --policy-namemy-scaling-policy
Windows
aws application-autoscaling delete-scaling-policy --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--policy-namemy-scaling-policy
Como cancelar o registro do destino dimensionável:
Use o seguinte comando deregister-scalable-target
Linux, macOS ou Unix
aws application-autoscaling deregister-scalable-target \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
Windows
aws application-autoscaling deregister-scalable-target --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier