Como usar uma política de escalonamento automático com vários sinais


Ao criar uma política de escalonamento automático com vários sinais, o escalonador automático faz o escalonamento com base no sinal que fornece o maior número de instâncias de máquina virtual (VM) no grupo gerenciado de instâncias (MIG). Isso garante que sempre haja VMs suficientes para processar as cargas de trabalho do aplicativo e que você consiga escalonar os aplicativos com vários gargalos possíveis.

Para saber mais sobre os diferentes tipos de sinais de escalonamento automático, consulte Política de escalonamento automático.

Antes de começar

  • Leia sobre as noções básicas do escalonador automático.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Como o escalonador automático gerencia vários sinais

Um escalonador automático gerencia vários sinais calculando o número recomendado de VMs para cada sinal e escolhe o sinal que resulta no maior número de VMs no MIG.

Um escalonador automático é capaz de gerenciar um sinal por tipo de métrica, exceto no caso de métricas do Cloud Monitoring e de programações de escalonamento. É possível escolher até cinco sinais de escalonamento automático para as métricas do Cloud Monitoring e criar até 128 programações por MIG. Por exemplo, é possível criar um escalonador automático que use até 1 sinal de utilização de CPU, até 1 sinal de balanceamento de carga, até 5 sinais de métrica personalizados e até 128 programações de escalonamento.

Por exemplo, você pode definir um escalonador automático com todos os sinais a seguir:

  • cpuUtilization com meta de 0,8
  • loadBalancingUtilization com meta de 0,6
  • customMetricUtilization para metric1 com meta de 1.000
  • customMetricUtilization para metric2 com meta de 2.000
  • scalingSchedules
    • Um mínimo de seis VMs por sábado e domingo às 0h por 24 horas
    • um mínimo de 15 VMs de segundas a sextas-feiras às 9h por 8 horas

Neste exemplo, imagine que o escalonador automático mede os seguintes valores médios de utilização para um MIG que contém 10 VMs no momento da medição:

  • 0,5 para utilização da CPU
  • 0,4 para utilização do balanceamento de carga
  • 1.100 para metric1
  • 2.700 para metric2

Usando os valores anteriores, o escalonador automático calcula o número recomendado de VMs com base em cada sinal:

  • 7 VMs baseadas na utilização da CPU
  • 7 VMs baseadas na utilização do balanceamento de carga
  • 11 VMs baseadas em metric1
  • 14 VMs baseadas em metric2
  • 6 VMs por sábado e domingo durante todo o dia com base na primeira programação de escalonamento
  • 15 VMs de segunda a sexta-feira, das 9h às 17h, com base na segunda programação de escalonamento

O escalonador automático escolhe o sinal que resulta no maior número de VMs no MIG e define o tamanho recomendado do MIG para esse valor. Neste caso, o escalonador automático redimensionará o MIG para 15 VMs se a segunda programação estiver ativa naquele momento. Caso contrário, o redimensionamento será para 14 VMs.

Crie um escalonador automático com vários sinais

