GCP モニタリング CPU 使用率アラートを使用して新しい VM インスタンスを起動する方法 (カスタム自動スケーリングの実装)

GCP モニタリング CPU 使用率アラートを使用して新しい VM インスタンスを起動する方法 (カスタム自動スケーリングの実装)

ロードバランサに接続された 2 つの GCP VM があります (これは管理されていないインスタンス グループです)。

CPU 使用率アラート (使用率が 70% を超える) を受信するたびに、新しい VM を起動したいと思います。これはカスタマイズされたシナリオであり、GCP の組み込みの自動スケーリングは使用できません。

次の 2 つのシナリオは可能ですか? ここで何らかの指示を求めています。

  1. 私のカスタム コードは新しい VM を起動し、インスタンスにカスタム コードをデプロイします。
  2. 後から新しい VM を LB に接続できますか?

答え1

マネージドインスタンスグループVMのCPU使用率を監視するカスタムコードを実行しているマシンでは、コンピューティング エンジン API、またはgcloudクラウドSDK)で認証することにより、サービスアカウントとともにコンピューティング管理者ロールまたはインスタンスメタデータを通じて、プロジェクト内のGCE VMで実行している場合は、計算-rwアクセス スコープ エイリアスを使用して、インスタンスの作成と非管理対象インスタンス グループへの追加をスクリプト化します。

カスタムイメージを使用していない場合は、VMに希望する環境を起動スクリプトあなたが保存したGCSバケットプロジェクトでは、VMにもストレージ-roアクセス スコープ エイリアス。

たとえば、GCE VMのBashでは計算-rwCPU 使用率を追跡します:

#!/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"

関連情報