Escalonamento com base em programações


O escalonamento automático baseado em programação permite melhorar a disponibilidade das cargas de trabalho programando a capacidade antes da carga prevista. Se você executar a carga de trabalho em um grupo gerenciado de instâncias (MIG, na sigla em inglês), poderá programar um número necessário de instâncias de máquina virtual (VM) para padrões de carga recorrentes, bem como eventos únicos. Use programações de escalonamento se a carga de trabalho demorar muito para ser inicializada e você quiser escalonar horizontalmente antes de picos de carga previstos.

Neste documento, descrevemos como criar, listar, editar, desativar, reativar e excluir programações de escalonamento de um MIG. Para mais informações sobre MIGs e escalonamento automático, consulte Como criar grupos gerenciados de instâncias e Como fazer escalonamento automático de grupos de instâncias.

Antes de começar

  • Leia sobre os fundamentos 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 da seguinte maneira.

    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. Terraform

      Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Confira mais informações em Set up authentication for a local development environment.

      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.

Limitações

As programações de escalonamento são restritas pelas limitações de todos os escalonadores automáticos e pelas seguintes limitações:

  • É possível ter até 128 programações de escalonamento por MIG. Para atenuar esse limite, exclua programações de escalonamento que tenham um status OBSOLETE e que você não planeja executar novamente.
  • A duração mínima das programações de escalonamento é de cinco minutos.

Como criar uma programação de escalonamento

É possível criar até 128 programações de escalonamento por MIG. Para mais informações, consulte Como escalonar configurações de programação.

Nas instruções a seguir, explicamos como criar uma programação de escalonamento para um MIG.

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.

  3. Clique em Editar.

  4. Se não houver configuração de escalonamento automático, faça o seguinte:

    1. Em Escalonamento automático, clique em Configurar escalonamento automático.
    2. Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias do grupo para ativar o escalonamento automático. Se você quiser escalonar o MIG com base apenas em programações, exclua a métrica de utilização padrão da CPU depois de adicionar as programações.
  5. Para cada programação de escalonamento que você quer adicionar:

    1. Expanda a seção Programações de escalonamento automático, clique em Gerenciar programações e em Criar programação.
    2. No painel Criar programação de escalonamento, insira um Nome.
    3. Opcional: digite uma Descrição.
    4. Insira o número mínimo de instâncias necessárias que essa programação fornece quando está ativa.
    5. Especifique o horário de início e a recorrência da programação de dimensionamento usando a interface padrão ou, se quiser configurar uma programação com um horário de início e uma recorrência mais complexos, use uma expressão cron.
      • Interface padrão
        1. No campo Horário de início, digite ou clique em para selecionar um horário de início.
        2. No campo Recorrência, selecione a frequência com que a programação se repete. Se você selecionar Todas as semanas ou Todos os meses, use o menu suspenso adicional para selecionar os dias da semana ou o mês em que a programação começou.
      • Expressão cron
        1. Para ativar, clique na opção Usar expressão CRON.
        2. Insira uma expressão CRON.
    6. No campo Fuso horário, selecione um fuso horário.

    7. Nos campos Duração e Unidade de tempo, insira uma duração e selecione uma unidade de tempo correspondente.

    8. Clique em Save. O painel Programações de escalonamento é aberto.

    9. Opcional: é possível criar outra programação de escalonamento clicando em Criar programação.

  6. Quando terminar de criar as programações, clique em Concluído.

  7. Para fechar a página Grupos de instâncias, clique em Salvar.

gcloud

Para adicionar uma programação de escalonamento a um MIG que não tenha uma política de escalonamento automático, use o comando gcloud compute instance-groups managed set-autoscaling.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
    [--min-num-replicas=MIN_NUM_REPLICAS] \
    --max-num-replicas=MAX_NUM_REPLICAS \
    --set-schedule=SCHEDULE_NAME \
    --schedule-cron="CRON_EXPRESSION" \
    --schedule-duration-sec=DURATION \
    [--schedule-time-zone="TIME_ZONE"] \
    --schedule-min-required-replicas=MIN_REQ_REPLICAS \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

Para adicionar uma programação de escalonamento a um MIG que tenha uma política de escalonamento automático, use o comando gcloud compute instance-groups managed update-autoscaling.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    [--min-num-replicas=MIN_NUM_REPLICAS] \
    [--max-num-replicas=MAX_NUM_REPLICAS] \
    --set-schedule=SCHEDULE_NAME \
    --schedule-cron="CRON_EXPRESSION" \
    --schedule-duration-sec=DURATION \
    [--schedule-time-zone="TIME_ZONE"] \
    --schedule-min-required-replicas=MIN_REQ_REPLICAS \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

