Gerir escaladores automáticos

Se usar grupos de instâncias geridas (GIGs), leia este documento para saber como criar, configurar e eliminar o escalador automático do GIG.

Antes de começar

  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

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

Criar um redimensionador automático

A criação de um redimensionador automático é ligeiramente diferente consoante a política de redimensionamento automático que quer usar. Para ver instruções sobre como criar um redimensionador automático, consulte:

Receber informações sobre um escalador automático

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

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de vista geral desse grupo.
  3. Clique em Detalhes para ver os detalhes do grupo, incluindo as respetivas definições de dimensionamento automático.

gcloud

Use o comando instance-groups managed describe:

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME

Se um redimensionador automático estiver associado ao grupo, o comando devolve detalhes sobre o redimensionador automático:

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

REST

Use o instanceGroupManagers.get método. 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 escalador automático estiver associado ao grupo, o pedido devolve um link para o recurso do escalador automático.

200 OK

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

Para obter detalhes sobre o recurso de redimensionamento automático, use o método autoscalers.get para um GIG zonal ou o método regionAutoscalers.get para um GIG 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"
}

Atualizar um redimensionador automático

Quando atualiza um escalador automático, pode demorar algum tempo até as alterações serem propagadas, e pode demorar alguns minutos até as novas definições do escalador automático serem refletidas.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de vista geral desse grupo.
  3. Clique em Edit.
  4. Clique em Tamanho do grupo e redimensionamento automático para ver e atualizar as definições de redimensionamento automático do grupo.
  5. Clique em Guardar 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 redimensionador automático, consulte o artigo Criar um redimensionador automático.

REST

Para atualizar um recurso de escalamento automático, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional. Forneça um corpo do pedido 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 faz pedidos que modificam dados, é devolvido um recurso zoneOperations ou regionOperations, e pode consultar a operação para verificar o estado da sua alteração.

Usar a escala automática preditiva

O dimensionamento automático preditivo usa dados do histórico para dimensionar o grupo antes da carga prevista. Funciona melhor se a sua carga de trabalho cumprir os seguintes critérios:

  • A sua aplicação demora muito tempo a inicializar, por exemplo, se configurar um período de inicialização de mais de 2 minutos.
  • A sua carga de trabalho varia de forma previsível com ciclos diários ou semanais.

Para mais informações, consulte o artigo Ajustar a escala com base nas previsões.

Desativar ou restringir um redimensionador automático

Desative um escalador automático para impedir temporariamente que ajuste a escala do MIG ou restrinja o escalador automático para que só possa aumentar a escala do MIG. Esta funcionalidade é útil quando quer:

  • Investigue instâncias de VM sem interferência da redução da capacidade.
  • Reconfigure várias propriedades do seu MIG sem que as ações de escalabilidade sejam acionadas enquanto o 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.
  • Ativar a escalabilidade automática preditiva mais tarde. A escala automática preditiva requer uma política de escala automática para começar a recolher o histórico de carga no qual basear as previsões. O dimensionamento automático deteta este histórico mesmo quando o respetivo modo está definido como OFF.

Se e quando reativar o escalador automático, este volta automaticamente ao funcionamento normal.

Use as instruções fornecidas nesta secção para definir o modo do escalador automático. Estão disponíveis os seguintes modos:

  • Desativado: desativa o ajuste de escala automático temporariamente. Use este modo para impedir alterações automáticas do tamanho do MIG. A configuração do ajuste de escala automático permanece intacta para que possa reativar o ajuste de escala automático mais tarde.
  • Apenas aumentar a escala: restringe a escala automática apenas à adição de novas instâncias de VM. Use este modo para proteger o grupo de reduções e permitir que o grupo aprovisione VMs adicionais quando a carga aumenta.
  • Ativada: ativa todas as operações de escala automática de acordo com a respetiva política.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de vista geral desse grupo.
  3. Clique em Edit.
  4. Clique em Tamanho do grupo e redimensionamento automático para ver e atualizar as definições de redimensionamento automático do grupo.
  5. Na secção Ajuste de escala automático, defina o Modo de ajuste de escala automático para desativar ou restringir o ajuste de escala automático para o grupo, ou para reativar o ajuste de escala automático.
  6. Clique em Guardar quando terminar.

