IT Info

(Google Cloud) Cloud Scheduler + Compute Engine API 활용한 인스턴스 자동 키고 끄기

Jan92 2025. 10. 18. 13:02
반응형

(Google Cloud) Cloud Scheduler + Compute Engine API 활용한 인스턴스 자동 키고 끄기

 

구글 클라우드 VM 인스턴스에 주식 자동매매 프로그램을 실행시키고 있는데, 자동매매의 경우 시장 시간에만 돌아가면 되기 때문에 그 외 시간은 서버를 켜둘 필요가 없었습니다.

처음 국내 주식시장만 대상으로 할 때는 '인스턴스' 기능을 활용하여 서버를 자동으로 키고 끄도록 설정했는데, 야간에 미국시장에도 프로그램을 실행하게 되면서 '인스턴스 일정' 기능만으로는 서버를 완전히 자동으로 키고 끌 수 없게 되어 다른 방안을 찾아보게 되었습니다.

 

 

vm instance policy

(google cloud 정책상 하나의 인스턴스에는 여러 개의 '인스턴스 일정'을 적용할 수 없도록 되어 있습니다.)

 

 

'인스턴스 일정' 기능을 대신해 vm instance를 자동으로 키고 끄기 위해 찾은 방법은 'Cloud Scheduler' + 'Compute Engine API'를 활용하는 간단한 방법인데요.

 

다만 Cloud Scheduler의 경우 결제 계정당 매월 3개의 작업(scheduler)이 무료로 제공되며, 4개째 scheduler 부터는 월 $0.10 요금이 부가되는 유료 서비스입니다.

자세한 내용은 아래 Google Cloud Scheduler 가격 책정에서 확인할 수 있습니다.

 

https://cloud.google.com/scheduler/pricing?hl=ko

(Cloud Scheduler 가격 책정)

 

 


Cloud Scheduler + Compute Engine API 활용 VM 인스턴스 자동으로 켜고 끄기

Compute Engine API / instances.start

 

먼저 'Compute Engine API'에서는 gcp 가상 머신과 관련된 다양한 기능이 있는데요.

HTTP 요청을 통해 vm instance를 켜고 끌 수 있는 기능도 존재하며, 해당 요청을 Cloud Scheduler를 통해 특정 시간에 보냄으로써 인스턴스를 켜고 끄도록 할 수 있습니다.

 

## 인스턴스 시작
POST https://compute.googleapis.com/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/start

## 인스턴스 중지
POST https://compute.googleapis.com/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/stop

 

 

 

IAM 계정 생성

 

이어서 IAM(Identity and Acess Management)으로 이동하여 인스턴스 시작 및 중지 요청을 보낼 수 있는 권한을 가진 계정을 생성합니다.

(IAM 및 관리자 -> 서비스 계정 -> 서비스 계정 만들기)

 

 

 

IAM 계정 역할 지정

그리고 생성된 계정에 'Compute 인스턴스 관리자(v1)' 역할을 지정합니다.

 

 

 

Cloud Scheduler 작업 생성

계정을 생성했으면 'Cloud Scheduler'로 이동하여 작업(scheduler)을 만들어줍니다.

작업 이름을 정의하고 리전, 빈도 및 시간대를 설정합니다.

 

 

 

Cloud Scheduler 실행 구성 설정

이어서 '실행 구성' 부분에서는 인스턴스 시작 또는 중지 API URL을 입력하고 본문 부분은 입력하지 않고 비워둡니다.

그리고 인증 헤더를 'OAuth 토큰 추가'로 설정하고 서비스 계정은 위에서 생성된 Compute 인스턴스 관리자 역할이 부여된 계정을 선택합니다.

 

범위의 경우 아래 설명의 내용처럼 '/auth/cloud-platform' 범위가 기본으로 설정되는데, 인스턴스 실행 및 중지는 해당 범위에서 승인 가능한 작업이기 때문에 따로 설정하지 않아도 정상적으로 동작합니다.

 

마지막으로 '설정 구성(선택사항)' 재시도 관련 설정은 따로 필요 없었기 때문에 설정하지 않고 작업을 만들었습니다.

 

 

이렇게 되면 'Cloud Scheduler' + 'Compute Engine API' 활용하여 자동으로 vm 인스턴스를 켜고 끌 수 있게 됩니다.

추가로 기존에 사용했던 '인스턴스 일정' 기능의 경우 지정된 시간에서 실제 실행되기까지 최대 20분의 여유 시간을 줘야 하는 반면, 해당 방식은 설정된 시간에 바로 요청이 가기 때문에 여유 시간을 많이 잡을 필요가 없다는 장점이 있습니다.

반응형