Definir o aquecimento padrão da instância para um grupo do Auto Scaling - Amazon EC2 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á.

Definir o aquecimento padrão da instância para um grupo do Auto Scaling

CloudWatch coleta e agrega dados de uso, como CPU e E/S de rede, em suas instâncias do Auto Scaling. Use essas métricas para criar políticas de escalabilidade que ajustam o número de instâncias no grupo do Auto Scaling à medida que o valor da métrica selecionada aumenta e diminui.

O aquecimento padrão da instância permite que você especifique quanto tempo depois de uma instância atingir o estado InService ela espera antes de contribuir com dados de uso para as métricas agregadas. Isso impede que a escalabilidade dinâmica seja afetada por métricas para instâncias individuais que ainda não estão lidando com o tráfego de aplicações e que podem estar passando temporariamente por um uso alto de recursos de computação.

O aquecimento padrão da instância não está configurado e não é habilitado por padrão. Para otimizar o desempenho de suas políticas de escalabilidade de destino e de escalabilidade de etapas, é altamente recomendável habilitar o aquecimento padrão da instância.

Se seu grupo do Auto Scaling estiver configurado para usar uma política de manutenção de instâncias ou se você usa uma atualização de instância para substituir instâncias, você também pode evitar que as instâncias sejam contabilizadas na porcentagem íntegra mínima antes de terminarem de inicializar quando você habilita o aquecimento padrão da instância.

Considerações sobre o desempenho de escalabilidade

A maioria dos aplicativos se beneficiará de ter um tempo de aquecimento de instância padrão que se aplica a todos os atributos, em vez de tempos de aquecimento diferentes para atributos diferentes. Por exemplo, se você não definir um aquecimento padrão da instância, o atributo de atualização da instância usará o período de carência da verificação de integridade como o tempo de aquecimento padrão. Se você tiver alguma política de rastreamento de destino e escalabilidade de etapas, ela usará o valor definido para o tempo de desaquecimento padrão como o tempo de aquecimento padrão. Se você tiver alguma política de escalabilidade preditiva, ela não terá um tempo de aquecimento padrão.

Enquanto as instâncias estiverem no período de aquecimento, suas políticas dinâmicas de escalabilidade só aumentarão a escala horizontalmente se o valor da métrica de instâncias que não estiver aquecendo for maior do que o limite alto de alarme da política (ou a utilização do target de uma política de escalabilidade com rastreamento do destino). Se a demanda aumentar, a intenção será reduzir a escala na horizontal de forma conservadora para proteger a disponibilidade de sua aplicação. Isto bloqueia a redução da escala horizontalmente para escalabilidade dinâmica até que as instâncias terminem de aquecer.

Ao aumentar a escala horizontalmente, consideramos instâncias que estão em aquecimento como parte da capacidade teórica do grupo ao decidir quantas instâncias adicionar ao grupo. Portanto, várias violações de alarme que caem no intervalo do mesmo ajuste em etapas resultam em uma única ação de escalabilidade. A intenção é expandir de forma contínua (mas não excessivamente). Para obter mais informações, consulte a seção Aquecimento da instância no tópico de escalabilidade em etapas.

Se o aquecimento padrão da instância não estiver ativado, a quantidade de tempo que uma instância espera antes de enviar métricas CloudWatch e contá-las para a capacidade atual variará de instância para instância. Nesse caso, existe a possibilidade de suas políticas de escalabilidade funcionarem de forma imprevisível em comparação com o workload real que está ocorrendo.

