여러 신호로 자동 확장 정책 사용


여러 신호로 자동 확장 정책을 만들면 자동 확장 처리는 관리형 인스턴스 그룹(MIG)에서 가장 많은 수의 가상 머신(VM) 인스턴스를 제공하는 신호를 기준으로 확장됩니다. 이렇게 하면 애플리케이션 워크로드를 처리할 수 있는 VM이 항상 충분하며 병목 현상이 많이 발생하는 애플리케이션을 확장할 수 있습니다.

다양한 자동 확장 신호 유형에 대한 자세한 내용은 자동 확장 정책을 참조하세요.

시작하기 전에

  • 자동 확장 처리 기초에 대해 읽어봅니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

자동 확장 처리가 여러 신호를 처리하는 방법

자동 확장 처리는 각 신호에 권장되는 VM 수를 계산한 다음 MIG에서 가장 많은 수의 VM을 제공하는 신호를 선택하여 여러 신호를 처리합니다.

자동 확장 처리는 측정항목 유형당 1개의 신호만 처리할 수 있습니다. 단, Cloud Monitoring 측정항목과 확장 일정은 예외입니다. Cloud Monitoring 측정항목의 경우 최대 5개의 자동 확장 신호를 선택하고 MIG당 최대 128개의 일정을 만들 수 있습니다. 예를 들어 최대 1개의 CPU 사용률 신호, 최대 1개의 부하 분산 신호, 최대 5개의 커스텀 측정항목 신호, 최대 128개의 확장 일정을 사용하는 자동 확장 처리를 만들 수 있습니다.

예를 들어 다음 신호를 모두 사용하여 자동 확장 처리를 정의할 수 있습니다.

  • 타겟 0.8의 cpuUtilization
  • 타겟 0.6의 loadBalancingUtilization
  • 타겟 1000의 metric1에 대한 customMetricUtilization
  • 타겟 2000의 metric2에 대한 customMetricUtilization
  • scalingSchedules
    • 매주 토요일과 일요일 오전 12시에 24시간 동안 최소 VM 6개
    • 매주 월요일~금요일 오전 9시에 8시간 동안 최소 VM 15개

이 예시에서는 자동 확장 처리가 측정 시점에 VM 10개가 포함된 MIG에 대해 다음과 같은 평균 사용률 값을 측정한다고 가정해 보겠습니다.

  • CPU 사용률의 경우 0.5
  • 부하 분산 사용률의 경우 0.4
  • metric1의 경우 1100
  • metric2의 경우 2700

자동 확장 처리는 위의 값을 사용하여 각 신호를 기반으로 권장되는 VM 수를 계산합니다.

  • CPU 사용률을 기준으로 VM 7개
  • 부하 분산 사용률을 기준으로 VM 7개
  • metric1을 기준으로 VM 11개
  • metric2를 기준으로 VM 14개
  • 첫 번째 확장 일정을 기준으로 매주 토요일과 일요일에 하루 종일 VM 6개
  • 두 번째 확장 일정을 기준으로 매주 월요일~금요일 오전 9시~오후 5시에 VM 15개

자동 확장 처리는 MIG에서 가장 많은 수의 VM을 제공하는 신호를 선택하고 MIG의 권장 크기를 해당 값으로 설정합니다. 이 경우 자동 확장 처리는 두 번째 일정이 현재 활성 상태이면 MIG 크기를 VM 15개로 조절하고 그렇지 않으면 VM 14개로 조절합니다.

여러 신호를 사용하여 자동 확장 처리 만들기

여러 신호를 사용하여 자동 확장 처리를 만드는 방법은 Google Cloud 콘솔, gcloud CLI, REST 중 무엇을 사용하는지에 따라 약간 다릅니다.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. 목록에서 MIG의 이름을 클릭합니다. 그런 다음 수정을 클릭합니다.

  3. 자동 확장 모드 아래 수정 페이지의 드롭다운 메뉴에서 켜기: 그룹에 인스턴스 추가 및 삭제를 선택하여 자동 확장을 사용 설정합니다.

  4. 최소 인스턴스 수 아래에 이 MIG에 적용할 최소 VM 수를 입력합니다. 이 MIG의 최소 크기는 자동 확장 신호와 관계없이 항상 유지됩니다.

  5. 최대 인스턴스 수 아래에 이 MIG에 적용할 최대 VM 수를 입력합니다. 자동 확장 신호로 생성된 권장 크기와 관계없이 이 MIG의 최대 크기는 절대 초과되지 않습니다.

  6. 추가하려는 각 측정항목 기반 자동 확장 신호에 대해 자동 확장 측정항목 아래에서 측정항목 추가를 클릭합니다.

    • 평균 CPU 사용률을 기준으로 자동 확장 신호를 만들려면 측정항목 유형 아래 드롭다운 메뉴에서 CPU 사용률을 선택합니다. 그런 다음 대상 CPU 사용률을 입력하고 완료를 클릭합니다. 자세한 내용은 CPU 사용률을 기준으로 확장을 참조하세요.
    • HTTP 부하 분산 처리 용량을 기준으로 자동 확장 신호를 만들려면 측정항목 유형 아래 드롭다운 메뉴에서 HTTP 부하 분산 사용률을 선택합니다. 그런 다음 대상 HTTP 부하 분산 사용률을 입력하고 완료를 클릭합니다. 자세한 내용은 부하 분산 처리 용량을 기준으로 확장을 참조하세요.
    • Cloud Monitoring 측정항목을 기준으로 자동 확장 신호를 만들려면 측정항목 유형 아래 드롭다운 메뉴에서 Cloud Monitoring 측정항목을 선택합니다. 그런 다음 나머지 필드를 완료하고 완료를 클릭합니다. 자세한 내용은 Cloud Monitoring 측정항목을 기준으로 확장을 참조하세요.
  7. 추가하려는 각 일정 기반 자동 확장 신호에 대해 자동 확장 일정 섹션을 펼치고 일정 관리를 클릭한 후 일정 만들기를 클릭합니다.

  8. 일정 만들기 창에서 필수 필드를 입력하고 저장을 클릭합니다. 그런 다음 확장 일정 창에서 완료를 클릭합니다. 자세한 내용은 일정을 기준으로 확장을 참조하세요.

  9. 초기화 기간에서 애플리케이션이 초기화해야 하는 시간(초)을 입력합니다. 그러면 자동 확장 처리가 사용 데이터를 신뢰할 수 있다고 판단하기 전에 VM이 초기화를 완료할 수 있습니다. 자세한 내용은 초기화 기간을 참조하세요.

  10. 선택사항: 수평 축소 제어를 사용 설정하려면 수평 축소 제어를 클릭한 다음 수평 축소 제어 사용 설정 체크박스를 선택합니다. 자세한 내용은 수평 축소 제어를 참조하세요.

  11. 저장을 클릭합니다.

gcloud

여러 신호를 사용하여 자동 확장 처리를 만들려면 set-autoscaling 명령어를 사용합니다. 각 명령줄 플래그를 사용하여 여러 신호 사양을 전달합니다.

예를 들어 다음 명령어는 CPU 사용률, 부하 분산 처리 용량, 2개의 커스텀 측정항목, 1개의 확장 일정을 사용하는 자동 확장 처리를 만듭니다. --max-num-replicas--min-num-replicas 플래그는 MIG가 가져올 수 있는 크기를 제한합니다.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" \
   --min-num-replicas=1 \
   --max-num-replicas=50

다음을 바꿉니다.

  • MIG_NAME: MIG 이름입니다.
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2(선택사항): custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2와 유사한 형식의 커스텀 측정항목 경로입니다. 자세한 내용은 커스텀 측정항목을 참조하세요.

gcloud 명령어별로 측정항목 유형마다 최대 1개의 플래그만 전달할 수 있습니다. 단, 커스텀 측정항목 플래그는 예외입니다. 커스텀 측정항목의 경우 --custom-metric-utilization 플래그를 반복하여 단일 명령어에 여러 커스텀 측정항목을 제공할 수 있습니다.

각 자동 확장 신호 유형의 플래그를 구성하는 방법에 대한 상세 설명은 다음 페이지를 참조하세요.

REST

자동 확장 처리를 만들려면 영역 MIG에 autoscalers.insert 메서드를 사용하거나 리전 MIG에 regionAutoscalers.insert 메서드를 사용합니다.

예를 들어 다음 요청은 CPU 사용률, 부하 분산 처리 용량, 2개의 커스텀 측정항목, 2개의 확장 일정을 사용하는 자동 확장 처리를 만듭니다. maxNumReplicasminNumReplicas 필드는 MIG가 가져올 수 있는 크기를 제한합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

다음을 바꿉니다.

  • PROJECT: 프로젝트 ID
  • ZONE: MIG가 있는 영역입니다.
  • MIG_NAME: MIG 이름입니다.
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2(선택사항): custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2와 유사한 형식의 커스텀 측정항목 경로입니다. 자세한 내용은 커스텀 측정항목을 참조하세요.

이 예시에서와 같이 동일한 요청에서 여러 커스텀 측정항목과 확장 일정을 제공할 수 있습니다.

각 자동 확장 신호 유형의 필드를 구성하는 방법에 대한 자세한 내용은 다음 페이지를 참조하세요.