Substitua:

  • MIG_NAME: o nome de um MIG que tenha uma política de escalonamento automático;
  • MIN_NUM_REPLICAS: (opcional) o número mínimo de instâncias necessárias para esse MIG. O Google recomenda que você defina esse valor para o número mínimo de instâncias necessárias quando nenhuma programação de escalonamento estiver ativa. Quando você define esse valor como 0 e configura o escalonamento automático com programações ou métricas do Cloud Monitoring com uma única série temporal por grupo, o MIG pode ser escalonado para zero VMs. O escalonamento em nenhuma VM não é possível quando a política tem outros sinais, que exigem dados de VM individual, por exemplo, a utilização da CPU;
  • MAX_NUM_REPLICAS: o número máximo de instâncias que podem ser fornecidas para esse MIG. Opcional para um MIG com uma política de escalonamento automático;
  • SCHEDULE_NAME: o nome da nova programação de escalonamento;
  • CRON_EXPRESSION: o horário de início e a recorrência dessa programação formatados como uma expressão cron;
  • DURATION: o tempo de atividade desta programação em segundos;
  • TIME_ZONE: (opcional) o fuso horário da IANA para o horário de início da programação, por exemplo, Europe/Paris. O valor padrão é UTC.
  • MIN_REQ_REPLICAS: o número mínimo de instâncias necessárias que essa programação fornece quando está ativa;
  • DESCRIPTION: (opcional) uma descrição da nova programação de escalonamento;
  • ZONE ou REGION: (opcional) a zona ou região em que o MIG está localizado.

É possível criar programações que são executadas uma vez ou que se repetem periodicamente.

Programação recorrente

Este comando de exemplo cria uma programação que se repete. Essa programação determina que você quer que o MIG contenha pelo menos 10 instâncias de VM todas as segundas, terças, quartas, quintas e sextas das 8h30 às 17h (UTC). Esse comando também usa as sinalizações --min-num-replicas e --max-num-replicas para atualizar o número mínimo de instâncias para 0 e o número máximo de instâncias para 30 em todos os sinais de escalonamento automático do MIG selecionado. Esse comando pressupõe que você tenha um MIG denominado example-mig com uma política de escalonamento automático.

gcloud compute instance-groups managed update-autoscaling example-mig \
    --min-num-replicas=0 \
    --max-num-replicas=30 \
    --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"

Programação única

Este comando de exemplo cria uma programação que é executada uma vez. Essa programação determina que você quer que o MIG contenha pelo menos 30 instâncias de VM durante todo o dia 30 de janeiro de 2030 no fuso horário America/New_York. Esse comando pressupõe que você tenha um MIG denominado example-mig em us-east1-b que tenha uma política de escalonamento automático.

gcloud compute instance-groups managed update-autoscaling example-mig \
    --set-schedule=example-onetime-schedule \
    --schedule-cron="0 0 30 1 * 2030" \
    --schedule-duration-sec=86400 \
    --schedule-time-zone="America/New_York" \
    --schedule-min-required-replicas=30 \
    --schedule-description="Schedule a minimum of 30 VMs all day for January 30, 2030" \
    --zone=us-east1-b

Terraform

Para adicionar uma programação de escalonamento a um MIG, use o recurso google_compute_autoscaler.

resource "google_compute_autoscaler" "default" {
  provider = google-beta
  name     = "my-autoscaler"
  zone     = "us-central1-f"
  target   = google_compute_instance_group_manager.default.id

  autoscaling_policy {
    max_replicas    = 5
    min_replicas    = 1
    cooldown_period = 60

    scaling_schedules {
      name                  = "every-weekday-morning"
      description           = "Increase to 2 every weekday at 7AM for 12 hours."
      min_required_replicas = 2
      schedule              = "0 7 * * MON-FRI"
      time_zone             = "America/New_York"
      duration_sec          = 43200
    }
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

REST

Para criar um escalonador automático com programações de escalonamento para um MIG, use o método autoscalers.insert para um MIG zonal ou o método regionAutoscalers.insert para um MIG regional.

Faça a seguinte chamada para criar uma programação para um MIG zonal que não tenha uma política de escalonamento automático:

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

{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instanceGroupManagers/MIG_NAME",
  "autoscalingPolicy": {
    "minNumReplicas": MIN_NUM_REPLICAS,
    "maxNumReplicas": MAX_NUM_REPLICAS,
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

Para criar programações para um MIG que tenha uma política de escalonamento automático, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional.

Por exemplo, faça a seguinte chamada para criar uma programação para um MIG zonal que tenha uma política de escalonamento automático:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "minNumReplicas": MIN_NUM_REPLICAS,
    "maxNumReplicas": MAX_NUM_REPLICAS,
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto;
  • ZONE: a zona em que o MIG está localizado;
  • AUTOSCALER_NAME: o nome de um escalonador automático atual. Geralmente é igual ao nome do MIG.
  • MIN_NUM_REPLICAS: (opcional) o número mínimo de instâncias necessárias para esse MIG. O Google recomenda que você defina esse valor para o número mínimo de instâncias necessárias quando nenhuma programação de escalonamento estiver ativa. Quando você define esse valor como 0 e configura o escalonamento automático com programações ou métricas do Cloud Monitoring com uma única série temporal por grupo, o MIG pode ser escalonado para zero VMs. O escalonamento em nenhuma VM não é possível quando a política tem outros sinais, que exigem dados de VM individual, por exemplo, a utilização da CPU;
  • MAX_NUM_REPLICAS: o número máximo de instâncias que podem ser fornecidas para esse MIG. Opcional para um MIG com uma política de escalonamento automático;
  • SCHEDULE_NAME: o nome da nova programação de escalonamento;
  • MIN_REQ_REPLICAS: o número mínimo de instâncias necessárias que a programação fornece quando está ativa;
  • CRON_EXPRESSION: o horário de início e a recorrência dessa programação formatados como uma expressão cron;
  • TIME_ZONE: (opcional) o fuso horário da IANA para o horário de início da programação, por exemplo, Europe/Paris. O valor padrão é UTC.
  • DURATION: o tempo de atividade desta programação em segundos;
  • DESCRIPTION: (opcional) uma descrição da nova programação de escalonamento;

É possível criar programações que são executadas uma vez ou que se repetem periodicamente.

Programação recorrente

Esta chamada de API de exemplo cria uma programação que se repete. Essa programação determina que você quer que um MIG zonal contenha pelo menos 10 instâncias de VM todas as segundas, terças, quartas, quintas e sextas das 8h30 às 17h (UTC). Essa chamada de API também usa os campos minNumReplicas e maxNumReplicas para atualizar o número mínimo de instâncias para 0 e o número máximo de instâncias para 30 em todos os sinais de escalonamento automático do MIG selecionado. Essa chamada de API presume que você tenha um projeto chamado example-project com um MIG zonal que esteja localizado em us-east1-b e tenha um escalonador automático chamado example-autoscaler com uma política de escalonamento automático.

PATCH https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "minNumReplicas": 0,
    "maxNumReplicas": 30,
    "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"
      }
    }
  }
}

Para usar este exemplo em um MIG regional, faça uma solicitação semelhante usando o método regionAutoscalers.patch e especifique uma região em vez de uma zona.

Programação única

Esta chamada de API de exemplo cria uma programação que é executada uma vez. Essa programação determina que você quer que um MIG zonal contenha pelo menos 30 instâncias de VM durante todo o dia 30 de janeiro de 2030 no fuso horário America/New_York. Essa chamada de API presume que você tenha um projeto chamado example-project com um MIG zonal que esteja localizado em us-east1-b e tenha um escalonador automático chamado example-autoscaler com uma política de escalonamento automático.

PATCH https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "example-onetime-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"
      }
    }
  }
}

Para usar este exemplo em um MIG regional, faça uma solicitação semelhante usando o método regionAutoscalers.patch e especifique uma região em vez de uma zona.

Várias programações

Esta chamada de API de exemplo usa o método autoscalers.patch para duas programações, workday-capacity e january-30-2030-schedule, em uma única chamada. Essa chamada de API presume que você tenha um projeto chamado example-project com um MIG zonal que esteja localizado em us-east1-b e tenha um escalonador automático chamado example-autoscaler com uma política de escalonamento automático.

PATCH https://www.googleapis.com/compute/v1/projects/example-project/zones/us-east1-b/autoscalers?autoscaler=example-autoscaler

{
  "autoscalingPolicy": {
    "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"
      }
    }
  }
}

Para usar este exemplo em um MIG regional, faça uma solicitação semelhante usando o método regionAutoscalers.patch e especifique uma região em vez de uma zona.

Depois que uma programação é criada, pode ser necessário aguardar alguns minutos para ver as informações de status dela.

Como listar programações de escalonamento

É possível ver uma lista das programações de um MIG. A lista mostra as configurações e as informações de status de cada programação.

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.

  3. Clique em Editar.

  4. Veja o número total de programações em Programações de escalonamento automático. Clique em Gerenciar programações para exibir a lista das programações de escalonamento.

Quando terminar, clique em Concluído para fechar a lista.

gcloud

Para ver detalhes de um MIG, incluindo as configurações e os status das programações de escalonamento, use o comando gcloud compute instance-groups managed describe.

gcloud compute instance-groups managed describe MIG_NAME \
    [--zone=ZONE | --region=REGION]

Substitua:

  • MIG_NAME: o nome de um MIG que tenha uma política de escalonamento automático;
  • ZONE ou REGION: (opcional) a zona ou região em que o MIG está localizado.

Todas as programações de escalonamento do MIG são listadas na saída, conforme mostrado no exemplo a seguir.

...
autoscalingPolicy:
  ...
  maxNumReplicas: 30
  minNumReplicas: 0
  ...
  scalingSchedules:
    example-onetime-schedule:
      description: Schedule a minimum of 30 VMs all day for January 30, 2030
      disabled: false
      durationSec: 86400
      minRequiredReplicas: 30
      schedule: 0 0 30 1 * 2030
      timeZone: America/New_York
    workday-capacity:
      description: Have at least 10 VMs every Monday through Friday from 8:30
        AM to 5 PM UTC
      disabled: false
      durationSec: 30600
      minRequiredReplicas: 10
      schedule: 30 8 * * Mon-Fri
      timeZone: UTC
