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에도 제공하는 경우 프로젝트에서스토리지로액세스 범위 별칭.

예를 들어 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"

관련 정보