Gerenciando escalonadores automáticos


Se você usa grupos de instâncias gerenciadas (MIGs) , leia este documento para saber como criar, configurar e excluir o escalonador automático do seu MIG.

Antes de começar

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

Criando um escalonador automático

A criação de um escalonador automático é um pouco diferente dependendo da política de escalonamento automático que você deseja usar. Para obter instruções sobre como criar um escalonador automático, consulte:

Obtendo informações sobre um escalonador automático

Para obter mais informações sobre um escalonador automático específico, use o console, o subcomando gcloud compute instance-groups managed describe ou o método get para um recurso REST do escalonador automático zonal ou regional .

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 para abrir a página de visão geral desse grupo.
  3. Clique em Detalhes para visualizar os detalhes do grupo, incluindo suas configurações de escalonamento automático.

gcloud

Use o comando instance-groups managed describe :

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME

Se um escalonador automático estiver anexado ao grupo, o comando retornará detalhes sobre o escalonador automático:

...
autoscaler:
  autoscalingPolicy:
    coolDownPeriodSec: 60
    cpuUtilization:
      utilizationTarget: 0.6
    maxNumReplicas: 20
    minNumReplicas: 10
    mode: ON
    scaleInControl:
      timeWindowSec: 300
      maxScaledInReplicas:
        fixed: 3
        calculated: 3
...

DESCANSAR

Use o método instanceGroupManagers.get . Para um MIG regional, substitua zones/ ZONE por regions/ REGION .

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

Se um escalonador automático estiver anexado ao grupo, a solicitação retornará um link para o recurso do escalonador automático.

200 OK

{
  ...
  "status": {
    ...
    "autoscaler": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group"
  },
}

Para recuperar detalhes sobre o recurso do autoescalador, use o método autoscalers.get para um MIG zonal ou o método regionAutoscalers.get para um MIG regional.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/example-autoscaler
200 OK

{
 "kind": "compute#autoscaler",
 "id": "8744945839459481093",
 "creationTimestamp": "2018-09-28T13:02:50.553-07:00",
 "name": "example-group",
 "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group",
 "autoscalingPolicy": {
  "minNumReplicas": 10,
  "maxNumReplicas": 20,
  "mode": "ON",
  "scaleInControl": {
    "timeWindowSec": 60,
    "maxScaledInReplicas": {
      "calculated": 3,
      "percent": 15
    }
  },
  "coolDownPeriodSec": 60,
  "cpuUtilization": {
   "utilizationTarget": 0.6
  }
 },
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c",
 "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group",
 "status": "ACTIVE"
}

Atualizando um escalonador automático

Quando você atualiza um escalonador automático, pode levar algum tempo para que as alterações sejam propagadas e pode levar alguns minutos até que as novas configurações do escalonador automático sejam refletidas.

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 para abrir a página de visão geral desse grupo.
  3. Clique em Editar para visualizar e atualizar a configuração atual do grupo, incluindo suas configurações de escalonamento automático.
  4. Clique em Salvar quando terminar.

gcloud

Use o comando update-autoscaling .

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --max-num-replicas MAX_NUM ...

Para obter instruções sobre como criar um escalonador automático, consulte Criando um escalonador automático .

DESCANSAR

Para atualizar um recurso do autoescalador, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional. Forneça um corpo de solicitação que contenha a nova configuração.

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler

{
 "autoscalingPolicy": {
  "maxNumReplicas": 20
 }
}
200 OK

{
 "kind": "compute#operation",
 "id": "4244494732310423322",
 "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603",
 "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f",
 "operationType": "compute.autoscalers.patch",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler",
 "targetId": "340775527929467142",
 "status": "RUNNING",
 ...
}

Quando você executa qualquer solicitação que modifique dados, um recurso zoneOperations ou regionOperations é retornado e você pode consultar a operação para verificar o status da sua alteração.

Usando escalonamento automático preditivo

O escalonamento automático preditivo usa dados históricos para expandir seu grupo antes da carga prevista. Funciona melhor se sua carga de trabalho atender aos seguintes critérios:

  • Seu aplicativo demora muito para inicializar — por exemplo, se você configurar um período de inicialização de mais de 2 minutos.
  • Sua carga de trabalho varia de forma previsível com ciclos diários ou semanais.

Para obter mais informações, consulte Dimensionamento baseado em previsões .

Desativar ou restringir um escalonador automático

Desative um escalonador automático para impedir temporariamente que ele dimensione seu MIG ou restrinja seu escalonador automático para que ele possa dimensionar apenas seu MIG. Este recurso é útil quando você deseja:

  • Investigue instâncias de VM sem interferência de expansão.
  • Reconfigure múltiplas propriedades do seu MIG sem que ações de escalonamento sejam acionadas enquanto seu grupo estiver apenas parcialmente reconfigurado.
  • Mantenha a capacidade do MIG para uma reversão rápida enquanto redireciona uma carga de trabalho para um novo MIG.
  • Ative o escalonamento automático preditivo posteriormente. O escalonamento automático preditivo requer uma política de escalonamento automático para começar a coletar o histórico de carga no qual basear as previsões. O autoescalador detecta esse histórico mesmo quando seu modo está definido como OFF .

Se e quando você reativar o escalonador automático, ele retornará automaticamente à operação normal.

Use as instruções fornecidas nesta seção para definir o modo do autoescalador. Os seguintes modos estão disponíveis:

  • Desligado : desativa temporariamente o escalonamento automático. Use este modo para evitar alterações automáticas no tamanho do MIG. A configuração do escalonamento automático permanece intacta para que você possa reativar o escalonamento automático mais tarde.
  • Apenas expansão horizontal : restrinja o escalonamento automático apenas à adição de novas instâncias de VM. Use esse modo para proteger o grupo contra redução e permitir que o grupo provisione VMs extras quando a carga aumentar.
  • Ativado : ativa todas as operações de escalonamento automático de acordo com sua política.

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 para abrir a página de visão geral desse grupo.
  3. Clique em Editar para visualizar a configuração atual do grupo, incluindo suas configurações de escalonamento automático.
  4. Em Autoscaling , defina o modo Autoscaling para desabilitar ou restringir o autoscaling para o grupo ou para reativar o autoscaler.
  5. Clique em Salvar quando terminar.

gcloud

Para desabilitar, restringir ou reativar um escalonador automático, use o comando update-autoscaling com o sinalizador --mode .

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --mode MODE 

Substitua o seguinte:

  • MODE :
    • off para desativar o escalonador automático, mas manter sua configuração
    • only-scale-out para restringir o escalonador automático à adição apenas de instâncias de VM
    • on reativar todas as atividades do escalonador automático de acordo com sua política

DESCANSAR

Para atualizar o modo de um recurso do autoescalador, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional. Forneça um corpo de solicitação que inclua a propriedade autoscalingPolicy.mode .

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler

{
  "autoscalingPolicy": {
    "mode":"MODE"
  }
}

Substitua o seguinte:

  • MODE :
    • OFF para desativar o escalonador automático, mas manter sua configuração
    • ONLY_SCALE_OUT para restringir o escalonador automático à adição apenas de instâncias
    • ON para reativar todas as atividades do escalonador automático de acordo com sua política

Quando você define o modo de escalonamento automático como ONLY_SCALE_OUT , o escalonador automático se comporta da seguinte maneira:

  • O autoescalador não diminui o valor targetSize do MIG, independentemente de diminuições na carga ou alterações na configuração do autoescalador.
  • Se você alterar manualmente o tamanho de destino de um MIG zonal, o escalonador automático substituirá o tamanho fornecido manualmente se ele for menor que o tamanho recomendado pelo escalonador automático.
  • Você não pode alterar manualmente o tamanho alvo de um MIG regional.
  • Se você definir o campo autoscalingPolicy.maxNumReplicas como um valor inferior ao valor targetSize atual do grupo enquanto o modo do escalonador automático estiver definido como ONLY_SCALE_OUT , o escalonador automático não reduzirá o número de instâncias no grupo. Como de costume, o escalonador automático recalcula continuamente o tamanho recomendado do grupo e pode diminuir o tamanho recomendado do grupo para cumprir o novo máximo, mas o grupo não é dimensionado.
  • O campo autoscalers.status informa um aviso: "O escalonamento automático opera em modo restrito: ONLY_SCALE_OUT."

Quando você define o modo do autoescalador como OFF , o autoescalador se comporta da seguinte maneira:

  • O autoescalador não altera o valor targetSize do MIG em resposta a alterações na carga ou na configuração do autoescalador. Como de costume, o escalonador automático recalcula continuamente o tamanho recomendado do grupo e pode diminuir o tamanho recomendado do grupo para cumprir o novo máximo, mas o grupo não é dimensionado.
  • Você pode alterar manualmente o tamanho alvo de um MIG zonal ou regional. Os valores minNumReplicas e maxNumReplicas da política de escalonamento automático não afetam o tamanho definido.
  • Se você desativar o escalonamento automático para um MIG regional no qual a redistribuição proativa de instâncias está habilitada e se o MIG tiver uma distribuição desigual de instâncias entre zonas, o grupo excluirá ou criará proativamente instâncias em suas zonas para restabelecer uma distribuição uniforme.
  • O campo autoscalers.status informa um aviso: "O escalonamento automático opera em modo restrito: DESLIGADO."

Controlando a taxa de redução de um escalonador automático

Se as suas cargas de trabalho demorarem muitos minutos a inicializar, configure controlos de redução vertical para reduzir o risco de latência de resposta e interrupções devido a eventos abruptos de redução vertical. Especificamente, se você espera rotineiramente um pico de carga logo após um declínio na carga, poderá limitar a taxa de redução. Limitar a taxa de redução evita que o escalonador automático reduza o tamanho de um MIG em mais instâncias de VM do que sua carga de trabalho pode tolerar perder.

Configurando controles de redução vertical

A configuração de controles de redução horizontal é opcional. Por padrão, os controles de redução não estão configurados. Quando não configurado, o escalonador automático ainda depende de seu mecanismo de estabilização padrão. Ou seja, mantém o tamanho recomendado em um nível necessário para atender o pico de carga, observado durante o período de estabilização.

Console

Para configurar controles de redução vertical para um MIG com escalonamento automático:

  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 com escala automática na lista para abrir a página de visão geral desse grupo.

  3. Clique em Editar para visualizar a configuração atual do grupo, incluindo suas configurações de escalonamento automático.

  4. Em Dimensionamento automático , clique em Controles de redução e selecione Habilitar controles de redução .

  5. Em Não reduzir mais que , especifique o número máximo ou a porcentagem de instâncias que podem ser removidas do grupo por vez.

  6. Em Ao longo de , especifique com que frequência as instâncias podem ser removidas do grupo.

  7. Clique em Salvar .

gcloud

Você pode configurar controles de redução ao criar um autoescalador ou ao atualizar um autoescalador.

Configurando controles de redução ao criar um escalonador automático

Defina controles de redução ao criar um escalonador automático para um MIG usando a sinalização --scale-in-control com o comando gcloud compute instance-groups managed set-autoscaling . Por exemplo, use o seguinte comando para configurar o escalonamento automático para um example-group :

gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME \
    --target-cpu-utilization 0.6 \
    --max-num-replicas 50 \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

Configurando controles de redução ao atualizar um escalonador automático

Atualize os controles de redução vertical no escalonador automático existente de um MIG usando o sinalizador --scale-in-control com o comando gcloud compute instance-groups managed update-autoscaling . Por exemplo, use o seguinte comando para definir controles de redução em uma configuração de escalonamento automático existente para example-group :

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
    --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW

Substitua o seguinte:

  • INSTANCE_GROUP_NAME : o nome do MIG a ser atualizado.
  • MAX_SCALE_IN_REPLICAS : o número máximo de VMs que podem ser deduzidas do tamanho do pico, obtido na janela de tempo final especificada. O número especificado de instâncias de VM pode ser dimensionado de uma só vez, portanto, seu serviço deve ser capaz de perder tantas VMs de uma só vez. Você pode especificar um número de VMs ou uma porcentagem. Use o sinal % para porcentagens; por exemplo: 50% .
  • TIME_WINDOW : janela de tempo final para obter o tamanho do pico. O escalonamento automático não será dimensionado mais do que o número máximo permitido de réplicas do tamanho do pico obtido durante esse período de tempo final. Especifique esse valor em segundos dentro de um intervalo [60, 3600].

Por exemplo, digamos que você definiu a janela de tempo para 1.800 segundos (30 minutos). Ao calcular o tamanho recomendado atual para o MIG, o autoescalador usa a seguinte lógica:

  • Pegue o tamanho do pico dos últimos 30 minutos (por exemplo, 100 VMs)
  • Pegue max-scaled-in-replicas (por exemplo, 10 VMs)
  • Defina o limite inferior do tamanho recomendado como: tamanho de pico menos max-scaled-in-replicas (100 - 10 = 90 VMs)

DESCANSAR

Configure controles de redução vertical definindo os campos maxScaledInReplicas e timeWindowSec na estrutura autoscalingPolicy.scaleInControl em um recurso de escalonador automático zonal ou regional . Não há valores padrão para esses campos; você deve fornecer valores para ambos os campos.

Você pode configurar controles de redução ao criar um autoescalador ou ao atualizar um autoescalador.

Configurando controles de redução ao criar um escalonador automático

Para um MIG zonal, use o método autoscalers.insert . Para um MIG regional, use o método regionAutoscalers.insert .

POST
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers

{
  "name": "AUTOSCALER_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME",
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

Para obter mais informações sobre como criar um escalonador automático, consulte os seguintes artigos:

Configurando controles de redução ao atualizar um escalonador automático

Para um MIG zonal, use o método autoscalers.patch . Para um MIG regional, use o método regionAutoscalers.patch .

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleInControl": {
      "maxScaledInReplicas": {
           "fixed": MAX_SCALE_IN_REPLICAS
      },
      "timeWindowSec": TIME_WINDOW
    }
  }
}

Substitua o seguinte:

  • AUTOSCALER_NAME : o nome do escalonador automático a ser criado. Você pode nomear seu autoescalador com o nome do MIG que o utilizará ou nomeá-lo de outra forma.
  • INSTANCE_GROUP_NAME : o nome do MIG ao qual adicionar o autoescalador. Para um MIG regional, substitua zones/ ZONE por regions/ REGION .
  • MAX_SCALE_IN_REPLICAS : o número máximo de VMs que podem ser deduzidas do tamanho máximo de destino recomendado, obtido na janela de tempo final especificada. O número especificado de instâncias de VM pode ser dimensionado de uma só vez, portanto, seu serviço deve ser capaz de perder tantas VMs de uma só vez. Você pode especificar um número de VMs ou uma porcentagem. Use maxScaledInReplicas.percentage para especificar um valor percentual.
  • TIME_WINDOW : a janela de tempo final para obter o tamanho de pico recomendado. O escalonamento automático não será dimensionado mais do que o número máximo permitido de réplicas a partir do tamanho máximo recomendado obtido durante esse período de tempo final. Especifique esse valor em segundos dentro de um intervalo [60, 3600]; por exemplo: 1800 .

