CPU 또는 부하 분산 처리 용량에 따라 확장

가장 단순한 형태의 자동 확장은 가상 머신 인스턴스 그룹의 CPU 사용률에 따라 확장하는 것입니다. 인스턴스 그룹의 HTTP(S) 부하 분산 처리 용량에 따라 확장하도록 선택할 수도 있습니다.

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

시작하기 전에

CPU 사용률에 따라 확장하기

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

자동 확장 처리는 시간 경과에 따른 인스턴스 그룹 내 모든 vCPU의 평균 사용량의 일부로 목표 CPU 사용률 수준을 처리합니다. 총 vCPU의 평균 사용량이 목표 사용률을 초과할 경우 자동 확장 처리가 가상 머신을 더 추가합니다. 예를 들어, 목표 사용률을 0.75로 설정하면 자동 확장 처리가 인스턴스 그룹의 모든 vCPU에서 평균 사용량을 75%로 유지합니다.

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

콘솔


  1. 인스턴스 그룹 페이지로 이동합니다.
  2. 인스턴스 그룹이 있으면 인스턴스 그룹을 선택하고 그룹 편집을 클릭합니다. 인스턴스 그룹이 없으면 인스턴스 그룹 만들기를 클릭합니다.
  3. 자동 확장에서 켜기를 선택합니다.
  4. 자동 확장 기반 아래에서 CPU 사용량을 선택합니다.
  5. 타겟 CPU 사용량을 입력합니다. 이 값은 백분율로 처리됩니다. 예를 들어 CPU 사용량이 60%이면 60을 입력합니다.
  6. 이 인스턴스 그룹에서 원하는 최대 인스턴스 수를 제공합니다. 최소 인스턴스 수와 대기 시간을 설정할 수도 있습니다. 대기 시간은 가상 머신이 시작된 후 자동 확장 처리가 가상 머신에서 정보 수집을 시작하기 전에 대기해야 하는 시간(초)입니다. 이를 통해 가상 머신이 초기화되는 데 걸리는 시간을 알 수 있으며, 이 시간 동안에는 수집한 사용 정보를 자동 확장에 적용할 수 없습니다. 기본 대기 시간은 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에서 POST를 사용자의 프로젝트 ID로, myproject를 원하는 영역으로 바꿔 다음 URL에 대해 us-central1-f 요청을 실행합니다.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers/

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

필요에 따라 새 인스턴스가 시작된 후 자동 확장 처리에서 사용량 수집을 시작하기 전에 대기해야 하는 시간(초)을 자동 확장 처리에 알려주는 coolDownPeriodSec 매개변수를 사용할 수 있습니다. 대기 시간이 지나면 자동 확장 처리는 새 인스턴스에서 사용 정보를 수집하기 시작하고 그룹에 추가 인스턴스가 필요한지를 결정합니다. 이를 통해 인스턴스가 초기화되는 데 걸리는 시간을 알 수 있으며, 이 시간 동안에는 수집한 사용 정보를 자동 확장에 적용할 수 없습니다. 기본 대기 시간은 60초입니다.

{
 "name": "example-autoscaler",
 "target": "https://www.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 사용률이 높은 기간 동안 사용률이 거의 100%에 도달하면 자동 확장 처리는 그룹이 이미 과부하된 것으로 추정합니다. 이러한 경우 자동 확장 처리가 가상 머신 수를 최소 50% 늘리거나 인스턴스를 4개 이상 늘립니다. 이때 둘 중 더 큰 값이 사용됩니다. 일반적으로 관리형 인스턴스 그룹 내의 CPU 사용률은 100%를 넘지 않습니다.

HTTP(S) 부하 분산 처리 용량에 따라 확장하기

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

HTTP(S) 부하 분산기는 여러 인스턴스 그룹에 트래픽을 분산하는 백엔드 서비스를 통해 부하를 분배합니다. 백엔드 서비스에서는 백엔드에 연결된 인스턴스 그룹의 부하 분산 처리 용량을 최대 CPU 사용률, 초당 최대 요청(RPS), 그룹의 초당 최대 요청으로 정의할 수 있습니다. 인스턴스 그룹이 처리 용량에 도달하면 백엔드 서비스가 다른 인스턴스 그룹에 트래픽을 전송하기 시작합니다.

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

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

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

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

적용 가능한 부하 분산 구성

백엔드를 처음 만들 때 부하 분산 처리 용량에 대해 세 가지 옵션(최대 CPU 사용률, 인스턴스당 초당 최대 요청, 전체 그룹의 초당 최대 요청) 중 하나를 설정할 수 있습니다. 자동 확장은 최대 CPU 사용률최대 초/인스턴스당 요청으로만 작동합니다. 이들 값은 인스턴스를 추가하거나 제거하여 제어할 수 있기 때문입니다. 초/인스턴스당 10개의 요청을 처리하도록 백엔드를 설정하고 자동 확장 처리가 해당 비율의 80%를 유지하도록 구성된 경우 초/인스턴스당 요청이 변경되면 자동 확장 처리가 인스턴스를 추가하거나 삭제합니다.

그룹당 최대 요청에서는 자동 확장이 작동하지 않습니다. 이 설정은 인스턴스 그룹의 인스턴스 수에 독립적이기 때문입니다. 부하 분산기는 그룹 내 인스턴스 수에 관계없이 그룹당 최대 요청 수를 인스턴스 그룹에 계속 보냅니다.

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

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

콘솔


  1. Google Cloud Platform 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에서 POST를 사용자의 프로젝트 ID로, myproject를 원하는 영역으로 바꿔 다음 URL에 대해 us-central1-f 요청을 실행합니다.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/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
  }
}

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

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

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

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서