A escala automática adiciona automaticamente VMs (aumenta a escala) ou remove VMs (diminui a escala) do seu grupo de instâncias geridas (GIG). Este documento explica como um escalador automático determina quando dimensionar os seus MIGs.
Como os escaladores automáticos calculam o tamanho recomendado e afetam o tamanho do destino
Quando configura um escalador automático para um GIG, o escalador automático monitoriza constantemente o grupo e define o tamanho recomendado do grupo para o número de instâncias de máquinas virtuais (VMs) necessárias para atender ao pico de carga durante o período de estabilização.
O tamanho recomendado é limitado pelo número mínimo e máximo de instâncias que define na política de escalabilidade automática.
Se a sua política de escalamento automático incluir controlos de redução de escala, o tamanho recomendado é ainda mais restrito pelos controlos de redução de escala.
Se ativar o dimensionamento automático preditivo, o dimensionador automático usa padrões de utilização da CPU históricos para prever a carga futura e define o tamanho recomendado do grupo com base na respetiva previsão.
A resposta do GIG ao tamanho recomendado do criador de escala automática depende da forma como
configura o mode
do criador de escala automática:
ON
. O GIG define o tamanho alvo para o tamanho recomendado e, em seguida, o Compute Engine dimensiona automaticamente o GIG para atingir o tamanho alvo.ONLY_SCALE_OUT
. Só é possível aumentar o tamanho alvo do MIG em resposta a um aumento do tamanho recomendado.OFF
. O tamanho alvo não é afetado pelo tamanho recomendado. No entanto, o tamanho recomendado continua a ser calculado.
Se a configuração do dimensionamento automático for eliminada, não é calculado nenhum tamanho recomendado.
Lacunas entre as métricas de utilização de destino e reais
Quando usa uma política de escalamento automático com sinais baseados em métricas, pode reparar que, para grupos de instâncias mais pequenos, a utilização real do grupo de instâncias e a utilização alvo podem parecer muito distantes. Isto deve-se ao facto de um escalador automático agir sempre de forma conservadora, arredondando para cima ou para baixo quando interpreta os dados de utilização e determina quantas instâncias adicionar ou remover. Isto impede que o escalador automático adicione um número insuficiente de recursos ou remova demasiados recursos.
Por exemplo, se definir um objetivo de utilização de 0,7 e a sua aplicação exceder o objetivo de utilização, o escalador automático pode determinar que a adição de 1,5 instâncias de máquinas virtuais (MV) diminuiria a utilização para perto de 0,7. Como não pode adicionar 1,5 instâncias de VM, o escalador automático arredonda para cima e adiciona duas instâncias. Isto pode diminuir a utilização média da CPU para um valor inferior a 0,7, mas garante que a sua app tem recursos suficientes para a suportar.
Da mesma forma, se o escalamento automático determinar que a remoção de 1,5 instâncias de VM aumentaria a utilização demasiado perto de 0,7, remove apenas uma instância.
Para grupos maiores com mais instâncias de VM, a utilização é dividida por um número maior de instâncias e a adição ou remoção de instâncias de VM causa uma diferença menor entre a utilização real e a utilização alvo.
Se usar o dimensionamento automático baseado em horários com outro sinal de dimensionamento automático, um horário ativo pode exigir mais VMs do que as suas necessidades de utilização. Nestas situações, a utilização real é inferior à utilização alvo porque o horário de ajuste de escala automático determina o tamanho recomendado do grupo de instâncias.
Atrasos no aumento da escala
Quando configura o dimensionamento automático, especifica um período de inicialização que reflete o tempo necessário para as VMs serem inicializadas. O dimensionamento automático só recomenda o aumento da escala se a utilização média das instâncias que não estão a ser inicializadas for superior à utilização alvo.
Se definir um valor do período de inicialização significativamente superior ao tempo necessário para inicializar uma instância, o escalador automático pode ignorar dados de utilização legítimos e subestimar o tamanho necessário do grupo.
Atrasos no aumento da escala
Para fins de redução, o dimensionamento automático calcula o tamanho alvo recomendado do grupo com base no pico de carga nos últimos 10 minutos ou no período de inicialização que definiu, consoante o que for mais longo. Esta duração é designada período de estabilização.
A observação da utilização durante o período de estabilização ajuda o dimensionamento automático a:
- Certifique-se de que as informações de utilização recolhidas do grupo de instâncias são estáveis.
- Impedir o comportamento em que um escalador automático adiciona ou remove continuamente instâncias a uma taxa excessiva.
- Remova as instâncias em segurança determinando que o tamanho do grupo mais pequeno é suficiente para suportar o pico de carga do período de estabilização.
- Se a sua aplicação demorar mais de 10 minutos a inicializar numa nova VM, o grupo usa o período de inicialização como o período de estabilização. Isto garante que a decisão do redimensionador automático de eliminar a VM tem em conta o tempo necessário para recuperar a capacidade de publicação.
O período de estabilização pode parecer um atraso no aumento da escala, mas é, na verdade, uma funcionalidade integrada do ajuste de escala automático. O período de estabilização também garante que, se for adicionada uma nova instância ao grupo de instâncias gerido, a instância conclui o período de inicialização ou é executada durante, pelo menos, 10 minutos antes de ser elegível para eliminação.
Os períodos de inicialização para novas instâncias são ignorados quando se decide se deve aumentar a escala num grupo.
Drenagem da ligação a causar atrasos
Se o grupo fizer parte de um serviço de back-end que tenha ativado a drenagem de ligações, pode demorar até mais 60 segundos após o fim da duração da drenagem de ligações antes de a instância de VM ser removida ou eliminada.
Controlos de redução
Quando configura os controlos de redução da capacidade do escalamento automático, controla a velocidade da redução da capacidade. O ajuste automático nunca aumenta a escala mais rapidamente do que a taxa configurada:
- Quando a carga diminui, o dimensionamento automático mantém o tamanho do grupo ao nível necessário para atender à carga máxima observada no período de estabilização. Isto funciona da mesma forma com e sem controlos de redução.
- Um escalador automático sem controlos de redução mantém apenas instâncias suficientes para processar a carga observada recentemente. Após o período de estabilização, o escalador automático remove todas as instâncias desnecessárias num único passo. Com uma diminuição súbita da carga, isto pode levar a uma redução drástica do tamanho do grupo de instâncias.
- Um escalador automático com controlos de redução limita o número de instâncias de VM que podem ser removidas num período configurado (aqui, 10 VMs em 20 minutos). Isto diminui a taxa de redução de instâncias.
- Com um novo pico de carga, o escalamento automático adiciona novas instâncias para processar a carga. No entanto, devido a um longo tempo de inicialização, as novas VMs não estão prontas para publicar a carga. Com os controlos de redução, a capacidade anterior foi mantida, o que permitiu que as VMs existentes publicassem o pico.
Controla a taxa de redução configurando a redução máxima permitida do dimensionador automático num intervalo de tempo anterior, especificamente:
- Redução máxima permitida (
maxScaledInReplicas
: número ou % de instâncias de VM). O número de instâncias que a sua carga de trabalho pode perder (a partir do tamanho máximo do grupo) no período de tempo de acompanhamento especificado. Use este parâmetro para restringir a quantidade de escalabilidade vertical do seu grupo, de modo que ainda possa publicar um pico de carga provável até que mais instâncias comecem a publicar. Quanto menor for a redução máxima permitida, mais lenta é a taxa de aumento da escala. - Intervalo de tempo de seguimento (
timeWindowSec
: segundos). Tempo durante o qual é provável que um aumento repentino da carga siga uma diminuição temporária e durante o qual não quer que o tamanho do grupo seja dimensionado além da redução máxima permitida. Use este parâmetro para definir o período durante o qual o escalador automático vai procurar o tamanho máximo suficiente para publicar a carga histórica. O dimensionamento automático não redimensiona abaixo da redução máxima permitida subtraída do tamanho máximo observado no período de análise anterior. Com um período de análise de tendências mais longo, o dimensionamento automático considera o pico de carga histórico, o que torna o dimensionamento mais conservador e estável.
Quando define controlos de redução, o dimensionamento automático restringe as operações de redução à redução máxima permitida a partir do tamanho máximo observado no intervalo de tempo anterior. O escalamento automático usa os seguintes passos:
- Monitoriza continuamente o tamanho máximo histórico observado no intervalo de tempo anterior.
- Usa a redução máxima permitida para calcular o tamanho de redução restrito (tamanho máximo:
maxScaledInReplicas
) - Define o tamanho recomendado do grupo como o tamanho de redução limitado. Por exemplo, se um escalador automático redimensionar um grupo de instâncias para 20 VMs, mas as restrições de redução só permitirem uma redução para 40 VMs, o tamanho recomendado é definido como 40 VMs.
Com os controlos de redução, o escalador automático monitoriza continuamente o tamanho máximo de um grupo de instâncias no período de tempo de acompanhamento configurado para identificar o tamanho suficiente para atender à carga do histórico. O ajuste automático não é reduzido além da redução máxima permitida medida a partir do tamanho máximo observado:
Por exemplo, no diagrama acima, os controlos de redução estão configurados para uma redução máxima permitida de 20 VMs num intervalo de tempo de 30 minutos:
- Quando a carga diminui, o escalador automático remove 20 VMs, que é a redução máxima permitida configurada nos controlos de redução de escala.
- À medida que a carga aumenta e diminui, o dimensionamento automático monitoriza constantemente a janela de tempo dos últimos 30 minutos para determinar o tamanho máximo suficiente para atender à carga histórica. Este tamanho máximo é usado como base para os controlos de redução de escala, de modo a limitar a taxa de redução de escala. Se, nos últimos 30 minutos, o tamanho máximo foi de 70 VMs e a redução máxima permitida estiver definida como 20 VMs, o escalador automático pode reduzir a escala para 50 VMs. Se o tamanho atual for de 65 VMs, o escalador automático só pode remover 15 VMs.
- À medida que a carga diminui, o redimensionador automático continua a remover instâncias de VMs, mas limita a taxa a, no máximo, 20 VMs do tamanho máximo do grupo de instâncias medido nos últimos 30 minutos.
A redução máxima permitida no tamanho do grupo pode ocorrer de uma só vez, pelo que deve configurar a redução máxima permitida para que a sua aplicação possa perder esse número de instâncias de uma só vez. Use o parâmetro de redução máxima permitida para indicar a redução na capacidade de publicação que a sua aplicação pode tolerar.
Ao limitar o número de instâncias de VM que o dimensionamento automático pode remover e ao aumentar o período de tempo de rastreio observado, as aplicações com picos de carga e longos tempos de inicialização devem ter uma disponibilidade melhorada. Em particular, a dimensão do grupo de instâncias não diminui abruptamente em resposta a uma diminuição significativa da carga e, em vez disso, diminui gradualmente ao longo do tempo. Se ocorrerem picos de carga pouco depois de um aumento, o número restante de VMs deve conseguir absorver o pico dentro da sua tolerância. Além disso, têm de ser iniciadas menos VMs para publicar o pico de forma suficiente.
Pode configurar controlos de redução para o dimensionamento automático de MIGs zonais e regionais. A configuração é a mesma para ambos os casos. Os controlos de redução funcionam para grupos de qualquer tamanho.
Controlos de redução em comparação com a estabilização do redimensionador automático
A configuração dos controlos de redução não significa desativar o mecanismo de estabilização incorporado no escalador automático. O dimensionamento automático mantém sempre o tamanho do grupo de instâncias a um nível necessário para atender ao pico de carga, observado durante o período de estabilização. Os controlos de redução dão-lhe um mecanismo adicional para controlar a taxa à qual um grupo de instâncias é redimensionado.
Redimensionador automático incorporado: Período de estabilização |
Controlos de aumento de escala: Período de tempo de seguimento |
|
---|---|---|
Configurável? | Não, não configurável | Sim, configurável |
O que é monitorizado? | Monitoriza a carga máxima nos 10 minutos anteriores ou no período de inicialização, consoante o que for mais longo. | Monitoriza o tamanho máximo do grupo de instâncias no período anterior definido pela janela de tempo de seguimento |
Como é que isto ajuda? | Garante que a dimensão do grupo de instâncias permanece suficiente para publicar a carga máxima observada durante os últimos 10 minutos ou o período de inicialização, consoante o que for mais longo. | Garante que o tamanho do grupo de instâncias não é reduzido por mais instâncias de VM do que a sua carga de trabalho pode tolerar ao processar picos de carga durante um período especificado. |
Reduza os controlos com o modo de ajuste automático da escala
Existem dois cenários semelhantes, mas ligeiramente diferentes, quando o MIG não é dimensionado automaticamente e quer ativar o dimensionamento automático. Estas dependem de estar a configurar o ajuste automático pela primeira vez ou de o ajuste automático estar configurado, mas temporariamente restrito ou desativado.
Configurar o escalador automático pela primeira vez
Quando tem um GIG sem escala automática e configura a escala automática de raiz, o escalador automático usa o tamanho atual do GIG como ponto de partida. Antes da redução, o dimensionamento automático usa o período de estabilização e, em seguida, usa os controlos de redução para restringir a taxa de redução:
Alterar o modo do redimensionador automático
Com o modo de dimensionamento automático, pode desativar ou restringir temporariamente as atividades de dimensionamento automático. A configuração do escalador automático persiste e o escalador automático continua a fazer cálculos em segundo plano enquanto está desativado ou restrito. O escalador automático tem em conta os controlos de redução de escala nos respetivos cálculos em segundo plano quando está no modo desativado ou restrito. Todas as atividades de dimensionamento automático são retomadas com base nos cálculos mais recentes quando ativa novamente o dimensionamento automático ou quando levanta a restrição:
- O escalador automático ativado comporta-se como habitualmente (com controlos de redução de escala neste caso).
- Quando desativa o escalador automático, este continua a calcular o tamanho recomendado do grupo de instâncias com base na carga. Os cálculos do escalamento automático continuam a considerar os controlos de redução de escala. No entanto, o dimensionamento automático não aplica cálculos de tamanho quando o dimensionamento automático está DESATIVADO. O tamanho do grupo de instâncias permanece constante até o dimensionamento automático estar ATIVADO novamente.
- Quando volta a ativar o dimensionamento automático, este aplica imediatamente o tamanho calculado anteriormente. Isto permite um dimensionamento mais rápido para o tamanho correto. A reativação do escalador automático pode causar uma redução abrupta da escala (aqui de 80 para 40 instâncias de VM). Isto é seguro porque os cálculos em segundo plano já consideram os controlos de zoom in.
Escala automática preditiva
Para saber mais sobre o dimensionamento automático preditivo, incluindo como funciona, consulte o artigo Dimensionamento com base em previsões.
A preparar a paragem de instâncias
Quando o dimensionamento automático é reduzido, determina o número de instâncias de VM a eliminar. O escalador automático dá prioridade às instâncias de VM a eliminar com base em vários fatores, incluindo o seguinte:
- VMs que não estão em execução por qualquer motivo.
- VMs que estão a sofrer ou agendadas para alterações disruptivas, por exemplo, atualização, reinício ou substituição.
- VMs que ainda não foram atualizadas para a versão pretendida do modelo de instância.
- As VMs que têm o sinal de ajuste automático mais baixo. Por exemplo, se configurar o GIG para criar uma escala com base na utilização da CPU e o grupo precisar de reduzir a escala, o criador de escala automática tenta remover as VMs com a utilização da CPU mais baixa.
Antes de parar uma instância, pode querer certificar-se de que estas instâncias executam determinadas tarefas, como fechar as ligações existentes, encerrar corretamente as apps ou os servidores de apps, carregar registos, etc. Pode dar instruções à sua instância para executar estas tarefas através de um script de encerramento. É executado um script de encerramento, com base no melhor esforço, no breve período entre o momento em que o pedido de paragem é feito e o momento em que a instância é efetivamente parada. Durante este período, o Compute Engine tenta executar o script de encerramento para realizar todas as tarefas que fornecer no script.
Isto é particularmente útil se estiver a usar o equilíbrio de carga com o seu grupo de instâncias gerido. Se a sua instância ficar em mau estado, o balanceador de carga pode demorar algum tempo a reconhecer que a instância está em mau estado, o que faz com que o balanceador de carga continue a enviar novos pedidos para a instância. Com um script de encerramento, a instância pode comunicar que não está em bom estado enquanto está a ser encerrada para que o equilibrador de carga possa parar de enviar tráfego para a instância. Para mais informações sobre as verificações de funcionamento do balanceamento de carga, consulte a vista geral das verificações de funcionamento.
Para mais informações sobre os scripts de encerramento, consulte o artigo Scripts de encerramento.
Para mais informações sobre o encerramento de instâncias, leia a documentação sobre como parar ou eliminar uma instância.
Monitorizar gráficos e registos de dimensionamento automático
O Compute Engine oferece vários gráficos e registos que lhe permitem monitorizar o comportamento do seu grupo de instâncias gerido em qualquer altura.
Pode aceder aos gráficos e registos na Google Cloud consola.
- Na Google Cloud consola, aceda à página Grupos de instâncias.
- Clique no nome do grupo de instâncias gerido que quer ver.
- Na página do grupo de instâncias gerido, selecione o separador Monitorização.
Os gráficos de monitorização apresentam a evolução das seguintes métricas:
- Tamanho do grupo
- Utilização do redimensionador automático
- Utilização da CPU
- E/S de disco (bytes)
- E/S do disco (operações)
- Bytes de rede
- Pacotes de rede
Uma sugestão junto ao título de cada gráfico fornece detalhes contextuais adicionais sobre a métrica apresentada.
Um painel Registos está disponível na parte inferior da página, onde pode encontrar uma lista de registos de eventos para o seu grupo de instâncias gerido. Para ver os registos, clique na seta de expansão.
Todos os gráficos e registos estão associados a um único período que pode personalizar com o seletor de intervalo de tempo. Se clicar e arrastar em qualquer gráfico, pode aumentar o zoom num evento específico e analisar os gráficos e os registos no intervalo de tempo selecionado.
Monitorizar a escala automática preditiva
O Compute Engine fornece um gráfico para monitorizar as previsões do escalador automático. Para ver este gráfico, clique no título Tamanho do grupo no primeiro gráfico e selecione Ajuste de escala automático preditivo.
Se o redimensionamento automático estiver ativado, pode ver como as previsões do redimensionador automático determinam o tamanho do seu grupo de instâncias. Se o redimensionamento automático não estiver ativado, pode continuar a ver as previsões do redimensionador automático e usá-las para tomar decisões relativamente ao tamanho do grupo.
Use as seguintes informações para compreender este gráfico.
- A linha azul indica o número de instâncias no grupo de instâncias gerido.
- A linha verde mostra o número de instâncias previstas pelo escalamento automático.
- Se a linha verde estiver abaixo da linha azul, significa que existe uma grande quantidade de capacidade disponível e que as suas instâncias de VM estão provavelmente subutilizadas.
- Se a linha verde estiver acima da linha azul, significa que existe pouca ou nenhuma capacidade restante e deve adicionar mais instâncias ao grupo de instâncias.
- As linhas vermelhas horizontais tracejadas indicam o número mínimo e máximo de instâncias permitidas no seu grupo de instâncias.
Ver mensagens de estado
Quando o escalador automático tem um problema de escalamento, devolve uma mensagem de aviso ou de erro. Pode rever estas mensagens de estado de duas formas.
Veja mensagens de estado na página Grupos de instâncias
Pode ver as mensagens de estado diretamente na página Grupos de instâncias no Google Cloud console.
- Na Google Cloud consola, aceda à página Grupos de instâncias.
Procure grupos de instâncias que tenham o ícone de aviso antes dos respetivos nomes.
Por exemplo:
Mantenha o ponteiro sobre um ícone de estado para ver detalhes da mensagem de estado.
Veja mensagens de estado na página Vista geral do grupo de instâncias
Pode aceder diretamente à página de vista geral de um grupo de instâncias específico para ver mensagens de estado relevantes.
- Na Google Cloud consola, aceda à página Grupos de instâncias.
- Clique no grupo de instâncias para o qual quer ver mensagens de estado.
- Na página do grupo de instâncias, veja a mensagem de estado abaixo do nome do grupo de instâncias.
Mensagens de estado devolvidas frequentemente
Quando o escalador automático tem um problema de escalamento, devolve uma mensagem de aviso ou de erro. Seguem-se algumas mensagens devolvidas comuns e o que significam.
All instances in the instance group are unhealthy (not in RUNNING state). If this is an error, check the instances.
- Todas as instâncias no grupo de instâncias têm um estado diferente de
RUNNING
. Se isto for intencional, pode ignorar esta mensagem. Se isto não for intencional, resolva os problemas do grupo de instâncias. The number of instances has reached the maxNumReplicas. The autoscaler cannot add more instances.
- Quando criou o escalador automático, indicou o número máximo de instâncias que o grupo de instâncias pode ter. O redimensionador automático está atualmente a tentar
expandir o grupo de instâncias para satisfazer a procura, mas atingiu o limite de
maxNumReplicas
. Para obter informações sobre como atualizarmaxNumReplicas
para um número superior, consulte o artigo Atualizar um redimensionador automático. The monitoring metric that was specified does not exist or does not have the required labels. Check the metric.
Está a usar o dimensionamento automático com uma métrica do Cloud Monitoring, mas a métrica que indicou não existe, não tem as etiquetas necessárias ou não está acessível ao agente de serviço do Compute Engine.
- Consoante a métrica seja uma métrica padrão ou personalizada, são necessárias etiquetas diferentes. Consulte a documentação sobre a escalabilidade com base numa métrica de monitorização para mais informações.
- Verifique se o agente de serviço do Compute Engine tem a
compute.serviceAgent
função do IAM. Para a adicionar, consulte os pré-requisitos do AutoScaler.
- Verifique se o agente de serviço do Compute Engine tem a
Quota for some resources is exceeded. Increase the quota or delete resources to free up more quota.
Pode obter informações sobre a sua quota disponível na página Quota na Google Cloud consola.
Autoscaling does not work with an HTTP/S load balancer configured for maxRate.
O grupo de instâncias está a ser equilibrado de carga através da configuração
maxRate
, mas o escalador automático não suporta este modo. Altere a configuração ou desative o ajuste de escala automático. Para saber mais sobre omaxRate
, leia as restrições e as diretrizes na documentação de equilíbrio de carga.The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any queries from the load balancer. Check that the load balancing configuration is working.
O grupo de instâncias está a ser equilibrado por carga, mas o grupo não tem consultas recebidas. O serviço pode estar a passar por um período de inatividade, caso em que não tem de se preocupar. No entanto, esta mensagem também pode ser causada por uma configuração incorreta. Por exemplo, um grupo de instâncias com escalabilidade automática pode ser o destino de mais do que um equilibrador de carga, o que não é suportado. Para ver uma lista completa das diretrizes, consulte Restrições e diretrizes na documentação de equilíbrio de carga.