Por exemplo, digamos que você definiu a janela de tempo para 1.800 segundos (30 minutos). Ao calcular o tamanho recomendado atual para o MIG, o autoescalador usa a seguinte lógica:

  • Pegue o tamanho do pico dos últimos 30 minutos (por exemplo, 100 VMs)
  • Pegue max-scaled-in-replicas (por exemplo, 10 VMs)
  • Defina o limite inferior do tamanho recomendado como: tamanho de pico menos max-scaled-in-replicas (100 - 10 = 90 VMs)

Para obter mais informações sobre como funcionam os controles de redução, consulte Noções básicas sobre decisões do escalonador automático .

Obtendo a configuração atual dos controles de redução vertical

Para obter a configuração atual dos controles de redução vertical, consulte Obtendo informações sobre um escalonador automático .

Removendo controles de redução vertical

Você pode remover os controles de redução vertical para eliminar restrições sobre o tempo e a magnitude das operações de redução vertical usando a CLI do Google Cloud ou a API Compute Engine.

Sem controles de redução, o escalonador automático ainda depende de seu mecanismo de estabilização padrão. Especificamente, mantém um tamanho recomendado em um nível necessário para atender aos picos de carga, observados durante o período de estabilização.

Console

Para remover controles de redução de escala para um MIG com escalonamento automático:

  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 com escala automática na lista para abrir a página de visão geral desse grupo.

  3. Clique em Editar para visualizar a configuração atual do grupo, incluindo suas configurações de escalonamento automático.

  4. Em Autoscaling , clique em Controles de redução e desmarque a caixa de seleção Habilitar controles de redução .

  5. Clique em Salvar .

gcloud

Remova os controles de redução vertical usando a sinalização --clear-scale-in-control com o comando gcloud compute instance-groups managed update-autoscaling . Por exemplo, use o seguinte comando para remover controles de redução da configuração de escalonamento automático para example-group :

gcloud compute instance-groups managed update-autoscaling example-group \
    --clear-scale-in-control

DESCANSAR

Para remover controles de redução, use o método autoscalers.patch para um MIG zonal ou use o método regionAutoscalers.patch para um MIG regional e forneça configuração vazia para controles de redução.

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

{
  "autoscalingPolicy": {
    "scaleInControl": null
  }
}

Substitua o seguinte:

  • AUTOSCALER_NAME : o nome do escalonador automático a ser atualizado. Para obter uma lista de escalonadores automáticos existentes e seus MIGs de destino, use o método autoscalers.aggregatedList .

Excluindo um escalonador automático

Você pode excluir permanentemente o recurso do escalonador automático e seu histórico. Se você quiser interromper temporariamente o escalonamento automático e manter o recurso do escalonador automático e sua configuração e histórico, desative o escalonador automático.

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 para abrir a página de visão geral desse grupo.

  3. Clique em Editar para visualizar a configuração atual do grupo, incluindo suas configurações de escalonamento automático.

  4. Em Autoscaling , na lista suspensa Modo de escalonamento automático, selecione Excluir configuração de escalonamento automático para interromper o escalonador automático e excluir sua configuração.

  5. Clique em Salvar quando terminar.

gcloud

Use o comando stop-autoscaling para interromper um escalonador automático e excluir sua configuração.

gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME

Interromper um autoescalador o exclui do MIG. Se desejar reiniciar o escalonador automático, você deverá recriá-lo usando o comando set-autoscaling .

Se você excluir um MIG usando a CLI gcloud, todos os escalonadores automáticos anexados ao MIG também serão excluídos.

DESCANSAR

Para interromper um escalonador automático e excluir sua configuração, use o método autoscalers.delete para um MIG zonal ou use o método regionAutoscalers.delete para um MIG regional.

 DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME

Opinião

Queremos saber mais sobre seus casos de uso, desafios e feedback sobre escalonamento automático. Compartilhe seus comentários com nossa equipe em mig-discuss@google.com .

O que vem a seguir