리전 MIG에서 VM의 목표 분산 형태 설정


리전 관리형 인스턴스 그룹(MIG)을 사용하면 MIG의 목표 분산 형태를 다음 옵션 중 하나로 설정할 수 있습니다.

  • EVEN(균등, 기본값): 그룹에서 VM을 만들고 삭제하여 선택한 영역에서 동일한 수의 VM을 얻고 유지합니다. EVEN 분산에서는 두 영역의 VM 수가 1개 이상 차이 나지 않습니다. 가용성이 높은 서빙 워크로드에 사용하는 것이 좋습니다.
  • BALANCED(균형): 그룹에서 리소스를 사용할 수 있는 영역에 VM을 만드는 데 우선순위를 두는 동시에, 선택한 영역에 VM을 최대한 균등하게 분산하여 영역 장애의 영향을 최소화합니. 가용성이 높은 서빙 또는 일괄 워크로드에 사용하는 것이 좋습니다.
  • ANY(무관): 그룹에서 VM 인스턴스를 만들어 현재 제한된 리소스 내에서 요청된 수의 VM을 처리하고 미사용 영역 예약의 사용률을 극대화하기 위한 영역을 선택합니다. 고가용성이 필요하지 않은 일괄 워크로드에 사용하는 것이 좋습니다.
  • ANY SINGLE ZONE(모든 단일 영역): 그룹에서 단일 영역 내에 모든 VM 인스턴스를 만듭니다. 영역은 하드웨어 지원, 현재 리소스 및 할당량 가용성, 일치하는 예약에 따라 선택됩니다. VM 간의 광범위한 통신이 필요한 워크로드에는 압축 인스턴스 배치 정책과 함께 사용하는 것이 좋습니다.

리전 관리형 인스턴스 그룹에서 예약된 VM을 사용하려면 적용 가능한 각 영역에 같은 이름의 동일한 예약을 만듭니다. 그런 다음 그룹의 인스턴스 템플릿에서 이름을 기준으로 예약을 타겟팅합니다.

형태를 선택하는 데 도움을 받으려면 비교 표, 사용 사례분산 형태 작동 방식을 참조하십시오.

리전 MIG를 만들거나 기존 리전 MIG의 목표 형태를 업데이트할 때 목표 분산 형태를 설정합니다.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      로컬 개발 환경에서 이 페이지의 Terraform 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      자세한 내용은 다음을 참조하세요: Set up authentication for a local development environment.

      REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

제한사항

  • MIG를 만들 때만 MIG의 영역을 선택할 수 있습니다.
  • MIG의 인스턴스 템플릿 또는 스테이트풀(Stateful) 구성에서 선택한 모든 영역에서 사용할 수 없는 리소스를 지정하면 다음 제한사항이 적용됩니다.

    • 목표 분산 형태BALANCED, ANY 또는 ANY_SINGLE_ZONE으로 설정해야 합니다.
    • MIG에 필요한 모든 리소스(예: 기존 디스크, 머신 유형 또는 GPU)를 선택한 영역 중 최소 하나 이상에서 사용할 수 있는지 확인해야 합니다.
    • MIG의 구성(예: 인스턴스 템플릿)을 선택한 모든 영역에서 인스턴스화할 수 없는 구성으로 업데이트하려면 새 구성을 설정하기 전에 지원되지 않는 모든 영역에서 관리형 인스턴스를 삭제해야 합니다.
  • 목표 분산 형태를 BALANCED 또는 ANY_SINGLE_ZONE으로 설정하려면 사전 재분산을 중지해야 합니다.

  • 리전 MIG를 자동 확장하려면 그룹의 목표 분산 형태BALANCED(미리보기) 또는 EVEN으로 설정해야 합니다.
  • 목표 분산 형태를 BALANCED, ANY 또는 ANY_SINGLE_ZONE으로 설정하면 다음과 같은 제한사항이 적용됩니다.

    • 두 가지 버전이 포함된 카나리아 업데이트는 지원되지 않습니다.
    • 전체 리전에서 요청된 리소스를 사용할 수 없는 경우 그룹은 리소스를 이미 사용할 수 없는 영역에서 VM 인스턴스 생성을 예약할 수 있습니다. 그룹 크기를 줄이고 높여서 다른 영역에서 요청된 리소스를 가져올 수 있습니다.
    • SUBSTITUTE 교체 메서드를 사용하는 순차적 업데이트에서는 해당 영역에 새 버전의 요구사항을 수용하기 위한 리소스가 없더라도 오래된 머신과 동일한 영역에 새 업데이트된 인스턴스를 만들려고 시도합니다. 이 동작을 조정하기 위해 제한된 영역에서 오래된 VM을 삭제한 후 그룹 크기를 삭제된 VM의 수만큼 늘릴 수 있습니다. 이 그룹은 용량을 사용할 수 있는 영역의 최신 템플릿에서 인스턴스를 만듭니다.
    • 선택된 모든 영역에서 사용할 수 없는 리소스를 지정하는 템플릿으로 그룹의 인스턴스 템플릿을 업데이트하려면 새 템플릿을 설정하기 전에 지원되지 않는 영역에서 관리형 인스턴스를 삭제해야 합니다.
  • 목표 분산 형태를 ANY_SINGLE_ZONE으로 설정하고 그룹의 단일 영역에 기존 VM이 있으면 해당 영역에만 추가 VM을 만들 수 있습니다. 다른 영역을 사용하려면 먼저 그룹에서 VM 0개로 수평 축소해야 합니다.

  • 단독 테넌트 VM 그룹을 프로비저닝해야 하는 경우 MIG의 목표 분산 형태를 EVEN으로 설정해야 합니다. MIG 영역과 동일한 영역에 노드 그룹을 만들고 MIG의 인스턴스 템플릿에서 MIG의 노드 어피니티를 설정합니다.

목표 분산 형태로 그룹 만들기

그룹을 만들고 영역을 선택하고 목표 분산 형태를 설정하려면 Google Cloud 콘솔, gcloud CLI, Terraform, REST를 사용합니다.

콘솔

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

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

  2. 인스턴스 그룹 만들기를 클릭하여 새 인스턴스 그룹을 만듭니다.
  3. 새 관리형 인스턴스 그룹 옵션인 스테이트리스(Stateless)(기본값)와 스테이트풀(Stateful) 중 하나를 선택합니다.
  4. 인스턴스 그룹에 이름과 설명(선택사항)을 할당합니다.
  5. 인스턴스 그룹의 인스턴스 템플릿을 선택하거나 새로 만듭니다.
  6. 이 그룹의 VM 수를 지정합니다. 가용성이 높은 워크로드의 경우 영역 오류가 발생할 경우 애플리케이션을 지원하기에 충분한 VM을 프로비저닝해야 합니다.
  7. 위치에서 다중 영역을 선택합니다.
  8. 리전을 선택하고 사용할 영역을 선택합니다.

    • MIG에서 리전의 모든 영역을 사용할 수 있게 하려면 사용 가능한 모든 영역을 선택합니다.
    • 리전 MIG를 만든 후에는 다른 영역을 사용하도록 업데이트할 수 없습니다.
  9. 목표 분산 형태를 선택합니다.

    1. 자동 확장 섹션에서 ANY 또는 ANY SINGLE ZONE을 선택하려면 자동 확장 모드를 클릭하고 자동 확장 구성 삭제를 선택합니다.
    2. ANY SINGLE ZONE 또는BALANCED를 선택하려면 인스턴스 재분산 섹션에서 인스턴스 재분산 사용 설정을 선택하지 마세요.
  10. MIG 만들기 프로세스의 나머지 과정을 계속 진행합니다.

gcloud

gcloud compute instance-groups managed create 명령어를 사용하고 --target-distribution-shape 플래그를 포함합니다.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template TEMPLATE \
    --size SIZE \
    --region REGION \
    --zones ZONES \
    --target-distribution-shape SHAPE

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 인스턴스 그룹의 이름
  • TEMPLATE: 그룹에 사용할 인스턴스 템플릿의 이름
  • SIZE: 인스턴스 그룹의 대상 크기
  • REGION: 그룹을 배치할 리전
  • ZONES(선택사항): VM 인스턴스를 배포할 리전의 영역 목록입니다. 기본적으로 Compute Engine은 자동으로 영역 3개를 선택합니다.

    • MIG에서 리전의 모든 영역을 사용할 수 있게 하려면 사용 가능한 모든 영역을 지정합니다. 다음 명령어를 사용하여 리전 내 영역 목록을 가져올 수 있습니다.

      gcloud compute zones list --filter=region:REGION --format='list(NAME)'
    • 리전 MIG를 만든 후에는 다른 영역을 사용하도록 업데이트할 수 없습니다.

  • SHAPE: 목표 분산 형태. 다음 값 중 하나일 수 있습니다.

    • even(기본값): 그룹에서 VM을 만들고 삭제하여 선택한 영역에서 동일한 수의 VM을 얻고 유지합니다. EVEN 분산에서는 두 영역의 VM 수가 1개 이상 차이 나지 않습니다. 고가용성 제공 워크로드에 사용하는 것이 좋습니다.
    • balanced: 그룹에서 리소스를 사용할 수 있는 영역에 VM을 만드는 데 우선순위를 두는 동시에, 선택한 영역에 VM을 최대한 균등하게 분산하여 영역 장애의 영향을 최소화합니다. 가용성이 높은 서빙 또는 일괄 워크로드에 사용하는 것이 좋습니다.
    • any: 그룹에서 VM 인스턴스를 만들어 현재 제한된 리소스 내에서 요청된 수의 VM을 처리하고 미사용 영역 예약의 사용률을 극대화하기 위한 영역을 선택합니다. 고가용성이 필요하지 않은 일괄 워크로드에 사용하는 것이 좋습니다.
    • any-single-zone: 그룹에서 단일 영역 내에 모든 VM 인스턴스를 만듭니다. 영역은 하드웨어 지원, 현재 리소스 및 할당량 가용성, 일치하는 예약에 따라 선택됩니다. VM 간의 광범위한 통신이 필요한 워크로드에는 압축 인스턴스 배치 정책과 함께 사용하는 것이 좋습니다.

예를 들어 균형 있는 목표 분산 형태로 리전 MIG를 만들려면 --target-distribution-shape 플래그를 balanced로 설정합니다.

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c \
    --target-distribution-shape balanced \
    --instance-redistribution-type none

Terraform

MIG의 각 VM에 대해 원하는 머신 유형, 부팅 디스크 이미지, 네트워크, 기타 VM 속성을 지정하는 인스턴스 템플릿을 아직 만들지 않았으면 인스턴스 템플릿을 만듭니다.

리전 MIG를 만들려면 google_compute_region_instance_group_manager 리소스를 사용합니다.

다음 예시에서는 BALANCED 목표 분산 형태로 리전 MIG를 만듭니다.

resource "google_compute_region_instance_group_manager" "default" {
  name                             = "example-rmig"
  region                           = "us-east1"
  distribution_policy_zones        = ["us-east1-b", "us-east1-c"]
  distribution_policy_target_shape = "BALANCED"
  update_policy {
    type                         = "PROACTIVE"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  target_size        = 30
  base_instance_name = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

REST

regionInstanceGroupManagers.insert 메서드를 호출합니다. 요청 본문에 distributionPolicy 속성을 포함하고 그 targetShape 필드를 설정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
    "name": INSTANCE_GROUP_NAME,
    "instanceTemplate": "global/instanceTemplates/TEMPLATE",
    "targetSize": SIZE,
    "distributionPolicy": {
        "zones": [
            {"zone": "zones/ZONE1"},
            {"zone": "zones/ZONE2"},
            {"zone": "zones/ZONE3"},
        ],
        "targetShape": "SHAPE"
    }
}

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID
  • REGION: 인스턴스 그룹의 리전
  • INSTANCE_GROUP_NAME: 인스턴스 그룹의 이름
  • TEMPLATE: 인스턴스 그룹에 사용할 인스턴스 템플릿의 이름
  • SIZE: 인스턴스 그룹의 대상 크기
  • ZONE: VM 인스턴스를 배포할 리전의 영역 이름
    • MIG에서 리전의 모든 영역을 사용할 수 있게 하려면 사용 가능한 모든 영역을 지정합니다. regions.get 메서드를 호출하여 리전 내 영역 목록을 가져올 수 있습니다.
    • 리전 MIG를 만든 후에는 다른 영역을 사용하도록 업데이트할 수 없습니다.
  • SHAPE: 목표 분산 형태. 다음 값 중 한 가지일 수 있습니다.
    • EVEN(기본값): 그룹에서 VM을 만들고 삭제하여 선택한 영역에서 동일한 수의 VM을 얻고 유지합니다. EVEN 분산에서는 두 영역의 VM 수가 1개 이상 차이 나지 않습니다. 고가용성 제공 워크로드에 사용하는 것이 좋습니다.
    • BALANCED: 그룹에서 리소스를 사용할 수 있는 영역에 VM을 만드는 데 우선순위를 두는 동시에, 선택한 영역에 VM을 최대한 균등하게 분산하여 영역 장애의 영향을 최소화합니다. 가용성이 높은 서빙 또는 일괄 워크로드에 사용하는 것이 좋습니다.
    • ANY: 그룹에서 VM 인스턴스를 만들어 현재 제한된 리소스 내에서 요청된 수의 VM을 처리하고 미사용 영역 예약의 사용률을 극대화하기 위한 영역을 선택합니다. 고가용성이 필요하지 않은 일괄 워크로드에 사용하는 것이 좋습니다.
    • ANY_SINGLE_ZONE: 그룹에서 단일 영역 내에 모든 VM 인스턴스를 만듭니다. 영역은 하드웨어 지원, 현재 리소스 및 할당량 가용성, 일치하는 예약에 따라 선택됩니다. VM 간의 광범위한 통신이 필요한 워크로드에는 압축 인스턴스 배치 정책과 함께 사용하는 것이 좋습니다.

기존 그룹의 목표 분산 형태 변경

기존 리전 MIG에서 목표 분산 형태를 변경할 수 있지만 다음과 같은 제한사항이 있습니다.

  • 목표 분산 형태를 BALANCED 또는 ANY_SINGLE_ZONE으로 변경하려면 먼저 사전 재분산을 사용 중지해야 합니다.
  • 목표 분산 형태를 EVEN으로 변경하고 현재 인스턴스 분산이 균일하지 않으면 먼저 사전 재분산을 사용 중지해야 합니다.
  • 형태를 EVEN으로 변경하고 사전 재분산을 다시 사용 설정하려면 먼저 그룹을 수동으로 재조정해야 합니다.
  • 목표 분산 형태를 EVEN으로 변경하려고 하는데 인스턴스 템플릿이 선택된 모든 영역에서 지원되지 않는 리소스를 지정한 경우, 먼저 그룹의 인스턴스 템플릿을 선택된 모든 영역에서 지원되는 템플릿으로 업데이트해야 합니다.

콘솔

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

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

  2. 목록의 이름 열에서 목표 분산 형태를 변경하려는 인스턴스 그룹 이름을 클릭합니다.
  3. 수정을 클릭하여 이 관리형 인스턴스 그룹을 수정합니다.
  4. 목표 분산 형태에서 원하는 형태를 지정합니다.
  5. 저장을 클릭하여 새 템플릿을 적용합니다.

gcloud

gcloud compute instance-groups managed update 명령어를 사용하고 --target-distribution-shape 플래그를 포함합니다.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --target-distribution-shape SHAPE

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 인스턴스 그룹의 이름
  • SHAPE: 목표 분산 형태. 다음 값 중 한 가지일 수 있습니다.
    • even(기본값): 그룹에서 VM을 만들고 삭제하여 선택한 영역에서 동일한 수의 VM을 얻고 유지합니다. EVEN 분산에서는 두 영역의 VM 수가 1개 이상 차이 나지 않습니다. 고가용성 제공 워크로드에 사용하는 것이 좋습니다.
    • balanced: 그룹에서 리소스를 사용할 수 있는 영역에 VM을 만드는 데 우선순위를 두는 동시에, 선택한 영역에 VM을 최대한 균등하게 분산하여 영역 장애의 영향을 최소화합니다. 가용성이 높은 서빙 또는 일괄 워크로드에 사용하는 것이 좋습니다.
    • any: 그룹에서 VM 인스턴스를 만들어 현재 제한된 리소스 내에서 요청된 수의 VM을 처리하고 미사용 영역 예약의 사용률을 극대화하기 위한 영역을 선택합니다. 고가용성이 필요하지 않은 일괄 워크로드에 사용하는 것이 좋습니다.
    • any-single-zone: 그룹에서 단일 영역 내에 모든 VM 인스턴스를 만듭니다. 영역은 하드웨어 지원, 현재 리소스 및 할당량 가용성, 일치하는 예약에 따라 선택됩니다. VM 간의 광범위한 통신이 필요한 워크로드에는 압축 인스턴스 배치 정책과 함께 사용하는 것이 좋습니다.

REST

regionInstanceGroupManagers.patch 메서드를 호출합니다. 요청 본문에 distributionPolicy 속성을 포함하고 그 targetShape 필드를 설정합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
    "distributionPolicy": {
        "targetShape": "SHAPE"
    }
}

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID
  • REGION: 인스턴스 그룹의 리전
  • INSTANCE_GROUP_NAME: 인스턴스 그룹의 이름
  • SHAPE: 목표 분산 형태. 다음 값 중 한 가지일 수 있습니다.
    • EVEN(기본값): 그룹에서 VM을 만들고 삭제하여 선택한 영역에서 동일한 수의 VM을 얻고 유지합니다. EVEN 분산에서는 두 영역의 VM 수가 1개 이상 차이 나지 않습니다. 고가용성 제공 워크로드에 사용하는 것이 좋습니다.
    • BALANCED: 그룹에서 리소스를 사용할 수 있는 영역에 VM을 만드는 데 우선순위를 두는 동시에, 선택한 영역에 VM을 최대한 균등하게 분산하여 영역 장애의 영향을 최소화합니다. 가용성이 높은 서빙 또는 일괄 워크로드에 사용하는 것이 좋습니다.
    • ANY: 그룹에서 VM 인스턴스를 만들어 현재 제한된 리소스 내에서 요청된 수의 VM을 처리하고 미사용 영역 예약의 사용률을 극대화하기 위한 영역을 선택합니다. 고가용성이 필요하지 않은 일괄 워크로드에 사용하는 것이 좋습니다.
    • ANY_SINGLE_ZONE: 그룹에서 단일 영역 내에 모든 VM 인스턴스를 만듭니다. 영역은 하드웨어 지원, 현재 리소스 및 할당량 가용성, 일치하는 예약에 따라 선택됩니다. VM 간의 광범위한 통신이 필요한 워크로드에는 압축 인스턴스 배치 정책과 함께 사용하는 것이 좋습니다.

구성된 인스턴스 분산 정책 보기

콘솔

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

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

    기존 인스턴스 그룹이 있으면 페이지에 나열됩니다.
  2. 검사할 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성과 그룹에 포함된 인스턴스 목록이 표시된 페이지가 열립니다.
  3. 세부정보를 클릭하면
  4. 위치 섹션에서 목표 분산 형태를 찾습니다.

gcloud

gcloud compute instance-groups managed describe 명령어를 실행합니다.

gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --region REGION

이 명령어는 distributionPolicy.targetShape 필드를 포함하여 그룹의 세부정보를 반환합니다.

...
distributionPolicy:
  targetShape: BALANCED
  zones:
  - zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f
  ...
name: my-group
region: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1
...

REST

regionInstanceGroupManagers.get 메서드에 대한 GET 요청을 생성합니다.

GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID
  • REGION: 인스턴스 그룹의 리전입니다.
  • INSTANCE_GROUP_NAME: 인스턴스 그룹의 이름입니다.

목표 분산 형태는 distributionPolicy.targetShape 필드에 반환됩니다. 예를 들면 다음과 같습니다.

{
  "name": "my-instance-group",
  "distributionPolicy": {
    "targetShape": "BALANCED",
  },
  "targetSize": 50,
  ...
}

다음 단계