CPU 또는 부하 분산 제공 용량을 기준으로 확장

가장 단순한 형태의 자동 확장은 가상 머신(VM) 인스턴스 그룹의 CPU 사용률을 기준으로 확장하는 것입니다. 인스턴스 그룹의 HTTP(S) 부하 분산 제공 용량을 기준으로 확장하도록 선택할 수도 있습니다.

이 문서에서는 두 옵션을 모두 설명합니다.

시작하기 전에

CPU 사용률을 기준으로 확장

관리형 인스턴스 그룹(MIG)의 평균 CPU 사용률을 기준으로 자동 확장할 수 있습니다. 이 정책을 사용하면 자동 확장 처리 기능이 그룹 내 인스턴스의 CPU 사용률을 수집하고 확장이 필요한지 여부를 결정합니다. 자동 확장 처리 시 유지해야 하는 목표 CPU 사용률은 사용자가 설정합니다. 그러면 자동 확장 처리 기능이 해당 수준을 유지하려고 합니다.

자동 확장 처리는 시간 경과에 따른 인스턴스 그룹 내 모든 vCPU의 평균 사용량의 일부로 목표 CPU 사용률 수준을 처리합니다. 전체 vCPU의 평균 사용률이 목표 사용률을 초과하면 자동 확장 처리 기능이 VM 인스턴스를 더 추가합니다. 전체 vCPU의 평균 사용률이 목표 사용률보다 적으면 자동 확장 처리 기능이 인스턴스를 삭제합니다. 예를 들어 목표 사용률을 0.75로 설정하면 자동 확장 처리 기능이 인스턴스 그룹의 모든 vCPU에서 평균 사용률을 75%로 유지합니다.

CPU 사용률에 따른 자동 확장 사용 설정

Console


  1. 인스턴스 그룹 페이지로 이동합니다.
  2. 인스턴스 그룹이 있으면 인스턴스 그룹을 선택하고 그룹 수정을 클릭합니다. 인스턴스 그룹이 없으면 인스턴스 그룹 만들기를 클릭합니다.
  3. 자동 확장에서 켜기를 선택합니다.
  4. 자동 확장 기준에서 CPU 사용률을 선택합니다.
  5. 목표 CPU 사용률을 원하는 대로 입력합니다. 이 값은 백분율로 간주됩니다. 예를 들어 원하는 CPU 사용률이 60%이면 60을 입력합니다.
  6. 이 인스턴스 그룹에서 원하는 최대 인스턴스 수를 지정합니다. 최소 인스턴스 수와 대기 시간을 설정할 수도 있습니다. 대기 시간은 VM이 시작된 후 자동 확장 처리가 해당 VM에서 정보 수집을 시작하기 전에 대기해야 하는 시간(초)입니다. 이를 통해 VM이 초기화되는 데 걸리는 시간을 알 수 있으며, 이 기간 동안 수집된 데이터는 자동 확장에 적용할 수 없습니다. 기본 대기 시간은 60초입니다.
  7. 변경사항을 저장합니다.

gcloud


set-autoscaling 하위 명령어를 사용하여 관리형 인스턴스 그룹에 자동 확장을 사용 설정합니다. 예를 들어 다음 명령어는 목표 CPU 사용률이 75%인 자동 확장 처리를 만듭니다. 자동 확장 처리를 만들 때는 --target-cpu-utilization 매개변수와 함께 --max-num-replicas 매개변수도 필요합니다.

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
        --max-num-replicas 20 \
        --target-cpu-utilization 0.75 \
        --cool-down-period 90
    

필요한 경우 --cool-down-period 플래그를 사용할 수 있습니다. 이 플래그는 새 인스턴스가 시작된 후 자동 확장 처리가 새 인스턴스에서 수집된 데이터를 고려하기 전에 대기해야 하는 시간(초)을 알려줍니다. 이 대기 시간을 통해 인스턴스가 초기화되는 데 걸리는 시간을 알 수 있으며, 이 기간 동안 수집된 사용률 데이터는 자동 확장에 적용할 수 없습니다. 대기 시간이 지나면 자동 확장 처리가 인스턴스의 사용률 데이터를 반영하기 시작하고 그룹 확장이 필요한지 여부를 결정합니다. 기본 대기 시간은 60초입니다.

