ロードバランサに接続された 2 つの GCP VM があります (これは管理されていないインスタンス グループです)。
CPU 使用率アラート (使用率が 70% を超える) を受信するたびに、新しい VM を起動したいと思います。これはカスタマイズされたシナリオであり、GCP の組み込みの自動スケーリングは使用できません。
次の 2 つのシナリオは可能ですか? ここで何らかの指示を求めています。
- 私のカスタム コードは新しい VM を起動し、インスタンスにカスタム コードをデプロイします。
- 後から新しい 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"