gcloud

Para desativar, restringir ou reativar um escalador automático, use o comando update-autoscaling com a flag --mode.

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

Substitua o seguinte:

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

REST

Para atualizar o modo de um recurso de escalamento automático, use o método autoscalers.patch para um MIG zonal ou o método regionAutoscalers.patch para um MIG regional. Forneça um corpo do pedido 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 dimensionamento automático, mas manter a respetiva configuração
    • ONLY_SCALE_OUT para restringir o escalador automático à adição de instâncias apenas
    • ON para reativar todas as atividades do redimensionador automático de acordo com a respetiva política

Quando define o modo de dimensionamento automático como ONLY_SCALE_OUT, o dimensionador automático comporta-se da seguinte forma:

  • O escalador automático não diminui o valor targetSize do MIG, independentemente das diminuições na carga ou das alterações à configuração do escalador automático.
  • Se alterar manualmente o tamanho de destino de um MIG zonal, o escalador automático substitui o tamanho indicado manualmente se for inferior ao tamanho recomendado pelo escalador automático.
  • Não pode alterar manualmente o tamanho de destino de um MIG regional.
  • Se definir o campo autoscalingPolicy.maxNumReplicas para um valor inferior ao valor targetSize atual do grupo enquanto o modo do dimensionamento automático estiver definido como ONLY_SCALE_OUT, o dimensionamento automático não reduz o número de instâncias no grupo. Como habitualmente, o escalador automático volta a calcular continuamente o tamanho recomendado do grupo e pode diminuir o tamanho recomendado do grupo para agir em conformidade com o novo máximo, mas o grupo não é reduzido.
  • O campo autoscalers.status comunica um aviso: "O ajuste de escala automático funciona num modo restrito: ONLY_SCALE_OUT".

Quando define o modo do ajuste automático para OFF, o ajuste automático comporta-se da seguinte forma:

  • O escalamento automático não altera o valor targetSize do MIG em resposta a alterações na carga ou na configuração do escalamento automático. Como habitualmente, o escalador automático volta a calcular continuamente o tamanho recomendado do grupo e pode diminuir o tamanho recomendado do grupo para estar em conformidade com o novo máximo, mas o grupo não é reduzido.
  • Pode alterar manualmente o tamanho alvo de um GIG zonal ou regional. Os valores minNumReplicas e maxNumReplicas da política de dimensionamento automático não afetam o tamanho que definiu.
  • Se desativar o dimensionamento automático para um MIG regional no qual a redistribuição proativa de instâncias estiver ativada e se o MIG tiver uma distribuição desigual de instâncias nas zonas, o grupo elimina ou cria proativamente instâncias nas respetivas zonas para restabelecer uma distribuição uniforme.
  • O campo autoscalers.status apresenta um aviso: "O ajuste de escala automático funciona num modo restrito: DESATIVADO".

Controlar a taxa de redução de escala de um escalador automático

Se as suas cargas de trabalho demorarem muitos minutos a inicializar, configure os controlos de redução para reduzir o risco de latência de resposta e interrupções devido a eventos de redução abruptos. Especificamente, se esperar rotineiramente um pico de carga pouco depois de uma diminuição da carga, pode limitar a taxa de redução. Limitar a taxa de redução vertical impede que o escalador automático reduza o tamanho de um MIG em mais instâncias de VM do que a sua carga de trabalho pode tolerar perder.

Configurar controlos de redução

A configuração dos controlos de redução é opcional. Por predefinição, os controlos de zoom não estão configurados. Quando não está configurado, o escalador automático continua a basear-se no respetivo mecanismo de estabilização predefinido. Ou seja, mantém o tamanho recomendado a um nível necessário para publicar anúncios durante o pico de carga, observado durante o período de estabilização.

Consola

Para configurar os controlos de redução de escala para um MIG com escalamento automático:

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome de um MIG com escalamento automático na lista para abrir a página de vista geral desse grupo.

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e redimensionamento automático para ver e atualizar as definições de redimensionamento automático do grupo.

  5. Na secção Controlos de redução da escala, selecione Ativar controlos de redução da escala.

  6. No campo Não reduzir mais do que, especifique o número máximo ou a percentagem de instâncias que podem ser removidas do grupo de cada vez.

  7. Na secção Ao longo de, especifique a frequência com que as instâncias podem ser removidas do grupo.

  8. Clique em Guardar.

gcloud

Pode configurar os controlos de redução quando cria um escalador automático ou quando atualiza um escalador automático.

Configurar controlos de redução quando cria um redimensionador automático

Defina controlos de redução quando criar um escalador automático para um MIG com o comando gcloud compute instance-groups managed set-autoscaling usando a flag --scale-in-control. Por exemplo, use o seguinte comando para configurar o dimensionamento 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

Configurar controlos de redução quando atualiza um redimensionador automático

Atualize os controlos de redução de escala no redimensionador automático existente de um GIG usando a flag --scale-in-control com o comando gcloud compute instance-groups managed update-autoscaling. Por exemplo, use o seguinte comando para definir controlos de redução vertical numa configuração de escalamento 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 atualizar.
  • MAX_SCALE_IN_REPLICAS: o número máximo de VMs que podem ser deduzidas do tamanho máximo, retirado do período especificado. O número especificado de instâncias de VM pode ser reduzido em todas ao mesmo tempo, pelo que o seu serviço deve conseguir suportar a perda deste número de VMs ao mesmo tempo. Pode especificar um número de VMs ou uma percentagem. Use o sinal % para percentagens; por exemplo: 50%.
  • TIME_WINDOW: período de tempo de acompanhamento a partir do qual se vai obter o tamanho máximo. O ajuste automático não reduzirá o número de réplicas mais do que o número máximo permitido a partir do tamanho máximo registado durante este período. Especifique este valor em segundos num intervalo de [60, 3600].

Por exemplo, suponhamos que define o período para 1800 segundos (30 minutos). Ao calcular o tamanho recomendado atual para o MIG, o escalador automático usa a seguinte lógica:

  • Tome o tamanho máximo dos últimos 30 minutos (por exemplo, 100 VMs)
  • Tome max-scaled-in-replicas (por exemplo, 10 VMs)
  • Defina o limite inferior do tamanho recomendado para: tamanho máximo menos max-scaled-in-replicas (100 - 10 = 90 VMs)

REST

Configure os controlos de redução definindo os campos maxScaledInReplicas e timeWindowSec na estrutura autoscalingPolicy.scaleInControl num recurso de escalamento automático zonal ou regional. Não existem valores predefinidos para estes campos. Tem de fornecer valores para ambos os campos.

Pode configurar os controlos de redução quando cria um escalador automático ou quando atualiza um escalador automático.

Configurar controlos de redução quando cria um redimensionador 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 mais informações sobre a criação de um escalador automático, consulte os seguintes artigos:

Configurar controlos de redução quando atualiza um redimensionador 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 redimensionador automático a criar. Pode dar ao seu escalador automático o nome do MIG que o vai usar ou dar-lhe outro nome.
  • INSTANCE_GROUP_NAME: o nome do MIG ao qual adicionar o redimensionador automático. 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 alvo recomendado máximo, retirado do período de análise retrospetiva especificado. O número especificado de instâncias de VM pode ser dimensionado de uma só vez, pelo que o seu serviço deve poder perder este número de VMs de uma só vez. Pode especificar um número de VMs ou uma percentagem. Use o elemento maxScaledInReplicas.percentage para especificar um valor percentual.
  • TIME_WINDOW: o período de tempo anterior a partir do qual se deve obter o tamanho recomendado máximo. O ajuste automático não vai reduzir o número de réplicas mais do que o número máximo permitido a partir do tamanho máximo recomendado, medido durante este período de análise. Especifique este valor em segundos no intervalo de 60 e 3600; por exemplo: 1800.

Por exemplo, suponhamos que define o período para 1800 segundos (30 minutos). Ao calcular o tamanho recomendado atual para o MIG, o escalador automático usa a seguinte lógica:

  • Tome o tamanho máximo dos últimos 30 minutos (por exemplo, 100 VMs)
  • Tome max-scaled-in-replicas (por exemplo, 10 VMs)
  • Defina o limite inferior do tamanho recomendado para: tamanho máximo menos max-scaled-in-replicas (100 - 10 = 90 VMs)

Para mais informações sobre o funcionamento dos controlos de aumento da escala, consulte o artigo Compreender as decisões do escalador automático.

A obter a configuração atual dos controlos de redução

Para obter a configuração atual dos controlos de redução, consulte o artigo Obter informações sobre um escalador automático.

Remover controlos de redução

Pode remover os controlos de redução para anular as restrições na sincronização e na magnitude das operações de redução através da CLI Google Cloud ou da API Compute Engine.

Sem controlos de redução, o dimensionamento automático continua a basear-se no respetivo mecanismo de estabilização predefinido. Especificamente, mantém um tamanho recomendado a um nível necessário para publicar durante o pico de carga, observado durante o período de estabilização.

Consola

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

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome de um MIG com escalamento automático na lista para abrir a página de vista geral desse grupo.

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e redimensionamento automático para ver e atualizar as definições de redimensionamento automático do grupo.

  5. Na secção Controlos de redução da escala, desmarque a caixa de verificação Ativar controlos de redução da escala.

  6. Clique em Guardar.

gcloud

Remova os controlos de redução da escala com a flag --clear-scale-in-control com o comando gcloud compute instance-groups managed update-autoscaling. Por exemplo, use o seguinte comando para remover os controlos de redução da escala da configuração de escala automática para example-group:

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

REST

Para remover os controlos de redução, use o método autoscalers.patch para um GIG zonal ou o método regionAutoscalers.patch para um GIG regional e forneça uma configuração vazia para os controlos 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 escalador automático a atualizar. Para obter uma lista dos escaladores automáticos existentes e dos respetivos grupos de instâncias geridos de destino, use o método autoscalers.aggregatedList.

Eliminar um redimensionador automático

Pode eliminar permanentemente o recurso de ajuste automático e o respetivo histórico. Se quiser parar temporariamente o ajuste de escala automático e manter o recurso de ajuste de escala automático e a respetiva configuração e histórico, desative o ajuste de escala automático.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique no nome de um MIG na lista para abrir a página de vista geral desse grupo.

  3. Clique em Edit.

  4. Clique em Tamanho do grupo e redimensionamento automático para ver e atualizar as definições de redimensionamento automático do grupo.

  5. Na lista Modo de dimensionamento automático, selecione Eliminar configuração do dimensionamento automático para parar o dimensionador automático e eliminar a respetiva configuração.

  6. Clique em Guardar quando terminar.

gcloud

Use o comando stop-autoscaling para parar um escalador automático e eliminar a respetiva configuração.

gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME

A paragem de um redimensionador automático elimina-o do MIG. Se quiser reiniciar o escalador automático, tem de o recriar através do comando set-autoscaling.

Se eliminar um MIG através da CLI gcloud, todos os escaladores automáticos anexados ao MIG também são eliminados.

REST

Para parar um escalador automático e eliminar a respetiva configuração, use o método autoscalers.delete para um MIG zonal ou o método regionAutoscalers.delete para um MIG regional.

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

Feedback

Queremos saber mais sobre os seus exemplos de utilização, desafios e feedback sobre o ajuste de escala automático. Partilhe o seu feedback com a nossa equipa através do endereço de email mig-discuss@google.com.

O que se segue?