...
scheduledScalingStatus:
    example-onetime-schedule:
        state: READY
        nextStartTime: '2030-01-30T00:00:00.000-05:00'
        lastStartTime: ''
    workday-capacity:
        state: READY
        nextStartTime: '2020-11-04T08:30:00.000-00:00'
        lastStartTime: '2020-11-03T08:30:00.000-00:00'
...

REST

Para ver detalhes de um escalonador automático, incluindo as configurações e os status das programações de escalonamento, use o método autoscalers.get para um MIG zonal ou o método regionAutoscalers.get para um MIG regional.

Por exemplo, faça a seguinte chamada para listar as programações de um MIG zonal que tenha uma política de escalonamento automático:

GET https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

Substitua:

  • PROJECT: o ID do projeto;
  • ZONE: a zona em que o MIG está localizado;
  • AUTOSCALER_NAME: o nome de um escalonador automático atual. Geralmente é igual ao nome do MIG.

Todas as programações de escalonamento do MIG são listadas na saída, conforme mostrado no exemplo a seguir.

{
  ...
  "autoscalingPolicy": {
    ...
    "minNumReplicas": 0,
    "maxNumReplicas": 30,
    ...
    "scalingSchedules": {
      "example-onetime-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",
        "disabled": false
      },
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "timeZone": "",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC",
        "disabled": false
      },
      ...
    }
  },
  "scheduledScalingStatus": {
    "example-onetime-schedule": {
      "state": "READY",
      "nextStartTime": "2030-01-30T00:00:00.000-05:00",
      "lastStartTime": ''
    },
    "workday-capacity": {
      "state": "READY",
      "nextStartTime": "2020-11-04T08:30:00.000",
      "lastStartTime": "2020-11-03T08:30:00.000"
    },
    ...
  },
...
}

Como editar uma programação de escalonamento

É possível editar uma programação de escalonamento para alterar qualquer uma das configurações dela, exceto o nome da programação. Também é possível desativar ou reativar uma programação de escalonamento.

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.

  3. Clique em Editar.

  4. Veja o número total de programações em Programações de escalonamento automático. Clique em Gerenciar programações para exibir a lista das programações de escalonamento.

  5. Marque a caixa de seleção da programação de dimensionamento que você quer editar.

  6. Na parte superior do painel Como escalonar programações, clique em Editar.

  7. No novo painel Editar programação de escalonamento, modifique os campos que você quer alterar. Para mais informações sobre cada campo, consulte Como criar uma programação de escalonamento.

  8. Quando terminar, clique em Salvar.

Talvez seja necessário aguardar alguns minutos para que as alterações entrem em vigor. Para monitorar o status das programações, clique em Atualizar na parte superior do painel Como escalonar programações.

Quando terminar, clique em Concluído para fechar a lista.

gcloud

Para atualizar uma programação de escalonamento, use o comando gcloud compute instance-groups managed update-autoscaling. Use a sinalização --update-schedule para indicar o nome da programação a ser atualizada. Inclua as outras sinalizações conforme necessário para suas alterações.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --update-schedule=SCHEDULE_NAME \
    [--schedule-cron="CRON_EXPRESSION"] \
    [--schedule-duration-sec=DURATION] \
    [--schedule-time-zone="TIME_ZONE"] \
    [--schedule-min-required-replicas=MIN_REQ_REPLICAS] \
    [--schedule-description="DESCRIPTION"] \
    [--zone=ZONE | --region=REGION]

Substitua:

  • MIG_NAME: o nome de um MIG com uma programação de escalonamento existente;
  • SCHEDULE_NAME: o nome da programação de escalonamento atual;
  • CRON_EXPRESSION: (opcional) o novo horário de início e a recorrência da programação formatada como uma expressão cron;
  • DURATION: (opcional) o novo tempo de atividade dessa programação em segundos;
  • TIME_ZONE: (opcional) o novo fuso horário da IANA para o horário de início da programação, por exemplo, Europe/Paris. O valor padrão é UTC.
  • MIN_REQ_REPLICAS: (opcional) o novo número mínimo de instâncias necessárias que essa programação fornece quando está ativa;
  • DESCRIPTION: (opcional) uma nova descrição da programação de escalonamento;
  • ZONE ou REGION: (opcional) a zona ou região em que o MIG está localizado.

REST

Para atualizar as programações existentes de escalonamento de um MIG, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional.

Por exemplo, faça a seguinte chamada para editar uma programação para um MIG zonal que tenha uma política de escalonamento automático:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "minRequiredReplicas": MIN_REQ_REPLICAS,
        "schedule": "CRON_EXPRESSION",
        "timeZone": "TIME_ZONE",
        "durationSec": DURATION,
        "description": "DESCRIPTION"
      },
      ...
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto;
  • ZONE: a zona em que o MIG está localizado;
  • AUTOSCALER_NAME: o nome de um escalonador automático atual. Geralmente é igual ao nome do MIG;
  • SCHEDULE_NAME: o nome da programação de escalonamento atual;
  • MIN_REQ_REPLICAS: (opcional) o novo número mínimo de instâncias necessárias que essa programação fornece quando está ativa;
  • CRON_EXPRESSION: (opcional) o novo horário de início e a recorrência da programação formatada como uma expressão cron;
  • TIME_ZONE: (opcional) o novo fuso horário da IANA para o horário de início da programação, por exemplo, Europe/Paris. O valor padrão é UTC.
  • DURATION: (opcional) o novo tempo de atividade dessa programação em segundos;
  • DESCRIPTION: (opcional) uma nova descrição da programação de escalonamento.

Como desativar e reativar uma programação de escalonamento

As programações de escalonamento ficam ativadas por padrão. Desative a programação se quiser impedir que ela fique ativa, mas quiser salvar a configuração. Quando quiser usar essa programação novamente, reative-a.

Se você não precisar armazenar a programação ou se tiver atingido o limite de 128 programações para esse MIG, exclua a programação. Se você quiser desativar o escalonamento automático de um MIG, desative o escalonamento automático.

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.

  3. Clique em Editar.

  4. Veja o número total de programações em Programações de escalonamento automático. Clique em Gerenciar programações para exibir a lista das programações de escalonamento.

  5. Marque as caixas de seleção das programações de escalonamento que você quer desativar ou ativar.

  6. Desativar ou ativar as programações selecionadas.

    • Para desativar as programações selecionadas:
      1. Na parte superior do painel Como escalonar programações, clique em Desativar.
      2. Na nova caixa de diálogo Desativar programações, clique em Desativar.
    • Para ativar as programações selecionadas:
      1. Na parte superior do painel Como escalonar programações, clique em Ativar.
      2. Na nova caixa de diálogo Ativar programações, clique em Ativar.

Talvez seja necessário aguardar alguns minutos para que as alterações entrem em vigor. Para monitorar o status das programações, clique em Atualizar na parte superior do painel Como escalonar programações.

Quando terminar, clique em Concluído para fechar a lista.

gcloud

Para desativar ou reativar uma programação de escalonamento, use o comando gcloud compute instance-groups managed update-autoscaling.

Como desativar uma programação de escalonamento

Para desativar uma programação de escalonamento, use a sinalização --disable-schedule.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --disable-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

Substitua:

  • MIG_NAME: o nome de um MIG com uma programação de escalonamento existente;
  • SCHEDULE_NAME: o nome da programação de escalonamento que você quer desativar;
  • ZONE ou REGION: (opcional) a zona ou região em que o MIG está localizado.

Como reativar uma programação de escalonamento

Para reativar uma programação de escalonamento, use a sinalização --enable-schedule.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --enable-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

Substitua:

  • MIG_NAME: o nome de um MIG com uma programação de escalonamento existente;
  • SCHEDULE_NAME: o nome da programação de escalonamento que você quer reativar;
  • ZONE ou REGION: (opcional) a zona ou região em que o MIG está localizado.

REST

Para desativar ou reativar as programações de escalonamento de um MIG, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional.

Como desativar programações de escalonamento

Para cada programação de escalonamento que você quiser desativar, defina o campo disabled como true. Por exemplo, faça a seguinte chamada para desativar uma programação para um MIG zonal que tenha uma política de escalonamento automático:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "disabled": true
      },
      ...
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto;
  • ZONE: a zona em que o MIG está localizado;
  • AUTOSCALER_NAME: o nome de um escalonador automático atual. Geralmente é igual ao nome do MIG;
  • SCHEDULE_NAME: o nome da programação de escalonamento que você quer desativar.

Como reativar programações de escalonamento

Para cada programação de escalonamento que você quiser reativar, defina o campo disabled como false. Por exemplo, faça a seguinte chamada para reativar uma programação para um MIG zonal que tenha uma política de escalonamento automático:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": {
        "disabled": false
      },
      ...
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto;
  • ZONE: a zona em que o MIG está localizado;
  • AUTOSCALER_NAME: o nome de um escalonador automático atual. Geralmente é igual ao nome do MIG;
  • SCHEDULE_NAME: o nome da programação de escalonamento que você quer reativar.

Como excluir uma programação de escalonamento

Remova as programações de escalonamento de um MIG excluindo-as. Exclua as programações que você não precisa mais, como aquelas com um status OBSOLETE.

Uma política de escalonamento automático precisa ter pelo menos um sinal de escalonamento. Se não houver outro sinal de escalonamento automático, não será possível excluir todas as programações de escalonamento sem excluir toda a política de escalonamento automático. Se você quiser excluir todas as programações de escalonamento, mas manter a política de escalonamento automático, adicione pelo menos um sinal desse tipo antes de excluir todas as programações.

Para evitar que uma programação se torne ativa e salvá-la para uso futuro, desative a programação. Se você quiser excluir a configuração de escalonamento automático de um MIG, exclua o escalonador automático.

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.

  3. Clique em Editar.

  4. Veja o número total de programações em Programações de escalonamento automático. Clique em Gerenciar programações para exibir a lista das programações de escalonamento.

  5. Marque as caixas de seleção das programações de escalonamento que você quer excluir.

  6. Na parte superior do painel Como escalonar programações, clique em Excluir.

  7. Na nova caixa de diálogo Excluir programações, clique em Excluir.

Talvez seja necessário aguardar alguns minutos para que as alterações entrem em vigor. Para monitorar o status das programações, clique em Atualizar na parte superior do painel Como escalonar programações.

Quando terminar, clique em Concluído para fechar a lista.

gcloud

Para excluir uma programação de escalonamento, use o comando gcloud compute instance-groups managed update-autoscaling com a sinalização --remove-schedule.

gcloud compute instance-groups managed update-autoscaling MIG_NAME \
    --remove-schedule=SCHEDULE_NAME \
    [--zone=ZONE | --region=REGION]

Substitua:

  • MIG_NAME: o nome de um MIG com uma programação de escalonamento existente;
  • SCHEDULE_NAME: o nome da programação de escalonamento que você quer excluir;
  • ZONE ou REGION: (opcional) a zona ou região em que o MIG está localizado.

REST

Para excluir as programações de escalonamento de um MIG, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional. Para cada programação de escalonamento que você quiser excluir, defina a configuração da programação como null.

Por exemplo, faça a seguinte chamada para excluir uma programação de um MIG zonal que tenha uma política de escalonamento automático:

PATCH https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scalingSchedules": {
      "SCHEDULE_NAME": null
      ...
    }
  }
}

Substitua:

  • PROJECT: o ID do projeto;
  • ZONE: a zona em que o MIG está localizado;
  • AUTOSCALER_NAME: o nome de um escalonador automático atual. Geralmente é igual ao nome do MIG;
  • SCHEDULE_NAME: o nome da programação de escalonamento que você quer excluir.

Conceitos

Nesta seção, descrevemos conceitos relacionados à criação e ao uso de programações de escalonamento, incluindo configurações de programação e detalhes sobre como elas funcionam.

Como escalonar as configurações de programação

Se você criar e modificar as programações de escalonamento de um MIG, cada programação conterá as seguintes configurações:

  • Número mínimo de instâncias necessárias: o número de VMs necessárias no MIG quando essa programação de escalonamento está ativa.

    Quando essa programação está ativa, o MIG tem pelo menos esse número de VMs, mas pode ter mais, dependendo de outras configurações de escalonamento automático. Além disso, o tamanho do MIG sempre é restrito pelo número mínimo e máximo de instâncias configuradas nas configurações de escalonamento automático do MIG.

  • Fuso horário: o fuso horário da IANA de acordo com a localização para interpretar o horário de início da programação.

    Uma lista de valores disponíveis é definida pelo banco de dados de fuso horário da IANA. Por exemplo, Europe/Paris. Se nenhum fuso horário for informado, UTC será usado por padrão. Alguns fusos horários da IANA consideram o horário de verão. Para saber como o horário de verão afeta as programações de escalonamento, consulte Horário de verão.

  • Duração: o tempo que você quer que a programação de escalonamento fique ativa.

    A programação de dimensionamento fica ativa a partir do horário de início pela duração configurada. A duração mínima é de cinco minutos. Durante esse período, o escalonador automático escalona o MIG para ter pelo menos o número de VMs definido pelas instâncias necessárias da programação. Após a duração determinada, se a capacidade atual não for mais necessária, o escalonador automático começará a remover instâncias de VM após um período de estabilização padrão de 10 minutos e seguindo os controles de escalonamento configurados.

    As programações de escalonamento são bidirecionais. As VMs são removidas no horário de término especificado e o tamanho do grupo é reduzido ao tamanho mínimo do grupo que você definiu, a menos que você tenha especificado outros sinais de escalonamento automático.

Ao usar a CLI do Google Cloud ou a REST, é necessário configurar o horário de início e a recorrência de uma programação de escalonamento usando uma expressão cron. No entanto, ao usar o console do Google Cloud, é possível configurar o horário de início e a recorrência de uma programação usando uma expressão cron ou as seguintes configurações:

  • Horário de início: o horário em que você quer que a programação de dimensionamento se torne ativa.

    No horário de início, a programação de escalonamento começa a criar VMs sempre que o tamanho do MIG for menor que as instâncias necessárias. Defina o tempo de início para que haja tempo suficiente para que novas VMs sejam inicializadas e inicializadas. Por exemplo, se a carga de trabalho demorar 10 minutos após a criação da VM começar a ser veiculada, defina o horário de início como 10 minutos antes do horário em que as VMs precisarão estar prontas.

  • Recorrência: se e com que frequência a programação de dimensionamento se repete, conforme definido pelas seguintes opções:

    • Uma vez: uma programação única que começa somente na data selecionada.
    • Todos os dias: uma programação repetida que começa todos os dias.
    • Toda semana: uma programação repetida que começa toda semana nos dias selecionados da semana, por exemplo, todas as segundas-feiras.
    • Todo mês: uma programação repetida que começa todos os meses nos dias selecionados, por exemplo, no primeiro dia de cada mês. Os últimos dias do mês (dias 29 a 31) só são eficazes nos meses em que ocorrem.

Expressões cron

É possível configurar o horário de início e a recorrência de uma programação de escalonamento usando uma expressão cron. O Cron é um programador de jobs baseado em tempo usado originalmente em sistemas operacionais de computador no estilo do Unix.

Sintaxe

A expressão cron é uma string que contém cinco ou seis campos separados por espaços em branco. A tabela a seguir define os campos de uma expressão cron e os possíveis valores para cada campo.

Minuto Hora Dia do mês Mês Dia da semana Ano (opcional)
0-59 0-23 1-31 1 a 12 (janeiro a dezembro)

em que 1=Jan, 2=Feb, ... 12=Dec.
0 a 6 (domingo a sábado) ou 1 a 7 (segunda a domingo)

em que 0=Sun, 1=Mon, ... 6=Sat, 7=Sun
2000 a 2036

ou a cada ano (*) se não for fornecido

Além de usar esses valores, cada campo em uma expressão cron também pode usar caracteres especiais:

Caractere especial Significado Exemplo
* qualquer um Se os campos de dia do mês, dia da semana e ano (se incluído) forem definidos como *, a programação começará diariamente.
- Intervalo Se o campo de dia da semana estiver definido como 1-5 ou Mon-Fri, a programação começará toda semana de segunda a sexta-feira.
, lista Se o campo de mês estiver definido como 5,7,9 ou May,Jul,Sep, a programação começará a cada mês de maio, julho e setembro.
/ etapa Se o campo de mês estiver definido como */3, a programação começará durante o primeiro mês e a cada três meses depois disso: janeiro, abril, julho e outubro.

Ao escrever uma expressão cron, considere o seguinte:

  • O espaço em branco é usado para separar os campos de uma expressão cron. Portanto, não adicione espaços em branco em um campo que use caracteres especiais.
  • Quando você determina um dia da semana e um dia do mês (quando nenhum dos campos estiver definido como *), a programação usa a união desses valores, não a interseção. Por exemplo, a programação 0 8 1 * Mon começa às 8h de cada segunda-feira e no primeiro dia de cada mês. Essa programação não começa às 8h somente às segundas-feiras que também são o primeiro dia do mês.
  • É possível usar zero ou mais caracteres especiais em cada campo de uma expressão cron. Por exemplo, se você quiser que uma programação seja iniciada a cada mês, exceto em maio, defina o campo de mês como 1-4,6-12 (uma lista de dois intervalos sem espaço em branco).
  • Se usar intervalos (-), não será possível usar 0-7 ou Sun-Sun no campo de dia da semana. Para determinar todos os dias da semana, use *, 0-6, 1-7, Sun-Sat ou Mon-Sun.
  • Ao usar etapas (/), lembre-se de que as expressões cron são sem estado, de modo que as etapas podem não ser uniformes. Por exemplo, se você quiser que uma programação seja executada a cada seis horas, defina o campo de horas como */6, que se comporta da mesma forma que a listagem de todos os múltiplos válidos de seis (0,6,12,18). As etapas são pares porque 24 horas são facilmente divididas em partes de seis horas. No entanto, se você definir o campo de horas como */7, a programação nem sempre será iniciada em intervalos de 7 horas. Em vez disso, */7 se comporta da mesma maneira que listar todos os múltiplos de 7 (0,7,14,21), o que significa que a programação pode começar às 0h, 7h, 14h e 21h.

Programações recorrentes x programações únicas

Dependendo de como você escreve a expressão cron, sua programação pode ser executada uma vez ou periodicamente. Para criar uma programação que seja executada apenas uma vez, especifique o campo do ano. Por exemplo, a expressão cron 0 0 30 1 * 2030 configura uma programação para iniciar somente uma vez, à meia-noite do dia 30 de janeiro de 2030. Para criar uma programação que se repita, use caracteres especiais para descrever quando ela será repetida. Por exemplo, a expressão cron 30 8 * * Mon-Fri configura uma programação para iniciar às 8h30 todas as segundas, terças, quartas, quintas e sextas-feiras.

Informações de status da programação

Liste suas programações de escalonamento para ver o status delas. Uma programação de escalonamento tem as seguintes informações de status:

  • Status (state): o status atual da programação de dimensionamento, representado por um dos seguintes estados:
    • Pronta (READY): esta programação está pronta, mas ainda não está ativa. O escalonador automático está aguardando a próxima ocorrência desta programação.
    • Ativa (ACTIVE): essa programação está ativa no momento. O escalonador automático está tentando fornecer a esse MIG pelo menos as instâncias necessárias que esta programação determina.
    • Obsoleta (OBSOLETE): esta programação expirou. Ela não ficará ativa novamente. O escalonador automático ignora esta programação porque não haverá ocorrências futuras.
    • Desativada (DISABLED): esta programação não pode ser ativada porque foi desativada manualmente. O escalonador automático ignorará esta programação até que ela seja reativada.
  • Última ocorrência (lastStartTime): o carimbo de data/hora da última vez em que esta programação de escalonamento ficou ativa. Esta é a data e a hora reais da última ativação. Por exemplo, se uma programação de escalonamento com recorrência diária, um horário de início de 10h e uma duração de duas horas estiver desativada, e você reativar a programação às 11h de hoje, lastStartTime será hoje às 11h.
  • Próxima ocorrência (nextStartTime): o carimbo de data/hora da próxima vez em que esta programação está definida para ficar ativa.

Programações sobrepostas

Dependendo do horário de início, da recorrência, da duração e do fuso horário, duas ou mais programações de escalonamento podem se sobrepor. Quando há mais de uma programação ativa, o escalonador automático usa o maior número de instâncias de VM necessárias de todas as programações de escalonamento ativas. Isso garante que sempre haja capacidade suficiente para atender às necessidades de qualquer programação ativa. Por exemplo, se você tiver uma programação que aconteça todos os dias das 8h às 10h que requeira pelo menos 10 VMs, mas também tiver uma programação única de um dia inteiro que exija pelo menos 20 VMs, o escalonador automático ajustará o MIG para pelo menos 20 VMs nesse dia. Isso é útil quando você tem requisitos de capacidade recorrentes e regulares, mas às vezes precisa de mais para processar eventos únicos. Esse comportamento permite programar a capacidade sem se preocupar com a substituição por outras programações com requisitos de VM menores.

Além disso, um escalonador automático sempre fornece o maior número de instâncias de VM exigido por qualquer sinal de escalonamento automático ativo. Para mais informações, consulte Como usar uma política de escalonamento automático com vários sinais.

Horário de verão

Os detalhes do horário de verão variam de acordo com o fuso horário da IANA baseado no local da programação de escalonamento. Se o fuso horário da sua programação estiver observando o horário de verão, o horário de início será ajustado automaticamente para permanecer sincronizado com o horário do local selecionado. Por exemplo, se você criar uma programação de escalonamento que comece todos os dias às 7h para o fuso horário America/New_York, essa programação será iniciada sempre que for 7h em Nova York, usando o horário de verão do leste dos EUA ou o horário padrão do leste dos EUA.

As programações de dimensionamento sempre são executadas por toda a duração que você configurar, mas elas podem ter horários de início e término um pouco diferentes nos dias em que a observação do horário de verão é alterada. Isso ocorre porque as chaves de horário de verão têm períodos de transição que são ignorados no primeiro dia do horário de verão e que ocorrem duas vezes no último dia. Por exemplo, se o horário de verão do seu fuso horário começar às 2h e tiver uma transição de uma hora, o relógio mudará de 1h59min59s para 3h, de modo que o período de 2h para 2:59:59 é ignorado. Se o horário de verão para esse fuso horário terminar às 2h, o relógio muda de 2h59m59s para 2h, então o período de 2h para 2h59 é repetido. As instruções a seguir pressupõem que o fuso horário da sua programação usa uma transição de horário de verão de 1 hora.

No primeiro dia do horário de verão (quando uma hora é ignorada), as programações de dimensionamento têm as seguintes alterações:

  • As programações que estão ativas durante a hora ignorada ainda são executadas durante toda a duração, mas, para compensar pela hora ignorada, essas programações terminam uma hora mais tarde do que seu horário de término em dias sem transições de horário de verão. Normalmente, o horário de término de uma programação é a soma do horário de início e da duração dela. Mas, se o horário de verão pular uma hora enquanto uma programação estiver ativa e a duração e o tempo de início permanecerem constantes, o horário de término da programação será 1 hora a mais do que a soma do horário de início da programação e duração do anúncio.
  • As programações configuradas para serem iniciadas durante a hora ignorada também começam uma hora depois do horário de início em dias sem transições do horário de verão.

No último dia do horário de verão (quando uma hora é repetida), as programações de dimensionamento têm as seguintes alterações:

  • Programações ativas durante a hora de repetição ainda são executadas durante toda a duração, mas, para compensar pela hora de repetição, essas programações terminam uma hora antes da hora de término em dias sem transições do horário de verão. Normalmente, o horário de término de uma programação é a soma do horário de início e da duração dela. Mas, se o horário de verão repetir uma hora enquanto uma programação estiver ativa e a duração e o tempo de início permanecerem constantes, o horário de término da programação será 1 hora a menos do que a soma do horário de início da programação e duração do anúncio.
  • As programações que estão configuradas para iniciar durante o período de transição começam no horário configurado, mas não são reiniciadas durante o segundo, repetidas ocorrências do horário de início.

A maioria dos fusos horários que observa o horário de verão usa um período de transição de uma hora. Mas, se o fuso horário da sua programação usar um período de transição diferente, como o fuso horário Australia/Lord_Howe, que usa transições de 30 minutos, poderá haver o mesmo comportamento. Basta substituir 1 hora pelo tempo de transição relevante do horário de verão.

A seguir