arrow_back

Cloud Spanner용 자동 확장 처리 도구를 활용한 워크로드 탄력성 달성

로그인 가입
700개 이상의 실습 및 과정 이용하기

Cloud Spanner용 자동 확장 처리 도구를 활용한 워크로드 탄력성 달성

실습 1시간 universal_currency_alt 크레딧 1개 show_chart 입문
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
700개 이상의 실습 및 과정 이용하기

SCBL069

개요

Cloud Spanner용 자동 확장 처리 도구는 사용률에 따라 하나 이상의 Spanner 인스턴스에서 컴퓨팅 용량을 자동으로 늘리거나 줄일 수 있는 오픈소스 도구입니다.

Cloud Spanner는 무제한 확장, strong consistency, 최대 99.999% 가용성을 지원하는 완전 관리형 관계형 데이터베이스입니다.

Cloud Spanner 인스턴스를 만들 때 인스턴스의 컴퓨팅 리소스를 제공하는 노드 또는 처리 단위 수를 선택합니다. 인스턴스의 워크로드가 변경되어도 Cloud Spanner가 인스턴스의 노드 또는 처리 단위 수를 자동으로 조정하지 않습니다.

자동 확장 처리는 인스턴스를 모니터링하고 인스턴스가 권장되는 최대 CPU 사용률권장되는 노드당 스토리지 한도를 초과하지 않도록 컴퓨팅 용량을 자동으로 추가하거나 삭제합니다.

이 실습에서는 프로젝트별 구성에서 자동 확장 처리를 배포합니다. 이 배포 구성에서 자동 확장 처리는 자동 확장되는 Cloud Spanner 인스턴스와 동일한 프로젝트에 위치합니다.

아키텍처

Cloud Spanner 자동 확장 처리 흐름의 상호작용 흐름

위 다이어그램은 Cloud Spanner 자동 확장 처리의 구성요소와 상호작용 흐름을 보여줍니다.

  1. Cloud Scheduler, Cloud Pub/Sub, Poller Cloud Run Functions로 구성된 Poller 구성요소는 Cloud Monitoring API를 쿼리하여 각 Spanner 인스턴스의 사용률 측정항목을 가져옵니다. Poller 함수는 인스턴스마다 특정 Spanner 인스턴스의 사용률 측정항목과 해당하는 일부 구성 파라미터가 포함된 메시지 1개를 확장 Pub/Sub 주제로 푸시합니다.

  2. Scaler 구성요소는 Cloud Pub/Sub, Scaler Cloud Run Functions, Cloud Firestore로 구성됩니다. Scaler 함수는 메시지마다 Spanner 인스턴스 측정항목을 권장되는 기준에서 허용되는 마진을 더하거나 뺀 값과 비교합니다. 선택한 확장 방법을 사용하여 인스턴스를 확장해야 하는지 여부와 확장해야 하는 노드 또는 처리 단위 수를 결정합니다.

이 과정이 진행되는 동안 Spanner 자동 확장 처리에서 추적 및 감사를 위해 Cloud Logging에 추천 및 작업의 단계별 요약을 작성합니다.

설정 및 요건

실습 시작 버튼을 클릭하기 전에

다음 안내를 확인하세요. 실습에는 시간 제한이 있으며 일시중지할 수 없습니다. 실습 시작을 클릭하면 타이머가 시작됩니다. 이 타이머는 Google Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지를 표시합니다.

실무형 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있습니다. 실습 시간 동안 Google Cloud에 로그인하고 액세스하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공됩니다.

이 실습을 완료하려면 다음을 준비해야 합니다.

  • 표준 인터넷 브라우저 액세스 권한(Chrome 브라우저 권장)
참고: 이 실습을 실행하려면 시크릿 모드 또는 시크릿 브라우저 창을 사용하세요. 개인 계정과 학습자 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.
  • 실습을 완료하기에 충분한 시간. 실습을 시작하고 나면 일시중지할 수 없습니다.
참고: 계정에 추가 요금이 발생하지 않도록 하려면 개인용 Google Cloud 계정이나 프로젝트가 이미 있어도 이 실습에서는 사용하지 마세요.