Por exemplo, considere um aplicativo com um padrão de on-and-off carga de trabalho recorrente. Uma política de escalabilidade preditiva é usada para tomar decisões recorrentes sobre o aumento do número de instâncias. Como não há um tempo de aquecimento padrão para as políticas de escalabilidade preditiva, as instâncias começam a contribuir imediatamente para as métricas agregadas. Se essas instâncias tiverem maior uso de recursos no startup, a adição de instâncias poderá fazer com que as métricas agregadas tenham um pico. Dependendo do tempo necessário para o uso se estabilizar, isso pode afetar qualquer política de escalabilidade dinâmica que use essas métricas. Se o limite alto de alarme de uma política de escalabilidade dinâmica for violado, o grupo aumentará de tamanho novamente. Enquanto as novas instâncias estiverem se aquecendo, as atividades para reduzir a escala horizontalmente serão bloqueadas.

Escolha o tempo para o aquecimento de instância padrão

A chave para definir o aquecimento padrão da instância é determinar quanto tempo suas instâncias precisam terminar a inicialização e para que o consumo de recursos se estabilize após atingirem o estadoInService. Ao escolher um tempo de aquecimento da instância, procure um equilíbrio ideal entre coletar dados de uso para tráfego legítimo, mas minimizando a coleta de dados associada a picos de uso temporário no startup.

Suponha que você tenha um grupo do Auto Scaling vinculado a um balanceador de carga do Elastic Load Balancing. Quando as instâncias concluem seu lançamento, elas são vinculadas ao balanceador de carga antes de entrarem no estado InService. Depois que as instâncias entram no estado InService, o consumo de recursos ainda pode passar por picos temporários e precisar de tempo para se estabilizar. Por exemplo, o consumo de recursos para um servidor de aplicações que precisa baixar ativos grandes e armazená-los em cache leva mais tempo para se estabilizar do que um servidor Web leve e sem ativos grandes para baixar. O aquecimento de instâncias fornece o tempo de atraso necessário para que o consumo de recursos se estabilize.

Importante

Se você não tiver certeza de quanto tempo precisa, pode começar com 300 segundos e diminuí-lo ou aumentá-lo gradualmente até obter o melhor desempenho de escalabilidade para seu aplicativo. Você provavelmente precisará experimentar até obter os resultados desejados. Como alternativa, se você tiver alguma política de escalabilidade que tenha seu próprio tempo de aquecimento (EstimatedInstanceWarmup), poderá usar esse valor para começar. Para ter mais informações, consulte Encontre políticas de escalabilidade com um tempo de aquecimento da instância definido anteriormente.

Também é necessário considerar o uso de hooks do ciclo de vida para casos de uso em que você tem tarefas de configuração ou scripts para executar no startup. Os hooks do ciclo de vida também podem atrasar a colocação de instâncias em serviço até que elas tenham concluído a inicialização. Eles são especialmente úteis se você tiver scripts de bootstrapping que demoram um pouco para serem concluídos. Se você adicionar um hook do ciclo de vida, será possível reduzir o valor do aquecimento de instância padrão. Para obter mais informações sobre ganchos do ciclo de vida, consulte Ganchos do ciclo de vida do Amazon EC2 Auto Scaling.

Habilitar o aquecimento de instância padrão para um grupo

É possível habilitar o aquecimento padrão da instância ao criar um grupo do Auto Scaling. Também é possível habilitar para grupos existentes.

Ao habilitar o atributo de aquecimento de instância padrão, não é mais necessário especificar valores de parâmetros de aquecimento para os seguintes recursos:

Console
Para habilitar o aquecimento de instância padrão para um novo grupo (console)

Ao criar o grupo do Auto Scaling, na página Configure advanced options (Configurar opções avançadas), em Additional settings (Configurações adicionais), selecione a opção Enable default instance warmup (Habilitar aquecimento de instância padrão). Escolha o tempo de aquecimento necessário para sua aplicação.

AWS CLI
Para habilitar o aquecimento de instância padrão para um novo grupo (AWS CLI)

Para habilitar o aquecimento de instância padrão para um grupo do Auto Scaling, adicione a opção --default-instance-warmup e especifique um valor, em segundos, de 0 a 3600. Depois de habilitado, um valor de -1 desativará essa configuração.

