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


Quando você cria uma política de escalonamento automático com vários sinais, o escalonador automático é dimensionado com base no sinal que fornece o maior número de instâncias de máquina virtual (VM) no grupo de instâncias gerenciadas (MIG). Isso garante que sempre haja VMs suficientes para lidar com as cargas de trabalho de seus aplicativos e permite dimensionar 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 os fundamentos do escalonador automático.
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Como o autoescalador lida com vários sinais

Um escalonador automático lida com vários sinais calculando o número recomendado de VMs para cada sinal e, em seguida, escolhendo o sinal que resulta no maior número de VMs no MIG.

Um escalonador automático pode lidar com um sinal por tipo de métrica, exceto no caso de métricas e programações de escalonamento do Cloud Monitoring. Você pode escolher até cinco sinais de escalonamento automático para métricas do Cloud Monitoring e criar até 128 programações por MIG. Por exemplo, você pode 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étricas personalizados e até 128 programações de escalabilidade.

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 1000
  • customMetricUtilization para metric2 com meta de 2.000
  • scalingSchedules
    • Um mínimo de 6 VMs todos os sábados e domingos às 12h durante 24 horas
    • Um mínimo de 15 VMs, de segunda a sexta, às 9h, durante 8 horas

Neste exemplo, suponha que o escalonador automático meça 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 utilização de balanceamento de carga
  • 1100 para métrica1
  • 2.700 para métrica2

Utilizando os valores anteriores, o autoescalador 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 de balanceamento de carga
  • 11 VMs baseadas na métrica1
  • 14 VMs baseadas em metric2
  • 6 VMs todos os sábados e domingos durante todo o dia com base na primeira programação de escalonamento
  • 15 VMs todas as segundas a sextas-feiras, 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. Nesse caso, o escalonador automático redimensiona o MIG para 15 VMs se o segundo agendamento estiver ativo no momento ou para 14 VMs caso contrário.

Crie um escalonador automático com vários sinais

A criação de um escalonador automático com vários sinais é um pouco diferente dependendo se você está usando o console do Google Cloud, a CLI gcloud ou REST.

Console

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

    Vá para grupos 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 , ative o escalonamento automático selecionando Ativado: adicionar e remover instâncias do grupo no menu suspenso.

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

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

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

    • Para criar um sinal de escalonamento automático com base na utilização média da CPU, em Tipo de sinal , selecione Utilização da CPU no menu suspenso. Em seguida, insira uma utilização desejada da CPU e clique em Concluído . Para obter mais informações, consulte Dimensionamento baseado na utilização da CPU .
    • Para criar um sinal de escalonamento automático com base na capacidade de serviço de balanceamento de carga HTTP, em Tipo de sinal , selecione Utilização de 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 obter mais informações, consulte Dimensionamento baseado na capacidade de serviço de balanceamento de carga .
    • Para criar um sinal de escalonamento automático com base nas métricas do Cloud Monitoring, em Tipo de sinal, selecione a métrica do Cloud Monitoring no menu suspenso. Em seguida, preencha os campos restantes e clique em Concluído . Para obter mais informações, consulte Dimensionamento baseado em métricas do Cloud Monitoring .
  7. Para cada sinal de escalonamento automático baseado em agendamento que você deseja adicionar, expanda a seção Agendamentos de escalonamento automático , clique em Gerenciar agendamentos e, em seguida, clique em Criar agendamento .

  8. No novo painel Criar agendamento de escalabilidade , preencha os campos obrigatórios e clique em Salvar . Em seguida, no painel Dimensionamento de cronogramas , clique em Concluído . Para obter mais informações, consulte Dimensionamento baseado em planejamentos .

  9. Em Período de inicialização , insira o número de segundos que seu aplicativo precisa para inicializar. Isso permite que suas VMs terminem a inicialização antes que o escalonador automático considere seus dados de uso confiáveis. Para obter mais informações, consulte Período de inicialização .

  10. Opcional: para ativar controles de redução, clique em Controles de redução e marque a caixa de seleção Habilitar controles de redução . Para obter mais informações, consulte controles de redução vertical

  11. Clique em Salvar .

gcloud

Para criar um escalonador automático com vários sinais, use o comando set-autoscaling . Passe múltiplas especificações de sinal usando seus respectivos sinalizadores de linha de comando.

Por exemplo, o comando a seguir cria um escalonador automático que usa utilização de CPU, capacidade de serviço de balanceamento de carga, duas métricas personalizadas e um agendamento de escalabilidade. Os sinalizadores --max-num-replicas e --min-num-replicas restringem o tamanho do MIG.

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 o seguinte:

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

Com exceção das sinalizações de métricas personalizadas, você só pode transmitir no máximo uma sinalização para cada tipo de métrica por comando gcloud . Para métricas personalizadas, você pode fornecer várias métricas personalizadas em um único comando repetindo o sinalizador --custom-metric-utilization .

Para obter mais informações sobre como configurar os sinalizadores para cada tipo de sinal de escalonamento automático, consulte as páginas a seguir:

DESCANSAR

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 utilização de CPU, capacidade de serviço de balanceamento de carga, duas métricas personalizadas e dois cronogramas de escalabilidade. Os campos maxNumReplicas e minNumReplicas restringem o tamanho do MIG.

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 o seguinte:

  • PROJECT : seu ID do projeto .
  • ZONE : a zona onde seu 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 métricas personalizadas com um formato semelhante a custom.cloudmonitoring.googleapis.com/path/to/metric1 e custom.cloudmonitoring.googleapis.com/path/to/metric2 . Para obter mais informações, consulte Métricas personalizadas .

Conforme mostrado neste exemplo, você pode fornecer diversas métricas personalizadas e programações de escalonamento na mesma solicitação.

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