실습을 시작하고 Google Cloud 콘솔에 로그인하는 방법

  1. 실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.

    • Google 콘솔 열기 버튼
    • 남은 시간
    • 이 실습에 사용해야 하는 임시 사용자 인증 정보
    • 필요한 경우 실습 진행을 위한 기타 정보
  2. Google 콘솔 열기를 클릭합니다. 실습에서 리소스가 가동된 후 로그인 페이지가 표시된 다른 탭이 열립니다.

    팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.

    참고: 계정 선택 대화상자가 표시되면 다른 계정 사용을 클릭합니다.
  3. 필요한 경우 실습 세부정보 패널에서 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다. 다음을 클릭합니다.

  4. 실습 세부정보 패널에서 비밀번호를 복사하여 시작 대화상자에 붙여넣습니다. 다음을 클릭합니다.

    중요: 왼쪽 패널에 표시된 사용자 인증 정보를 사용해야 합니다. Google Cloud Skills Boost 사용자 인증 정보를 사용하지 마세요. 참고: 이 실습에 자신의 Google Cloud 계정을 사용하면 추가 요금이 발생할 수 있습니다.
  5. 이후에 표시되는 페이지를 클릭하여 넘깁니다.

    • 이용약관에 동의합니다.
    • 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
    • 무료 평가판을 신청하지 않습니다.

잠시 후 Cloud 콘솔이 이 탭에서 열립니다.

참고: 왼쪽 상단에 있는 탐색 메뉴를 클릭하면 Google Cloud 제품 및 서비스 목록이 있는 메뉴를 볼 수 있습니다. 탐색 메뉴 아이콘

Google Cloud Shell 활성화하기

Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉토리를 제공하며 Google Cloud에서 실행됩니다. Google Cloud Shell을 사용하면 명령줄을 통해 GCP 리소스에 액세스할 수 있습니다.

  1. GCP Console의 오른쪽 상단 툴바에서 Cloud Shell 열기 버튼을 클릭합니다.

    Cloud Shell 아이콘

  2. ( 계속) Continue을 클릭하십시오.

    cloudshell_continue

환경을 프로비저닝하고 연결하는 데 약간의 시간이 걸립니다. 연결되면 이미 인증되었으며 프로젝트는 PROJECT_ID 로 설정됩니다. 예를 들면 다음과 같습니다.

Cloud Shell 터미널

gcloud는 Google Cloud Platform의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 탭 자동 완성을 지원합니다.

다음 명령어로 사용 중인 계정 이름 목록을 표시할 수 있습니다.

gcloud auth list

출력:

Credentialed accounts:
- <myaccount>@<mydomain>.com (active)

출력 예:

Credentialed accounts:
- google1623327_student@qwiklabs.net

다음 명령어로 프로젝트 ID 목록을 표시할 수 있습니다.

gcloud config list project

출력:

[core]
project = <project_ID>

출력 예:

[core]
project = qwiklabs-gcp-44776a13dea667a6
참고: 내 머신에서 gcloud를 실행하면 다른 세션에서도 config 설정이 유지됩니다. 하지만 Cloud Shell에서는 세션을 새로 시작하거나 다시 연결할 때마다 새로 설정해야 합니다.

작업 1. 자동 확장 처리 및 환경 구성

  1. Cloud Shell에서 실습에 필요한 파일을 클론합니다.
git clone https://github.com/cloudspannerecosystem/autoscaler
  1. 프로젝트 및 폴더 환경 변수를 설정합니다.
gcloud config set project {{{project_0.project_id|Project ID}}} export WORKING_DIR=`pwd` export AUTOSCALER_DIR=${WORKING_DIR}/autoscaler/terraform/cloud-functions/per-project export AUTOSCALER_MODS=${WORKING_DIR}/autoscaler/terraform/modules export PROJECT_ID={{{project_0.project_id|Project ID}}}
  1. 자동 확장 처리 인프라가 위치할 리전과 영역App Engine 위치를 설정합니다.
export REGION={{{project_0.default_region|Lab Region}}} export ZONE={{{project_0.default_zone|Lab Zone}}} export APP_ENGINE_LOCATION={{{project_0.default_region|Lab Region}}}
  1. 필요한 Cloud API를 사용 설정합니다.
gcloud services enable iam.googleapis.com \ cloudresourcemanager.googleapis.com \ appengine.googleapis.com \ firestore.googleapis.com \ spanner.googleapis.com \ pubsub.googleapis.com \ cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ cloudscheduler.googleapis.com \ run.googleapis.com \ eventarc.googleapis.com
  1. 자동 확장 처리를 배포할 리전에 새 App Engine 애플리케이션을 만듭니다. 이렇게 하면 프로젝트의 새 Cloud Firestore 인스턴스가 생성됩니다.
gcloud app create --region=${APP_ENGINE_LOCATION}
  1. Terraform 변수 파일(variables.tf)의 값을 Qwiklabs 프로젝트에 맞게 업데이트합니다.
sed -i "s/us-central1-c/$ZONE/g; s/us-central1/$REGION/g" ${AUTOSCALER_DIR}/variables.tf sed -i "s/us-central1/$REGION/g" ${AUTOSCALER_MODS}/autoscaler-functions/variables.tf sed -i "s/us-central/$REGION/g" ${AUTOSCALER_MODS}/scheduler/variables.tf

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. Firestore 데이터베이스 만들기

작업 2. 자동 확장 처리 배포

  1. 해당 Terraform 환경 변수에 프로젝트 ID, 리전, 영역을 설정합니다.
export TF_VAR_project_id=${PROJECT_ID} export TF_VAR_region=${REGION} export TF_VAR_zone=${ZONE}
  1. TF_VAR_spanner_name을 실습 설정 중에 생성된 Spanner 인스턴스의 이름인 autoscale-test로 설정합니다.
export TF_VAR_spanner_name=autoscale-test

그러면 Terraform이 autoscale-test라는 이름의 Cloud Spanner용 자동 확장 처리를 구성하고 Cloud Spanner 인스턴스의 IAM을 업데이트합니다. 이 Cloud Spanner 인스턴스는 실습 설정 중에 생성되었습니다.

일반적으로 이미 Cloud Spanner 배포가 있는 프로덕션 배포에서는 기존 인스턴스의 이름을 지정하는 작업이 진행됩니다.

  1. Terraform 프로젝트별 디렉터리로 변경하고 초기화합니다.
cd ${AUTOSCALER_DIR} terraform init
  1. 기존 App Engine 애플리케이션을 Terraform 상태로 가져옵니다.
terraform import module.scheduler.google_app_engine_application.app ${PROJECT_ID}
  1. 자동 확장 처리 인프라를 만듭니다.
terraform apply -parallelism=2
  1. Terraform이 생성하려는 리소스를 검토한 후 메시지가 표시되면 yes라고 대답합니다.
참고: 권한 문제가 발생하면 잠시 기다렸다가 Cloud Shell에서 terraform apply -parallelism=2 명령어를 다시 실행합니다. 참고: Cloud Shell에서 '443: connect: cannot assign requested address' 문제가 발생하면 parallelism 파라미터의 값을 줄여보세요.
  1. 탐색 메뉴 > Firestore로 이동하여 데이터베이스 ID (default)를 클릭합니다.

  2. 이제 기본 모드로 전환 버튼을 클릭한 다음 모드 전환을 클릭합니다.

참고: Collections failed to load와 같은 오류가 표시되면 몇 분 정도 기다렸다가 페이지를 새로고침하세요.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 자동 확장 처리 배포하기

작업 3. 자동 확장 관찰

  1. 왼쪽 상단에 있는 줄 3개로 된 아이콘을 클릭하여 탐색 메뉴를 연 다음 모든 제품 보기를 클릭하고 데이터베이스를 클릭한 후 마지막으로 Spanner를 클릭합니다. 기본 Spanner 페이지가 로드됩니다.

  2. 인스턴스 이름 autoscale-test를 클릭한 다음 왼쪽에 있는 시스템 통계를 클릭하면 다양한 Spanner 측정항목이 표시됩니다.

참고: 그래프가 채워지기 시작하고 자동 확장을 관찰할 수 있을 때까지 몇 분 정도 기다려야 할 수도 있습니다. 자동 확장 처리는 2분마다 인스턴스를 확인합니다.
  1. 아래로 스크롤하여 CPU 사용률을 확인합니다. 부하 생성으로 인해 우선순위가 높은 CPU 사용률이 급증하며 다음 그래프와 유사하게 표시됩니다.

CPU 사용률 - 우선순위 높음 그래프

이 그래프에서 CPU 사용률에 권장되는 기준인 65%를 초과하는 급증을 2개 확인할 수 있습니다.

  1. 아래로 스크롤하여 컴퓨팅 용량 그래프를 확인합니다. 컴퓨팅 단위에서 처리 단위를 선택합니다.

컴퓨팅 용량 그래프

자동 확장 처리가 Spanner 인스턴스를 모니터링하고 CPU 사용률이 65%를 초과하면 컴퓨팅 용량을 추가합니다. 이 예에서는 급증할 때마다 처리 단위를 더 추가합니다. 자동 확장 처리가 추가하는 처리 단위 또는 노드의 수는 자동 확장 처리가 사용하는 확장 방법에 따라 결정됩니다.

자동 확장 처리 로그 확인

  1. 자동 확장 처리 Poller 및 Scaler Cloud Run Functions의 로그를 보려면 탐색 메뉴 > Logging으로 이동합니다.
  2. 쿼리 빌더 텍스트 상자에 다음 필터를 입력합니다.
resource.labels.configuration_name=~"tf-.*-function"
  1. 맨 오른쪽에 있는 쿼리 실행을 클릭합니다.

쿼리 결과에서 자동 확장 처리 함수의 모든 메시지를 볼 수 있습니다. Poller는 2분 단위로만 실행되므로 로그 메시지를 수신하려면 쿼리를 다시 실행해야 할 수 있습니다.

  1. Poller 함수의 메시지만 보려면 쿼리 빌더 텍스트 상자에 다음 필터를 입력합니다.
resource.labels.configuration_name="tf-poller-function"
  1. 맨 오른쪽에 있는 쿼리 실행을 클릭합니다.

쿼리 결과에 Poller 함수의 메시지만 표시됩니다. Poller는 2분 단위로만 실행되므로 로그 메시지를 수신하려면 쿼리를 다시 실행해야 할 수 있습니다.

  1. 자동 확장이 트리거된 대략적인 시간의 로그를 살펴봅니다.

Poller 함수는 Spanner 인스턴스를 지속적으로 모니터링합니다.

Poller 함수 로그 목록

이 예시에서 Poller 함수는 우선순위가 높은 CPU, 24시간 CPU 이동, 스토리지 측정항목을 가져오고 Scaler 함수에 대한 메시지를 게시합니다. 현재 우선순위가 높은 CPU가 78.32%라는 점을 기억하세요.

  1. Scaler 함수의 메시지만 보려면 '쿼리 빌더' 텍스트 상자에 다음 필터를 입력합니다.
resource.labels.configuration_name="tf-scaler-function"
  1. 맨 오른쪽에 있는 쿼리 실행을 클릭합니다.
  2. 쿼리 결과에 '노드' 추천 및 확장 결정과 관련된 Scaler 함수의 메시지만 표시됩니다.
참고: 이러한 필터 또는 유사한 필터를 사용하여 로그 기반 측정항목을 만들면 유용합니다. 예를 들어 자동 확장 이벤트의 빈도를 추적하거나 Cloud Monitoring 차트 및 알림 정책에 사용할 수 있습니다.

Scaler 함수에서 해당 메시지를 수신하고 Spanner 인스턴스를 확장해야 하는지 여부를 결정합니다.

Scaler 함수 로그

이 예시의 선형 확장 방법에서는 우선순위가 높은 CPU 값을 기준으로 처리 단위를 300개에서 400개로 확장할 것을 추천합니다. 마지막 확장 작업을 완료한 지 5분 이상 지났으므로 Scaler가 처리 단위를 400개로 확장하기로 합니다.

수고하셨습니다

워크로드 요구사항에 따라 노드 수를 자동으로 늘리거나 줄일 수 있는 Cloud Spanner용 자동 확장 처리 도구를 구현했습니다. Cloud Run Functions, Cloud Spanner, Cloud Scheduler, Cloud Monitoring을 사용하는 방법을 연습했습니다.

설명서 최종 업데이트: 2024년 11월 19일

실습 최종 테스트: 2024년 11월 19일

Copyright 2024 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하려면 시크릿 모드 또는 시크릿 브라우저 창을 사용하세요. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.