자동 확장이 사용 설정되었는지 여부는 instance-groups managed describe 하위 명령어를 사용하여 확인할 수 있으며, 이 명령어는 관리형 인스턴스 그룹을 설명하고 인스턴스 그룹의 자동 확장 기능에 대한 정보를 제공합니다.

gcloud compute instance-groups managed describe example-managed-instance-group
    

사용 가능한 gcloud 명령어 및 플래그의 목록은 gcloud 참조를 확인하세요.

API


참고: 자동 확장은 관리형 인스턴스 그룹의 기능이지만 별도의 API 리소스입니다. 자동 확장 API 요청을 구성할 때는 이 사실을 염두에 두세요.

API에서 autoscalers.insert 메서드에 대해 POST 요청을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/autoscalers/
    

요청 본문에는 name, target, autoscalingPolicy 필드가 포함되어야 합니다. autoscalingPolicycpuUtilizationmaxNumReplicas를 정의해야 합니다.

필요한 경우 coolDownPeriodSec 필드를 사용할 수 있습니다. 이 플래그는 새 인스턴스가 시작된 후 자동 확장 처리가 새 인스턴스에서 수집된 데이터를 고려하기 전에 대기해야 하는 시간(초)을 알려줍니다. 이 대기 시간을 통해 인스턴스가 초기화되는 데 걸리는 시간을 알 수 있으며, 이 기간 동안 수집된 사용률 데이터는 자동 확장에 적용할 수 없습니다. 대기 시간이 지나면 자동 확장 처리가 인스턴스의 사용률 데이터를 반영하기 시작하고 그룹 확장이 필요한지 여부를 결정합니다. 기본 대기 시간은 60초입니다.

{
     "name": "example-autoscaler",
     "target": "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
     "autoscalingPolicy": {
        "maxNumReplicas": 10,
        "cpuUtilization": {
           "utilizationTarget": 0.8
         },
        "coolDownPeriodSec": 90
      }
    }
    

CPU 사용률에 따른 자동 확장 사용 설정에 대한 자세한 내용은 확장성이 뛰어난 애플리케이션을 위한 자동 확장 사용 가이드를 참조하세요.

자동 확장 처리가 과도한 CPU 사용률을 처리하는 방법

CPU 사용률이 높은 기간 동안 사용률이 거의 100%에 도달하면 자동 확장 처리는 그룹이 이미 과부하된 것으로 추정합니다. 이러한 경우 자동 확장 처리는 가상 머신 수를 최대 50% 늘립니다.

HTTP(S) 부하 분산 제공 용량을 기준으로 확장

Compute Engine은 인스턴스 그룹 내 부하 분산을 지원합니다. 인스턴스의 부하에 따라 확장되는 자동 확장 처리를 설정하여 부하 분산과 함께 자동 확장을 사용할 수 있습니다.

HTTP(S) 부하 분산기는 부하 분산기의 백엔드 서비스에 속한 백엔드 간의 부하를 분배합니다. 백엔드가 인스턴스 그룹인 경우 HTTP(S) 부하 분산기는 사용률과 비율의 두 가지 분산 모드를 제공합니다. 사용률을 사용하면 각 인스턴스 그룹의 인스턴스에 대해 평균 백엔드 사용률의 최대 목표를 지정할 수 있습니다. 비율을 사용하면 인스턴스별 또는 그룹별로 초당 요청의 최대 목표를 지정할 수 있습니다. 리전 관리형 인스턴스 그룹은 그룹별 최대 비율 지정을 지원하지 않습니다.

지정한 분산 모드와 최대 목표는 Google Cloud에서 백엔드 VM이 용량에 도달했는지 여부를 결정하는 조건을 정의합니다. Google Cloud는 남은 용량이 있는 정상 VM에 트래픽을 전송하려고 시도합니다. 모든 VM이 이미 용량에 도달했다면 최대 목표 사용률 또는 비율이 초과됩니다.

HTTP(S) 부하 분산기에 자동 확장 처리를 연결하면 자동 확장 처리에서 관리형 인스턴스 그룹을 확장하여 부하 분산 제공 용량을 일정 비율로 유지합니다.

예를 들어 관리형 인스턴스 그룹의 부하 분산 제공 용량이 인스턴스당 100RPS로 정의되었다고 가정해 보겠습니다. HTTP(S) 부하 분산 정책을 사용하여 자동 확장 처리를 만들고 목표 사용률 수준을 0.8 또는 80%로 유지하도록 설정하면 자동 확장 처리에서 관리형 인스턴스 그룹의 인스턴스를 추가하거나 삭제하여 80%의 제공 용량 또는 인스턴스당 80RPS로 유지합니다.

다음 다이어그램은 자동 확장 처리와 관리형 인스턴스 그룹 및 백엔드 서비스의 상호작용 방식을 보여줍니다.

자동 확장 처리, 관리형 인스턴스 그룹, 부하 분산 백엔드 서비스 간의 관계
자동 확장 처리가 백엔드 서비스에 정의된 관리형 인스턴스 그룹의 제공 용량을 감시하고 목표 사용률에 따라 확장합니다. 이 예시에서 제공 용량은 maxRatePerInstance 값으로 측정됩니다.

적용 가능한 부하 분산 구성

부하 분산 제공 용량에는 3가지 옵션 중 하나를 설정할 수 있으며, 백엔드를 처음 만들 때 최대 백엔드 사용률, 인스턴스별 초당 최대 요청 수 또는 전체 그룹의 초당 최대 요청 수 중에서 선택할 수 있습니다. 자동 확장에서는 최대 백엔드 사용률인스턴스별 초당 최대 요청 수설정만 작동하는데, 이러한 설정 값은 인스턴스를 추가하거나 삭제하는 방법으로 제어할 수 있기 때문입니다. 예를 들어 인스턴스별로 초당 10개의 요청을 처리하도록 백엔드를 설정하고 이 비율의 80%를 유지하도록 자동 확장 처리를 구성하면 자동 확장 처리는 인스턴스별 초당 요청 수가 변경될 때 인스턴스를 추가하거나 삭제할 수 있습니다.

그룹별 최대 요청 수 설정의 경우 인스턴스 그룹의 인스턴스 수와 별개이므로 자동 확장에 사용할 수 없습니다. 부하 분산기는 그룹 내 인스턴스 수에 관계없이 그룹별 최대 요청 수를 인스턴스 그룹에 계속 보냅니다.

예를 들어 그룹별로 초당 최대 100개의 요청을 처리하도록 백엔드를 설정하면 부하 분산기는 그룹의 인스턴스가 2개든 100개든 상관없이 초당 100개의 요청을 그룹에 보냅니다. 이 값은 조정할 수 없으므로 그룹별 초당 최대 요청 수를 사용하는 부하 분산 구성에서는 자동 확장이 작동하지 않습니다.

부하 분산 제공 용량에 따른 자동 확장 사용 설정

Console


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

    인스턴스 그룹 페이지로 이동

  2. 인스턴스 그룹이 있으면 인스턴스 그룹을 선택하고 그룹 수정을 클릭합니다. 인스턴스 그룹이 없으면 인스턴스 그룹 만들기를 클릭합니다.
  3. 자동 확장에서 켜기를 선택합니다.
  4. 자동 확장 기준에서 HTTP 부하 분산 사용률을 선택합니다.
  5. 목표 부하 분산 사용률을 입력합니다. 이 값은 백분율로 간주됩니다. 예를 들어 HTTP 부하 분산 사용률을 60%로 설정하려면 60을 입력합니다.
  6. 이 인스턴스 그룹에서 원하는 최대 인스턴스 수를 지정합니다. 최소 인스턴스 수와 대기 시간을 설정할 수도 있습니다. 대기 시간은 가상 머신이 시작된 후 자동 확장 처리가 해당 가상 머신에서 정보 수집을 시작하기 전에 대기해야 하는 시간(초)입니다. 이를 통해 인스턴스가 초기화되는 데 걸리는 시간을 알 수 있으며, 이 기간 동안 수집된 데이터는 자동 확장에 적용할 수 없습니다. 기본 대기 시간은 60초입니다.
  7. 변경사항을 저장합니다.

gcloud


제공 용량을 기준으로 확장하는 자동 확장 처리를 사용 설정하려면 set-autoscaling 하위 명령어를 사용합니다. 예를 들어 다음 명령어는 대상 관리형 인스턴스 그룹을 확장하여 60%의 제공 용량을 유지하는 자동 확장 처리를 만듭니다. 자동 확장 처리를 만들 때는 --target-load-balancing-utilization 매개변수와 함께 --max-num-replicas 매개변수도 필요합니다.

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
        --max-num-replicas 20 \
        --target-load-balancing-utilization 0.6 \
        --cool-down-period 90
    

필요한 경우 --cool-down-period 플래그를 사용할 수 있습니다. 이 플래그는 새 인스턴스가 시작된 후 자동 확장 처리가 새 인스턴스에서 수집된 데이터를 고려하기 전에 대기해야 하는 시간(초)을 알려줍니다. 이 대기 시간을 통해 인스턴스가 초기화되는 데 걸리는 시간을 알 수 있으며, 이 기간 동안 수집된 사용률 데이터는 자동 확장에 적용할 수 없습니다. 대기 시간이 지나면 자동 확장 처리가 인스턴스의 사용률 데이터를 반영하기 시작하고 그룹 확장이 필요한지 여부를 결정합니다. 기본 대기 시간은 60초입니다.

describe 하위 명령어를 사용하여 자동 확장 처리가 생성되었는지 확인할 수 있습니다.

gcloud compute instance-groups managed describe example-managed-instance-group
    

사용 가능한 gcloud 명령어 및 플래그의 목록은 gcloud 참조를 확인하세요.

API


참고: 자동 확장은 관리형 인스턴스 그룹의 기능이지만 별도의 API 리소스입니다. 자동 확장 API 요청을 구성할 때는 이 사실을 염두에 두세요.

API에서 autoscalers.insert 메서드에 대해 POST 요청을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/autoscalers/
    

요청 본문에는 name, target, autoscalingPolicy 필드가 포함되어야 합니다. autoscalingPolicyloadBalancingUtilization을 정의해야 합니다.

필요한 경우 coolDownPeriodSec 필드를 사용할 수 있습니다. 이 플래그는 새 인스턴스가 시작된 후 자동 확장 처리가 새 인스턴스에서 수집된 데이터를 고려하기 전에 대기해야 하는 시간(초)을 알려줍니다. 이 대기 시간을 통해 인스턴스가 초기화되는 데 걸리는 시간을 알 수 있으며, 이 기간 동안 수집된 사용률 데이터는 자동 확장에 적용할 수 없습니다. 대기 시간이 지나면 자동 확장 처리가 인스턴스의 사용률 데이터를 반영하기 시작하고 그룹 확장이 필요한지 여부를 결정합니다. 기본 대기 시간은 60초입니다.

{

     "name": "example-autoscaler",
     "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
     "autoscalingPolicy": {
        "maxNumReplicas": 20,
        "loadBalancingUtilization": {
           "utilizationTarget": 0.8
         },
        "coolDownPeriodSec": 90
      }
    }
    

부하 분산 제공 용량에 따른 자동 확장 사용 설정에 대한 자세한 내용은은 Compute Engine을 기반으로 한 웹서비스의 전역적 자동 확장을 참조하세요.

네트워크 부하 분산에 따른 확장

네트워크 부하 분산기는 TCP와 UDP 등의 하위 수준 프로토콜을 사용하여 부하를 분산합니다. 네트워크 부하 분산을 사용하면 SMTP와 같이 HTTP(S)를 기반으로 하지 않는 트래픽을 분산할 수 있습니다.

백엔드 사용률이나 커스텀 측정항목을 사용하여 네트워크 부하 분산기 대상 풀에 속하는 관리형 인스턴스 그룹을 자동 확장할 수 있습니다. 자세한 내용은 백엔드 사용률에 따른 확장이나 Cloud Monitoring 측정 항목에 따른 확장을 참조하세요.