Como compreender decisões do autoescalador

O escalonamento automático é executado em um grupo de instâncias gerenciadas em seu nome. Leia este documento para entender algumas decisões que o autoescalador toma ao escalonar grupos de instâncias gerenciadas.

Lacunas entre a utilização de destino e real

Durante o processo de escalonamento automático, observe que, para grupos de instâncias menores, a utilização real e de destino do grupo parece muito diferente. Isso ocorre porque o autoescalador sempre age de maneira conservadora, arredondando para mais ou para menos ao interpretar os dados de utilização e determinar quantas instâncias serão adicionadas ou removidas. Isso impede que o autoescalador adicione um número insuficiente de recursos ou remova recursos demais.

Por exemplo, se você definir um destino de utilização de 0,7 e o aplicativo exceder o destino de utilização, o autoescalador poderá determinar que a adição de 1,5 máquina virtual reduzirá a utilização para perto de 0,7. Como não é possível adicionar 1,5 máquina virtual, o autoescalador arredonda para mais e adiciona duas máquinas virtuais. Isso pode reduzir a utilização média da CPU a um valor abaixo de 0,7, mas garante que o aplicativo tenha recursos suficientes para permiti-la.

Igualmente, se o autoescalador determinar que a remoção de 1,5 máquina virtual aumentará a utilização para perto de 0,7, ele removerá apenas uma máquina virtual.

Para grupos maiores com mais máquinas virtuais, a utilização é dividida por um número maior de instâncias, e a adição ou remoção de máquinas virtuais provoca uma lacuna entre a utilização real e de destino.

Atrasos na redução vertical

Para redução vertical, o autoescalador considera os dez últimos minutos de uso da instância de máquina virtual para decidir como escalonar. O uso de pelo menos os dez últimos minutos de utilização ajuda a:

  • garantir que as informações coletadas do grupo de instâncias sejam estáveis;
  • evitar que o autoescalador adicione ou remova instâncias continuamente a uma taxa excessiva;
  • permitir que o autoescalador determine se é seguro remover instâncias. O autoescalador somente removerá as instâncias depois de determinar que o tamanho menor do grupo será suficiente para permitir a carga dos dez últimos minutos.

Esse atraso de dez minutos pode aparecer como um atraso na redução do dimensionamento, mas, na verdade, é um recurso integrado do escalonamento automático. O atraso também garante que, se uma nova instância de máquina virtual for adicionada ao grupo de instâncias gerenciadas, a instância permaneça em execução por pelo menos 10 minutos antes de poder ser encerrada.

Os períodos de resfriamento de novas instâncias são ignorados durante a decisão de reduzir um grupo.

Diminuição da conexão que causa atrasos

Se o grupo fizer parte de um serviço de back-end com descarga de conexão ativada, pode levar até 60 segundos após essa descarga para que a instância da VM seja removida ou excluída.

Preparação dos encerramentos de instâncias

Quando o autoescalador executa a redução vertical, ele determina o número de máquinas virtuais que precisa desligar e seleciona as instâncias de máquina virtual com baixa utilização do grupo de instâncias para encerrar. Antes do encerramento de uma instância, convém verificar se ela executa determinadas tarefas, como fechar conexões existentes, desligar normalmente quaisquer aplicativos ou servidores de aplicativos, carregar registros etc. Instrua a instância a executar essas tarefas usando um script de desligamento.

O script de desligamento é executado, de acordo com a possibilidade, no breve período entre o momento em que é feita a solicitação de encerramento e a instância é realmente encerrada. Durante esse período, o Compute Engine tenta executar o script de desligamento para realizar quaisquer tarefas especificadas nele.

Isso é útil principalmente se você usa balanceamento de carga com o grupo de instâncias gerenciadas. Se a instância deixar de ser íntegra, poderá levar algum tempo para o balanceador de carga reconhecê-la como não íntegra, fazendo com que ele continue enviando novas solicitações à instância. Com o script de desligamento, a instância relata que não está íntegra durante seu desligamento para que o balanceador de carga interrompa o envio de tráfego a ela. Para saber mais informações, consulte Como lidar com instâncias não íntegras na documentação de balanceamento de carga.

Para mais informações, consulte Scripts de desligamento.

Para mais informações sobre desligamento de instâncias, leia a documentação sobre como parar ou excluir uma instância.

Como ver gráficos de escalonamento automático para utilização

Se você tiver um grupo de instâncias gerenciadas sendo escalonado automaticamente, o Compute Engine fornecerá um gráfico de escalonamento automático que rastreia a utilização total e o número de instâncias escalonadas automaticamente a qualquer momento. Para acessar esse gráfico, vá ao Console do Google Cloud Platform.

  1. Acesse a página "Grupos de instâncias" no Console do GCP.

    Acessar a página "Grupos de instâncias"

  2. Clique no nome de um grupo de instâncias gerenciadas com escalonamento automático que você quer visualizar. O grupo precisa usar escalonamento automático com base na utilização da CPU, porque outras métricas de escalonamento automático ainda não são compatíveis.
  3. Na página de detalhes do grupo de instâncias gerenciadas, selecione a guia Monitoramento, se ainda não estiver selecionada.

    Captura de tela da guia de monitoramento

  4. Verifique se Tamanho escalonado automaticamente está selecionado no menu suspenso.

