Como usar o alerta de uso da CPU de monitoramento do GCP para gerar uma nova instância de VM (implementando escalonamento automático personalizado)

Como usar o alerta de uso da CPU de monitoramento do GCP para gerar uma nova instância de VM (implementando escalonamento automático personalizado)

Tenho 2 VMs do GCP conectadas a um balanceador de carga (é um grupo de instâncias não gerenciadas).

Gostaria de ativar uma nova VM sempre que receber um alerta de uso da CPU (uso superior a 70%). Este é um cenário personalizado e não posso usar o escalonamento automático integrado do GCP.

Os 2 cenários a seguir são possíveis? Procurando alguma direção aqui.

  1. Meu código personalizado gerará uma nova VM e implantará o código personalizado na instância.
  2. Posso anexar a nova VM ao LB posteriormente?

Responder1

Na máquina em que você está executando o código personalizado que monitora o uso da CPU para as VMs do grupo de instâncias gerenciadas, você pode usar oAPI Compute Engine, ou gcloud(doSDK da nuvem), autenticando-se com ochavede umconta de serviçocom ocomputar.adminfunção ou apenas por meio dos metadados da instância, se você estiver executando-a em uma VM GCE no seu projeto com ocomputar-rwalias de escopo de acesso para criar scripts de criação de instância e adição ao seu grupo de instâncias não gerenciadas.

Se não estiver usando imagens personalizadas, você poderá ter o ambiente desejado para a VM em umscript de inicializaçãoque você armazenou em umIntervalo do GCSno projeto se você também der às suas VMs oarmazenamento-roalias do escopo de acesso.

Por exemplo, com Bash em uma VM GCE comcomputar-rwque rastreia os usos da CPU:

#!/bin/bash
set -e
# To be run when a scale-up is requested
IG=your-unmanaged-ig
ZONE=europe-west1-c  # (or whichever zone you'd want to spin up the VMs in)
STARTUP_SCRIPT=gs://your-gcs-bucket/your-custom-startup-script.sh  # (previously uploaded to a bucket the GCE instance can access)

# Gets the list of VMs in the IG, then increases/adds the suffix number for the new one:
lastVM="$(gcloud compute instance-groups unmanaged list-instances "$IG" --zone="$ZONE" --format='get(instance)' | grep -Po '(?<!\\)[[:alnum:]-]+$' | sort -n | tail -n1)"
lastVMno=$(grep -Eo '[0-9]+$' <<< "$lastVM" || true)
newVM="$(sed -r 's/[0-9]*$/'"$((lastVMno + 1))"'/' <<< "$lastVM")"
# Creates the new VM
gcloud compute instances create "$newVM" --zone="$ZONE" --metadata=startup-script-url="$STARTUP_SCRIPT"
# (wait for eg. the post-creation setup from your startup script to finish, then add it to the load-balanced IG)
sleep 5m  
gcloud compute instance-groups unmanaged add-instances $IG --instances="$newVM"

informação relacionada