부하 분산 처리 용량을 기준으로 확장

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

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

시작하기 전에

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. 자동 확장 기준에서 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을 기반으로 한 웹서비스의 전역적 자동 확장을 참조하세요.

다른 유형의 부하 분산기를 위한 확장

다른 유형의 Google Cloud 부하 분산기를 위한 백엔드로 사용되는 관리형 인스턴스 그룹을 자동으로 확장하기 위해서는 다른 자동 확장 처리 정책을 사용합니다.