O create-auto-scaling-groupcomando a seguir cria um grupo de Auto Scaling com o nome my-asg e ativa o aquecimento padrão da instância com um valor de 120 segundos.

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120 ...
dica

Se esse comando gerar um erro, verifique se você atualizou o AWS CLI localmente para a versão mais recente.

Console
Para habilitar o aquecimento de instância padrão para um grupo existente (console)
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Na barra de navegação na parte superior da tela, escolha a mesma Região da AWS na qual você criou o grupo do Auto Scaling.

  3. Marque a caixa de seleção ao lado do grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página.

  4. Na guia Detalhes, escolha Configurações avançadas, Editar.

  5. Em Default instance warmup (Aquecimento de instância padrão), escolha o tempo de aquecimento necessário para sua aplicação.

  6. Escolha Atualizar.

AWS CLI
Para habilitar o aquecimento de instância padrão para um grupo existente (AWS CLI)

O exemplo a seguir usa o update-auto-scaling-groupcomando para ativar o aquecimento padrão da instância com um valor de 120 segundos para um grupo existente do Auto Scaling chamado my-asg.

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120
dica

Se esse comando gerar um erro, verifique se você atualizou o AWS CLI localmente para a versão mais recente.

Verificar o aquecimento de instância padrão para um grupo

Para verificar o aquecimento padrão da instância para um grupo do Auto Scaling (AWS CLI)

Use o seguinte comando describe-auto-scaling-groups: Substitua my-asg pelo nome do seu grupo do Auto Scaling.

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

A seguir, uma exemplo de resposta.

{ "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "DefaultInstanceWarmup": 120 } ] }

Encontre políticas de escalabilidade com um tempo de aquecimento da instância definido anteriormente

Para identificar se você tem políticas que têm seu próprio tempo de aquecimento para,EstimatedInstanceWarmup execute o seguinte comando describe-policies usando o AWS CLI. Substitua my-asg pelo nome do seu grupo do Auto Scaling.

aws autoscaling describe-policies --auto-scaling-group-name my-asg --query 'ScalingPolicies[?EstimatedInstanceWarmup!=`null`]'

A seguir, um exemplo de saída.

[ { "AutoScalingGroupName":"my-asg", "PolicyName":"cpu50-target-tracking-scaling-policy", "PolicyARN":"arn", "PolicyType":"TargetTrackingScaling", "StepAdjustments":[], "EstimatedInstanceWarmup":120, "Alarms":[{ "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" }], "TargetTrackingConfiguration":{ "PredefinedMetricSpecification":{ "PredefinedMetricType":"ASGAverageCPUUtilization" }, "TargetValue":50.0, "DisableScaleIn":false }, "Enabled":true }, ... additional policies ... ]

Limpe o aquecimento da instância definido anteriormente para uma política de escalabilidade

Depois de ativar o aquecimento padrão da instância, atualize todas as políticas de escalabilidade que ainda tenham seu próprio tempo de aquecimento para limpar o valor definido anteriormente. Caso contrário, ele substituirá o aquecimento padrão da instância.

Você pode atualizar as políticas de escalabilidade usando o console ou os AWS CLI AWS SDKs. Esta seção aborda as etapas do console. Se você usa os AWS SDKs AWS CLI ou, certifique-se de preservar a configuração de política existente, mas remova a EstimatedInstanceWarmup propriedade. Quando você atualiza uma política de escalabilidade existente, a política será substituída pelo que você especifica ao chamar programaticamente. PutScalingPolicy Os valores originais não são mantidos.

Para limpar o aquecimento da instância definido anteriormente para uma política de escalabilidade (console)
  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Marque a caixa de seleção ao lado do grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página.

  3. Na guia Escabilidade automática, em Políticas de escalabilidade dinâmica, escolha a política na qual você está interessado e, em seguida, escolha Ações, Editar.

  4. Em Aquecimento da instância, limpe o valor de aquecimento da instância para usar o valor padrão de aquecimento da instância.

  5. Escolha Atualizar.