A criação de um escalonador automático com vários indicadores é um pouco diferente dependendo da ferramenta utilizada: o console do Google Cloud, a gcloud CLI ou a REST.

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Clique no nome de um MIG na lista. Em seguida, clique em Editar.

  3. Na página de edição em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativá-lo no menu suspenso.

  4. Em Número mínimo de instâncias, insira o número mínimo de VMs desejado para este MIG. O tamanho mínimo desse MIG é sempre mantido, independentemente dos sinais de escalonamento automático.

  5. Em Número máximo de instâncias, insira o número máximo de VMs desejado para este MIG. O tamanho máximo desse MIG nunca é excedido, independentemente do tamanho recomendado gerado pelos sinais de escalonamento automático.

  6. Para cada sinal de escalonamento automático baseado em métrica que você quiser adicionar, em Indicadores de escalonamento automático, clique em Adicionar um indicador.

    • Para criar um indicador de escalonamento automático com base na utilização média da CPU, em Tipo de indicador, selecione Utilização da CPU no menu suspenso. Em seguida, insira uma utilização de CPU de destino e clique em Concluído. Para mais informações, consulte Como fazer o escalonamento baseado na utilização da CPU.
    • Para criar um indicador de escalonamento automático com base na capacidade de exibição do balanceamento de carga HTTP, em Tipo de indicador, selecione Uso do balanceamento de carga HTTP no menu suspenso. Em seguida, insira uma Utilização de balanceamento de carga HTTP de destino e clique em Concluído. Para mais informações, consulte Escalonamento com base na capacidade de exibição do balanceamento de carga.
    • Para criar um indicador de escalonamento automático com base nas métricas do Cloud Monitoring, em Tipo de indicador, selecione Métrica do Cloud Monitoring no menu suspenso. Em seguida, preencha os campos restantes e clique em Concluído. Para mais informações, consulte Como escalonar com base nas métricas do Cloud Monitoring.
  7. Para cada sinal de escalonamento automático baseado em programação que você quer adicionar, expanda a seção Programações de escalonamento automático, clique em Gerenciar programações e clique em Criar programação.

  8. No novo painel Criar uma programação de escalonamento, preencha os campos necessários e clique em Salvar. Em seguida, no painel Como escalonar programações, clique em Concluído. Para mais informações, consulte Como escalonar com base em programações.

  9. Em Período de inicialização, insira o número de segundos que seu aplicativo precisa para inicializar. Com isso, as VMs podem concluir a inicialização antes que o escalonador automático considere os dados de uso confiáveis. Para mais informações, consulte Período de inicialização.

  10. Opcional: para ativar os controles de redução de escalonamento horizontal, clique em Controles de redução de escalonamento horizontal e marque a caixa de seleção Ativar controles de redução de escalonamento horizontal. Para mais informações, consulte Controles de redução do escalonamento horizontal.

  11. Clique em Salvar.

gcloud

Para criar um escalonador automático com vários sinais, use o comando set-autoscaling. Transmita várias especificações de sinal usando as respectivas sinalizações de linha de comando.

Por exemplo, o comando a seguir cria um escalonador automático que usa a utilização da CPU, a capacidade de exibição do balanceamento de carga, duas métricas personalizadas e uma programação de escalonamento. As sinalizações --max-num-replicas e --min-num-replicas restringem o tamanho máximo ou mínimo que o MIG pode alcançar.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" \
   --min-num-replicas=1 \
   --max-num-replicas=50

Substitua:

  • MIG_NAME: o nome de um MIG.
  • PATH_TO_CUSTOM_METRIC_1 e PATH_TO_CUSTOM_METRIC_2: opcional: os caminhos para as métricas personalizadas com um formato semelhante a custom.cloudmonitoring.googleapis.com/path/to/metric1 e custom.cloudmonitoring.googleapis.com/path/to/metric2. Para mais informações, consulte Métricas personalizadas.

Com exceção das sinalizações de métrica personalizada, você pode transmitir apenas uma sinalização para cada tipo de métrica por comando gcloud. Para métricas personalizadas, é possível fornecer várias métricas personalizadas em um único comando repetindo a sinalização --custom-metric-utilization.

Para mais informações sobre como configurar as sinalizações para cada tipo de sinal de escalonamento automático, consulte as seguintes páginas:

REST

Para criar um escalonador automático, use o método autoscalers.insert para um MIG zonal ou o método regionAutoscalers.insert para um MIG regional.

Por exemplo, a solicitação a seguir cria um escalonador automático que usa a utilização da CPU, a capacidade de exibição do balanceamento de carga, duas métricas personalizadas e duas programações de escalonamento. Os campos maxNumReplicas e minNumReplicas restringem o tamanho máximo ou mínimo que o MIG pode alcançar.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

Substitua:

  • PROJECT: o ID do projeto;
  • ZONE: a zona em que o MIG está localizado;
  • MIG_NAME: o nome de um MIG.
  • PATH_TO_CUSTOM_METRIC_1 e PATH_TO_CUSTOM_METRIC_2: opcional: os caminhos para as métricas personalizadas com um formato semelhante a custom.cloudmonitoring.googleapis.com/path/to/metric1 e custom.cloudmonitoring.googleapis.com/path/to/metric2. Para mais informações, consulte Métricas personalizadas.

Como mostrado neste exemplo, é possível fornecer várias métricas personalizadas e programações de escalonamento na mesma solicitação.

Para mais informações sobre como configurar os campos de cada tipo de sinal de escalonamento automático, consulte as seguintes páginas: