如何使用 GCP 监控 CPU 使用率警报来启动新的 VM 实例(实现自定义自动缩放)

如何使用 GCP 监控 CPU 使用率警报来启动新的 VM 实例(实现自定义自动缩放)

我有 2 个 GCP VM 连接到负载均衡器(它是一个非托管实例组)。

我希望每当我收到 CPU 使用率警报(使用率高于 70%)时启动新的虚拟机。这是一个自定义场景,我无法使用 GCP 的内置自动扩展功能。

以下两种情况可能吗?在这里寻找一些方向。

  1. 我的自定义代码将启动一个新的 VM 并在实例上部署自定义代码。
  2. 之后我可以把新的 VM 附加到 LB 吗?

答案1

在运行自定义代码以监控托管实例组虚拟机的 CPU 使用率的计算机上,您可以使用计算引擎 APIgcloud(从云端 SDK)通过钥匙服务帐户计算管理员角色,或者只是通过实例元数据(如果你在项目中的 GCE VM 中运行它)计算-rw访问范围别名,为实例创建和添加到非托管实例组编写脚本。

如果你不使用自定义镜像,你可能可以在启动脚本您已存储在GCS 铲斗在项目中,如果你还给你的虚拟机存储-RO访问范围别名。

例如,在 GCE VM 中使用 Bash计算-rw跟踪 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"

相关内容