인스턴스 그룹 자동 확장


관리형 인스턴스 그룹(MIG)은 부하의 증가 또는 감소에 따라 MIG에서 가상 머신(VM) 인스턴스를 자동으로 추가하거나 삭제할 수 있게 해주는 자동 확장 기능을 제공합니다. 자동 확장을 통해 앱에서 트래픽 증가 처리가 원활해지고, 리소스에 대한 요구가 줄면 비용을 절감할 수 있습니다. 자동 확장 정책을 정의하면 자동 확장 처리에서 측정된 부하 및 구성한 옵션을 기준으로 자동 확장을 수행합니다.

자동 확장은 부하가 많아지면 MIG에 VM을 추가(수평 확장)하고, VM 수요가 줄면 VM을 삭제(수평 축소)하는 방식으로 작동합니다.

기본 요건

자동 확장 처리는 Compute Engine 서비스 에이전트를 사용하여 그룹의 인스턴스를 추가하거나 삭제합니다. Google Cloud는 Compute Engine API가 사용 설정되었을 때 Compute Engine 서비스 에이전트 역할에 대한 IAM 정책 binding은 물론 이 서비스 계정을 만듭니다.

계정을 삭제한 경우와 같이 프로젝트에 이 계정이 누락되었으면 이를 수동으로 추가할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

    IAM으로 이동

  2. 액세스 권한 부여를 클릭합니다.

  3. 새 주 구성원 필드에 service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com을 입력합니다.

  4. Compute Engine 서비스 에이전트 역할을 선택합니다.

  5. 저장을 클릭합니다.

gcloud

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
   --role roles/compute.serviceAgent

기초

자동 확장에서 사용하는 기초적인 개념 및 서비스는 다음과 같습니다.

관리형 인스턴스 그룹

자동 확장은 관리형 인스턴스 그룹(MIG)의 기능입니다. 관리형 인스턴스 그룹은 공통 인스턴스 템플릿에서 생성되는 가상 머신(VM) 인스턴스의 모음입니다. 자동 확장 처리는 그룹의 자동 확장 정책에 따라 관리형 인스턴스 그룹에서 인스턴스를 추가하거나 삭제합니다. Compute Engine에는 관리형 인스턴스 그룹과 비관리형 인스턴스 그룹이 모두 있지만 자동 확장 처리는 관리형 인스턴스 그룹에서만 사용할 수 있습니다.

관리형 인스턴스 그룹과 비관리형 인스턴스 그룹의 차이를 이해하려면 인스턴스 그룹을 참조하세요.

관리형 인스턴스 그룹을 만드는 방법을 알아보려면 MIG 만들기를 참조하세요.

자동 확장 정책

그룹에 대해 자동 확장 정책을 정의할 때는 자동 확장 처리가 그룹 확장을 위해 사용하는 하나 이상의 신호를 지정합니다. 한 정책에 여러 신호를 설정할 때 자동 확장 처리는 각 신호에 대해 권장되는 VM 수를 계산하고 그룹의 권장 크기를 가장 큰 숫자로 설정합니다.

자동 확장 정책에는 항상 확장 신호가 하나 이상 있어야 합니다. MIG에서 자동 확장을 사용 설정하면 기본적으로 자동 확장 처리가 CPU 사용률 신호를 추가합니다. 이 기본 신호를 수정하거나 정책에서 다른 신호를 삭제하고 추가할 수 있습니다.

다음 섹션에서는 대상 활용도 측정항목에 기반한 신호 개요 및 일정 기반 신호 개요를 제공합니다.

대상 사용률 측정항목

인스턴스 그룹의 로드를 반영하는 하나 이상의 다음 측정항목을 기준으로 자동 확장할 수 있습니다.

  • 평균 CPU 사용률
  • HTTP 부하 분산 처리 용량
  • Cloud Monitoring 측정항목

자동 확장 처리는 선택한 사용률 측정항목을 기준으로 사용량 정보를 지속적으로 수집하고, 실제 사용률을 원하는 대상 사용률과 비교하고, 이 정보를 사용하여 그룹에서 인스턴스를 삭제(수평 축소) 또는 추가(수평 확장)해야 하는지 결정합니다.

목표 사용률 수준은 가상 머신 인스턴스를 유지하려는 수준입니다. 예를 들어 CPU 사용률을 기준으로 확장하는 경우 목표 사용률 수준을 75%로 설정해 두면 자동 확장 처리에서는 지정한 인스턴스 그룹의 CPU 사용률을 75%로 유지하거나 그에 가깝게 유지합니다. 사용률 수준은 자동 확장 정책에 따라 측정항목별로 다르게 해석됩니다.

대상 사용률 측정항목을 기준으로 하는 확장에 대한 자세한 내용은 다음 페이지를 참조하세요.

일정

일정 기반 자동 확장을 사용하여 예상 로드에 용량을 할당할 수 있습니다. 확장 일정은 인스턴스 그룹별로 최대 128개까지 지정할 수 있습니다. 각 확장 일정에 대해 다음을 지정합니다.

  • 용량: 최소 필수 VM 인스턴스
  • 일정: 시작 시간, 기간, 반복(예: 한 번, 매일, 매주 또는 매월)

각 확장 일정은 시작 시간부터 구성된 기간 동안 활성화됩니다. 이 시간 동안 자동 확장 처리는 최소한 확장 일정으로 정의된 인스턴스 수 이상을 갖도록 그룹을 확장합니다.

자세한 내용은 일정을 기준으로 확장을 참조하세요.

초기화 기간

이전에 대기 기간이라고 했던 초기화 기간은 애플리케이션이 VM 인스턴스에서 초기화하는 데 걸리는 시간입니다. 애플리케이션이 인스턴스에서 초기화되는 동안 인스턴스 사용 데이터에 일반적인 상황이 반영되지 않을 수 있습니다. 따라서 자동 확장 처리는 다음과 같은 방법으로 확장을 위한 초기화 기간을 사용합니다.

  • 수평 축소의 경우, 자동 확장 처리는 초기화 기간 내에 있는 인스턴스를 비롯한 모든 인스턴스의 사용 데이터를 고려합니다. 자동 확장 처리는 모든 인스턴스의 평균 사용량이 목표 사용량보다 낮은 경우 인스턴스를 삭제하는 것을 권장합니다.
  • 수평 확장 결정의 경우, 자동 확장 처리는 초기화 기간 내에 있는 인스턴스의 사용 데이터를 무시합니다.
  • 예측 모드를 사용 설정하는 경우 초기화 기간은 예측 자동 확장 처리가 예상 부하에 앞서 수평 확장되도록 알려 부하 도착 시 애플리케이션이 초기화되도록 합니다. 예를 들어 초기화 기간을 300초로 설정한 경우 예측 자동 확장 처리가 예상 부하에 5분 앞서 VM을 만듭니다.

기본적으로 초기화 기간은 60초입니다. 실제 초기화 시간은 다양한 요인에 따라 달라집니다. 애플리케이션이 초기화되는 데 걸리는 시간을 테스트하는 것이 좋습니다. 테스트하려면 인스턴스를 만들고 인스턴스가 RUNNING 상태가 될 때부터 애플리케이션이 준비 상태가 될 때까지의 시작 프로세스 시간을 측정합니다.

인스턴스가 초기화되는 데 걸리는 시간보다 훨씬 긴 시간을 초기화 기간 값으로 설정하면 자동 확장 처리에서 적합한 사용률 데이터를 무시하고 그룹에 필요한 크기를 낮게 잡아 수평 확장에 지연을 초래할 수 있습니다.

안정화 기간

CPU 사용률과 같은 자동 확장 신호는 매우 안정적이지 않으며 빠르게 변경될 수 있습니다. 부하가 증가 및 감소함에 따라 자동 확장 처리는 지속적인 VM 삭제 및 생성을 방지하기 위해 신호를 안정화해야 합니다. 자동 확장 처리는 안정화 기간 중에 관찰된 최대 부하를 처리하기 위해 충분한 VM 용량을 유지하여 신호를 안정화합니다.

안정화 기간은 10분 또는 설정된 초기화 시간 중 더 긴 시간과 동일합니다. 안정화 기간은 자동 확장 처리가 VM을 삭제해야 할 때의 수평 축소 결정에만 사용됩니다.

부하가 감소하면 자동 확장 처리가 VM을 즉시 삭제하지 않습니다. 자동 확장 처리는 안정화 기간 중에 필요한 모니터링 용량을 유지하고 최대 부하를 충족하기에 용량이 충분할 때만 VM을 삭제합니다. 이것이 수평 축소 시 발생하는 지연 시간으로 보일 수 있지만 자동 확장에 기본 제공되는 기능입니다.

애플리케이션이 새 VM으로 초기화하는 데 10분 넘게 걸리는 경우 자동 확장 처리는 기본 10분의 안정화 기간 대신 초기화 시간을 사용하여 VM을 삭제할 수 있을 때까지 대기합니다. 이렇게 하면 자동 확장 처리가 VM 삭제를 결정할 때 처리 용량을 회복하는 데 걸리는 시간을 고려할 수 있습니다.

부하가 증가하면 자동 확장 처리가 안정화 기간을 사용하지 않고 수요를 충족하기 위해 필요한 만큼 VM을 즉시 만듭니다.

자동 확장 모드

자동 확장 처리 작업의 간섭 없이 그룹을 조사하거나 구성해야 하는 경우 일시적으로 자동 확장 활동을 사용 중지하거나 제한할 수 있습니다. 자동 확장 처리가 사용 중지되거나 제한되는 동안에도 자동 확장 처리 구성은 지속되며 모든 자동 확장 활동은 사용자가 다시 사용 설정하거나 제한을 해제하면 다시 시작됩니다.

예측 자동 확장

예측 자동 확장을 사용 설정하여 MIG의 가용성을 최적화하는 경우 자동 확장 처리는 이전 데이터를 기반으로 향후 부하를 예측하고 예측된 부하에 앞서 MIG를 수평 확장하여 부하 도착 시 새 인스턴스를 제공할 수 있도록 합니다.

예측 자동 확장은 워크로드가 다음 기준을 충족할 때 가장 잘 작동합니다.

  • 애플리케이션이 초기화되는 데 시간이 오래 걸립니다. 예를 들어 초기화 기간을 2분 넘게 구성한 경우입니다.
  • 워크로드가 일 또는 주 단위 주기에 따라 다릅니다.

자세한 내용은 예측을 기준으로 확장을 참조하세요.

수평 축소 제어

긴 설치 작업 등으로 인해 워크로드를 초기화하는 데 시간이 오래 걸리는 경우 수평 축소 제어를 구성하여 갑작스러운 수평 축소 이벤트로 인한 응답 지연 시간을 줄일 수 있습니다. 특히 부하가 감소한 직후 급증할 것으로 예상되는 경우에는 수평 축소 속도를 제한하여 자동확장이 워크로드가 허용할 수 있는 것보다 더 많은 VM 인스턴스로 MIG 크기를 줄이지 못하도록 할 수 있습니다.

애플리케이션 수평 확장 시 부하 급증을 포착할 만큼 빠르게 초기화되는 경우 수평 축소 제어를 구성할 필요가 없습니다.

수평 축소 제어를 구성하려면 자동 확장 정책에서 다음 속성을 설정합니다.

  • 최대로 허용되는 축소. 지정된 후행 기간 내에 워크로드가 최대 크기에서 잃을 수 있는 인스턴스 수입니다. 이 매개변수를 사용하면 더 많은 인스턴스가 처리될 때까지 부하 급증을 계속 처리할 수 있도록 그룹이 수평 축소될 수 있는 양을 제한할 수 있습니다. 최대로 허용되는 축소를 낮게 설정할수록 그룹을 수평 축소하는 데 더 오래 걸립니다.

  • 후행 기간. 자동 확장 처리에서 워크로드에 필요한 최대 크기를 모니터링하는 기록입니다. 자동 확장 처리는 이 기간 동안 관측된 최대 크기에서 차감된 최대로 허용되는 축소 이하로는 크기를 재조정하지 않습니다. 최대로 허용되는 축소에 정의된 대로 이 매개변수를 사용하여 자동 확장 처리가 인스턴스를 삭제하기 전에 대기해야 하는 기간을 정의할 수 있습니다. 후행 기간이 길어질수록 자동 확장 처리가 이전의 최대 부하를 더 많이 고려하여 더 보수적이고 안정적으로 축소하게 됩니다.

자세한 내용은 수평 축소 제어 구성자동 확장 처리 결정 이해를 참조하세요.

권장 그룹 크기는 마지막 10분 동안 관찰된 최대 부하를 기준으로 관리형 인스턴스 그룹이 유지해야 하는 자동 확장 처리의 권장 VM 수입니다. 이러한 마지막 10분을 안정화 기간이라고 합니다. 권장 크기는 지속적으로 다시 계산됩니다. 자동 확장 정책을 수평 축소 제어와 함께 설정하면 권장 크기가 수평 축소 제어의 제약을 받습니다.

제한사항

자동 복구 중 발생하는 상황

자동 확장은 자동 복구와 독립적으로 작동합니다. 그룹에 자동 복구를 구성하고 인스턴스가 상태 점검에 실패하면 MIG에서 인스턴스를 다시 만들려고 시도합니다. MIG에서 인스턴스를 다시 만드는 동안 그룹에서 실행되는 인스턴스 수가 그룹에 지정된 최소 인스턴스 수(autoscalingPolicy.minNumReplicas)보다 적을 수 있습니다.

가격 책정

자동 확장 정책을 구성하는 데에는 추가 요금이 청구되지 않습니다. 자동 확장 처리는 VM 인스턴스를 추가하거나 삭제하지 않으므로, MIG에 사용되는 리소스에만 비용이 청구됩니다. 자동 확장 정책에 최소 및 최대 인스턴스 수를 구성하여 리소스 비용을 제어할 수 있습니다. Compute Engine 가격 책정 정보는 가격 책정을 참조하세요.

다음 단계

  1. 리전 MIG의 자동 확장 작동 방법 알아보기
  2. 기존 MIG가 없는 경우 관리형 인스턴스 그룹을 만드는 방법을 검토하세요.
  3. 다음을 기준으로 확장되는 자동 확장 처리를 만듭니다.

  4. 예를 들어 자동 확장 처리 관리에 대해 알아보거나, 축소 제어를 구성하거나 이를 일시적으로 제한하려면 자동 확장 처리 관리를 참조하세요.