Os gráficos rastreiam o número de instâncias em relação ao uso da CPU. Use as informações a seguir para entender esses gráficos.

  • A linha azul no gráfico superior indica o número de instâncias no grupo de instâncias gerenciadas.
  • A linha azul no gráfico inferior mostra a utilização total da CPU do grupo.
  • A linha verde no gráfico inferior mostra a capacidade disponível restante do grupo de instâncias gerenciadas:
    • se a linha verde estiver acima da linha azul, há uma grande capacidade disponível e suas instâncias de VM provavelmente estão sendo subutilizadas.
    • se a linha verde estiver abaixo da linha azul, há pouca capacidade, se houver, e é preciso adicionar mais instâncias ao grupo de instâncias.
  • Se a capacidade diminuir, provavelmente o tamanho do grupo de instâncias foi reduzido para a linha azul diminuir também. Igualmente, se a capacidade aumentar, o tamanho do grupo de instâncias provavelmente também aumentou.

Por exemplo, o gráfico a seguir captura um grupo de instâncias gerenciadas escalonado automaticamente que atinge a capacidade, fazendo com que o autoescalador adicione mais instâncias de VM ao grupo para aumentar a capacidade dele:

Captura de tela do gráfico de escalonamento automático

Como visualizar mensagens de status

Quando o autoescalador tem algum problema de escalonamento, ele retorna um aviso ou uma mensagem de erro. Você pode revisar essas mensagens de status de uma das duas maneiras.

Visualizar mensagens de status na página de grupos de instâncias

É possível visualizar mensagens de status diretamente na página "Grupos de instâncias" no Console do Google Cloud Platform.

  1. Acesse a página "Grupos de instâncias" no Console do Google Cloud Platform.

    Acessar a página "Grupos de instâncias"

  2. Procure por grupos de instâncias que tenham o ícone de cuidado ! . Por exemplo:

    Captura de tela de mensagens de status na página de grupos de instâncias

  3. Passe o cursor sobre um ícone de status para detalhes da mensagem de status.

Visualizar mensagens de status na página "Detalhes dos grupos de instâncias"

Você pode ir diretamente para a página de detalhes de um grupo de instâncias específico para visualizar mensagens de status relevantes.

  1. Acesse a página "Grupos de instâncias" no Console do Google Cloud Platform.

    Acessar a página "Grupos de instâncias"

  2. Clique no grupo de instâncias que você quer visualizar as mensagens de status.
  3. Na página de detalhes, visualize a mensagem de status na guia Membros. Por exemplo:

    Captura de tela das mensagens de status na página de detalhes do grupo de instâncias

Mensagens de status normalmente retornadas

Quando o autoescalador tem algum problema de escalonamento, ele retorna um aviso ou uma mensagem de erro. Veja a seguir algumas mensagens de erro normalmente retornadas e seus significados.

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 têm um estado que é diferente de RUNNING. Se isso for intencional, você poderá ignorar essa mensagem. Se isso não for intencional, resolva o problema do grupo de instâncias.
The number of instances has reached the maxNumReplicas. The Autoscaler cannot add more instances.
Quando você criou o autoescalador, indicou o número máximo de instâncias que o grupo pode ter. O autoescalador está tentando redimensionar o grupo de instâncias para atender à demanda, mas atingiu o maxNumReplicas. Para atualizar maxNumReplicas com um número maior, leia Como atualizar um autoescalador.
The monitoring metric that was specified does not exist or does not have the required labels. Check the metric.
Você está executando o escalonamento automático com uma métrica do Stackdriver, mas a métrica inserida não existe ou não contém os rótulos necessários. Dependendo se a métrica for padrão ou personalizada, serão necessários rótulos diferentes. Consulte a documentação sobre Como dimensionar com base em uma métrica do Stackdriver Monitoring para mais informações.
Quota for some resources is exceeded. Increase the quota or delete resources to free up more quota.
Acesse informações sobre sua cota disponível na página Cota do Console do Google Cloud Platform.
Autoscaling does not work with an HTTP/S load balancer configured for maxRate.
A carga do grupo de instâncias está sendo balanceada com a configuração maxRate, mas o autoescalador não é compatível com esse modo. Altere a configuração ou desative o escalonamento automático. Para saber mais sobre maxRate, leia Restrições e diretrizes na documentação de balanceamento 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.
A carga do grupo de instâncias está sendo balanceada, mas o grupo não tem consultas de entrada. O serviço pode estar passando por um período de ociosidade e, nesse caso, não há nada com que se preocupar. No entanto, essa mensagem também pode ser causada por uma configuração incorreta. Por exemplo, um grupo de instâncias escalonadas automaticamente pode ser o destino de mais de um balanceador de carga, o que não é aceito. Para ver uma lista completa de diretrizes, consulte Restrições e diretrizes na documentação de balanceamento de carga.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine