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


이 문서에서는 외부 애플리케이션 부하 분산기 또는 내부 애플리케이션 부하 분산기의 제공 용량을 기준으로 관리형 인스턴스 그룹(MIG)을 확장하는 방법을 설명합니다. 즉, 그룹이 가득찬 상태가 되기 전 구성 가능한 일정 수준에 도달하여 부하 분산기에 이에 대한 알림이 표시되면 자동 확장을 통해 그룹의 VM 인스턴스가 추가되거나 삭제됩니다. 여기서 가득찬 상태는 백엔드 인스턴스 그룹에서 선택된 분산 모드타겟 용량으로 정의됩니다.

또한 CPU 사용률 또는 Monitoring 측정항목을 기준으로 MIG를 확장할 수 있습니다.

제한사항

외부 애플리케이션 부하 분산기내부 애플리케이션 부하 분산기의 제공 용량을 기반으로 관리형 인스턴스 그룹을 자동 확장할 수 있습니다. 다른 유형의 부하 분산기는 지원되지 않습니다.

시작하기 전에

  • 자동 확장 처리 제한사항을 검토합니다.
  • 자동 확장 처리 기초에 대해 읽어봅니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 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

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

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

외부 또는 내부 HTTP(S) 부하 분산기는 해당 URL 맵에 따라 백엔드 서비스에 요청을 배포합니다. 부하 분산기는 하나 이상의 백엔드 서비스를 포함할 수 있으며, 각 서비스는 인스턴스 그룹 또는 네트워크 엔드포인트 그룹(NEG) 백엔드를 지원합니다. 백엔드가 인스턴스 그룹이면 HTTP(S) 부하 분산기에서 두 가지 분산 모드UTILIZATIONRATE가 제공됩니다. UTILIZATION을 사용하면 인스턴스 그룹에 있는 인스턴스의 평균 백엔드 사용률에 최대 타겟을 지정할 수 있습니다. RATE를 사용할 경우에는 인스턴스별 기준 또는 그룹별 기준에 따라 초당 타겟 요청 수를 지정해야 합니다. (영역별 인스턴스 그룹에서만 전체 그룹에 대한 최대 비율 지정이 지원됩니다. 리전별 관리형 인스턴스 그룹에서는 그룹별 최대 비율 정의가 지원되지 않습니다.)

여기에 지정한 분산 모드 및 타겟 용량에 따라 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. 자동 확장 처리가 이 그룹에 만들 수 있는 인스턴스의 최소 및 최대 개수를 지정합니다.
  5. 자동 확장 측정항목 섹션에서 측정항목 추가를 클릭합니다.
  6. 측정항목 유형HTTP 부하 분산 사용률로 설정합니다.
  7. 대상 HTTP 부하 분산 사용률을 입력합니다. 이 값은 백분율로 간주됩니다. 예를 들어 HTTP 부하 분산 사용률을 60%로 설정하려면 60을 입력합니다.

  8. 대기 기간을 사용하여 초기화 기간을 설정할 수 있으며, 이는 애플리케이션이 초기화하는 데 걸리는 시간을 자동 확장 처리에 알려줍니다. 정확한 초기화 기간을 지정하면 자동 확장 처리 결정이 향상됩니다. 예를 들어 아직 초기화 중인 VM은 애플리케이션의 일반적인 사용량을 아직 나타내지 않을 수 있으므로, 수평 확장 시 자동 확장 처리는 이러한 VM의 데이터를 무시합니다. 기본 초기화 기간은 60초입니다.

  9. 변경사항을 저장합니다.

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 플래그를 사용하여 애플리케이션이 초기화되는 데 걸리는 시간을 자동 확장 처리에 알려주는 초기화 기간을 설정할 수 있습니다. 정확한 초기화 기간을 지정하면 자동 확장 처리 결정이 향상됩니다. 예를 들어 아직 초기화 중인 VM은 애플리케이션의 일반적인 사용량을 아직 나타내지 않을 수 있으므로, 수평 확장 시 자동 확장 처리는 이러한 VM의 데이터를 무시합니다. 기본 초기화 기간은 60초입니다.

instance-groups managed describe 하위 명령어를 사용하면 자동 확장 처리가 올바르게 만들어졌는지 확인할 수 있습니다.

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

사용 가능한 gcloud 명령어 및 플래그의 목록은 gcloud 참조에서 확인할 수 있습니다.

REST

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

다음 예시에서는 영역별 MIG의 자동 확장 처리를 만듭니다.

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

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

coolDownPeriodSec 필드를 사용하여 애플리케이션이 초기화되는 데 걸리는 시간을 자동 확장 처리에 알려주는 초기화 기간을 설정할 수 있습니다. 정확한 초기화 기간을 지정하면 자동 확장 처리 결정이 향상됩니다. 예를 들어 아직 초기화 중인 VM은 애플리케이션의 일반적인 사용량을 아직 나타내지 않을 수 있으므로, 수평 확장 시 자동 확장 처리는 이러한 VM의 데이터를 무시합니다. 기본 초기화 기간은 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을 기반으로 한 웹서비스의 전역적 자동 확장을 참조하세요.

다음 단계