분산 배치 정책을 만들어 VM에 적용


이 문서에서는 가상 머신(VM) 인스턴스에 분산 배치 정책을 만들고 적용하여 안정성을 향상시키는 방법을 설명합니다.

분산 배치 정책에서는 VM이 여러 가용성 도메인에 분산되도록 지정합니다. 이 분산은 하드웨어 오류와 같은 위치별 서비스 중단을 완화하는 데 도움이 되며 Hadoop 분산 파일 시스템(HDFS), Cassandra, Kafka와 같이 대규모로 분산되고 복제된 워크로드를 실행할 때 유용합니다.

시작하기 전에

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

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

    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. REST

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

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

        gcloud init

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

필요한 역할

분산 배치 정책을 만들고 VM에 적용하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Compute 인스턴스 관리자(v1)(roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 분산 배치 정책을 만들고 VM에 적용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

분산 배치 정책을 만들고 VM에 적용하려면 다음 권한이 필요합니다.

  • 배치 정책 만들기: 프로젝트에 대한 compute.resourcePolicies.create 권한
  • 기존 VM에 배치 정책 적용: 프로젝트에 대한 compute.instances.addResourcePolicies 권한
  • VM 만들기:
    • 프로젝트에 대한 compute.instances.create 권한
    • 커스텀 이미지를 사용하여 VM 만들기: 이미지에 대한 compute.images.useReadOnly 권한
    • 스냅샷을 사용하여 VM 만들기: 스냅샷에 대한 compute.snapshots.useReadOnly 권한
    • 인스턴스 템플릿을 사용하여 VM 만들기: 인스턴스 템플릿에 대한 compute.instanceTemplates.useReadOnly 권한
    • VM에 기존 네트워크 할당: 프로젝트에 대한 compute.networks.use 권한
    • VM의 고정 IP 주소 지정: 프로젝트에 대한 compute.addresses.use 권한
    • 기존 네트워크 사용 시 VM에 외부 IP 주소 할당: 프로젝트에 대한 compute.networks.useExternalIp 권한
    • VM의 서브넷 지정: 프로젝트 또는 선택한 서브넷에 대한 compute.subnetworks.use 권한
    • VPC 네트워크를 사용할 때 VM에 외부 IP 주소 할당: 프로젝트 또는 선택한 서브넷에 대한 compute.subnetworks.useExternalIp 권한
    • VM에 VM 인스턴스 메타데이터 설정: 프로젝트에 대한 compute.instances.setMetadata 권한
    • VM에 태그 설정: VM에 대한 compute.instances.setTags 권한
    • VM에 라벨 설정: VM에 대한 compute.instances.setLabels 권한
    • VM에 사용할 서비스 계정 설정: VM에 대한 compute.instances.setServiceAccount 권한
    • VM의 새 디스크 만들기: 프로젝트에 대한 compute.disks.create 권한
    • 기존 디스크를 읽기 전용 또는 읽기-쓰기 모드로 연결: 디스크에 대한 compute.disks.use 권한
    • 기존 디스크를 읽기 전용 모드로 연결: 디스크에 대한 compute.disks.useReadOnly 권한
  • 인스턴스 템플릿 만들기: 프로젝트에 대한 compute.instanceTemplates.create 권한
  • 관리형 인스턴스 그룹(MIG) 만들기: 프로젝트에 대한 compute.instanceGroupManagers.create 권한

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

분산 배치 정책 만들기

VM에 분산 배치 정책의 적용을 테스트하지 않는 한 Google Cloud에서는 가용성 도메인이 2개 이상인 분산 배치 정책을 만드는 것이 좋습니다. 이렇게 하면 단일 하드웨어 오류로 모든 VM이 영향을 받을 위험이 완화됩니다. 자세한 내용은 분산 배치 정책 정보를 참조하세요.

분산 배치 정책을 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

분산 배치 정책을 만들려면 --availability-domain-count 플래그와 함께 gcloud compute resource-policies create group-placement 명령어를 사용합니다.

gcloud compute resource-policies create group-placement POLICY_NAME \
    --availability-domain-count=DOMAIN_COUNT \
    --region=REGION

다음을 바꿉니다.

  • POLICY_NAME: 분산 배치 정책의 이름입니다.

  • DOMAIN_COUNT: VM을 배치할 가용성 도메인의 고유한 개수입니다. 값은 1에서 8 사이여야 합니다.

  • REGION: 배치 정책을 만들려는 리전입니다.

REST

분산 배치 정책을 만들려면 resourcePolicies.insert 메서드POST 요청을 수행합니다. 요청 본문에 availabilityDomainCount 필드를 포함합니다.

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

{
  "name": "POLICY_NAME",
  "groupPlacementPolicy": {
    "availabilityDomainCount": DOMAIN_COUNT
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 배치 정책을 만들 프로젝트의 ID입니다.

  • REGION: 배치 정책을 만들려는 리전입니다.

  • POLICY_NAME: 분산 배치 정책의 이름입니다.

  • DOMAIN_COUNT: VM을 배치할 가용성 도메인의 고유한 개수입니다. 값은 1에서 8 사이여야 합니다.

분산 배치 정책 적용

분산 배치 정책은 기존 VM 또는 MIG에 적용하거나 VM, 인스턴스 템플릿 또는 MIG를 만들 때 적용할 수 있습니다.

Compute Engine 리소스에 분산 배치 정책을 적용하려면 다음 방법 중 하나를 선택합니다.

VM에 분산 배치 정책을 적용한 후 VM 세부정보를 확인하고 availabilityDomain 필드의 값을 확인하여 VM이 있는 가용성 도메인을 확인할 수 있습니다.

기존 VM에 정책 적용

기존 VM에 분산 배치 정책을 적용하기 전에 다음을 고려하세요.

  • 분산 배치 정책에서 가용성 도메인을 여러 개 지정하는 경우 VM을 중지하지 않고도 VM에 정책을 적용할 수 있습니다. 그러나 VM을 다른 가용성 도메인으로 다시 배치해야 할 수도 있습니다. 이 프로세스 중에 Compute Engine은 호스트 유지보수 정책에 따라 VM을 중지하거나 라이브 마이그레이션합니다.

  • VM 및 분산 배치 정책은 같은 리전에 있어야 합니다. 예를 들어 배치 정책이 us-central1 리전에 있는 경우 VM이 us-central1의 영역에 있어야 합니다. VM을 다른 리전으로 마이그레이션해야 하는 경우 영역 또는 리전 간에 VM 이동하기를 참고하세요.

VM을 배치할 가용성 도메인을 지정하려면 속성을 업데이트하여 배치 정책을 VM에 적용합니다. VM 속성을 업데이트할 때 resourcePoliciesscheduling.availabilityDomain 필드를 포함해야 합니다.

기존 VM에 분산 배치 정책을 적용하려면 다음 옵션 중 하나를 선택합니다.

gcloud

기존 VM에 분산 배치 정책을 적용하려면 gcloud compute instances add-resource-policies 명령어를 사용합니다.

gcloud compute instances add-resource-policies VM_NAME \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

다음을 바꿉니다.

  • VM_NAME: 기존 VM의 이름입니다.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

  • ZONE: VM이 있는 영역입니다.

REST

기존 VM에 분산 배치 정책을 적용하려면 instances.addResourcePolicies 메서드POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/addResourcePolicies

{
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 분산 배치 정책 및 VM이 있는 프로젝트의 ID입니다.

  • ZONE: VM이 있는 영역입니다.

  • VM_NAME: 기존 VM의 이름입니다.

  • REGION: 분산 배치 정책이 있는 리전입니다.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

VM을 만드는 동안 정책 적용

배치 정책과 동일한 리전에 분산 배치 정책을 지정하는 VM만 만들 수 있습니다.

분산 배치 정책을 지정하는 VM을 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

분산 배치 정책을 지정하는 VM을 만들려면 gcloud compute instances create 명령어--resource-policies 플래그와 함께 사용합니다.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

다음을 바꿉니다.

  • VM_NAME: 만들려는 VM의 이름입니다.

  • MACHINE_TYPE: VM의 머신 유형입니다.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

  • ZONE: VM을 만들 영역입니다.

원하는 경우 VM을 만들 가용성 도메인을 지정하려면 --availability-domain 플래그를 포함합니다.

gcloud compute instances create VM_NAME \
    --availability-domain=DOMAIN_NUMBER \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

DOMAIN_NUMBER를 VM을 배치할 가용성 도메인의 번호로 바꿉니다. 값은 1과 분산 배치 정책에 지정된 도메인 수 사이여야 합니다. 분산 배치 정책의 도메인 수를 확인하려면 배치 정책 세부정보를 확인합니다.

REST

분산 배치 정책을 지정하는 VM을 만들려면 instances.insert 메서드POST 요청을 수행합니다. 요청 본문에 resourcePolicies 필드를 포함합니다.

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

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 분산 배치 정책이 있는 프로젝트의 ID입니다.

  • ZONE: VM을 만드는 영역이자 머신 유형이 있는 영역입니다. 분산 배치 정책의 리전 내 영역만 지정할 수 있습니다.

  • VM_NAME: 만들려는 VM의 이름입니다.

  • MACHINE_TYPE: VM의 머신 유형입니다.

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE: 다음 중 하나를 지정합니다.

    • OS 이미지의 특정 버전입니다(예: debian-12-bookworm-v20240617).

    • 이미지 계열이며 형식은 family/IMAGE_FAMILY여야 합니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.

  • REGION: 분산 배치 정책이 있는 리전입니다.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

원하는 경우 VM을 만들 가용성 도메인을 지정하려면 요청 본문에 availabilityDomain 필드를 포함합니다.

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

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ],
  "scheduling": {
    "availabilityDomain": DOMAIN_NUMBER
  }
}

DOMAIN_NUMBER를 VM을 배치할 가용성 도메인의 번호로 바꿉니다. 값은 1과 분산 배치 정책에 지정된 도메인 수 사이여야 합니다. 분산 배치 정책의 도메인 수를 확인하려면 배치 정책 세부정보를 확인합니다.

VM을 만들기 위한 구성 옵션에 대한 자세한 내용은 VM 인스턴스 만들기 및 시작을 참고하세요.

VM을 일괄 생성하는 동안 정책 적용

분산 배치 정책을 지정하는 VM을 일괄 생성하기 전에 다음을 확인합니다.

  • 배치 정책과 동일한 리전에 분산 배치 정책을 지정하는 VM만 일괄 생성할 수 있습니다.

  • 분산 배치 정책을 사용하여 VM을 일괄 생성할 때 원하는 경우 VM을 만들 가용성 도메인을 지정할 수 있습니다. 단일 도메인에 모든 VM을 만들지 마세요. 그렇지 않으면 단일 하드웨어 오류가 모든 VM에 영향을 주는 위험을 완화할 수 없습니다.

분산 배치 정책을 지정하는 VM을 일괄로 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

분산 배치 정책을 지정하는 VM을 일괄로 만들려면 gcloud compute instances bulk create 명령어--resource-policies 플래그와 함께 사용합니다.

예를 들어 단일 영역에서 일괄로 VM을 만들고 VM의 이름 패턴을 지정하려면 다음 명령어를 실행하세요.

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

다음을 바꿉니다.

  • COUNT: 만들 VM 수입니다.

  • MACHINE_TYPE: VM의 머신 유형입니다.

  • NAME_PATTERN: VM의 이름 패턴입니다. VM 이름에서 일련의 숫자를 바꾸려면 해시(#) 문자 시퀀스를 사용하세요. 예를 들어 이름 패턴에 vm-#을 사용하면 이름이 vm-1, vm-2로 시작하고 COUNT에 지정된 최대 VM 수까지 이어지는 VM이 생성됩니다.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

  • ZONE: VM을 일괄로 만들 영역입니다.

원하는 경우 VM을 일괄 생성할 가용성 도메인을 지정하려면 --availability-domain 플래그를 포함합니다.

gcloud compute instances bulk create \
    --availability-domain=DOMAIN_NUMBER \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern=NAME_PATTERN \
    --resource-policies=POLICY_NAME \
    --zone=ZONE

DOMAIN_NUMBER를 VM을 배치할 가용성 도메인의 번호로 바꿉니다. 값은 1과 분산 배치 정책에 지정된 도메인 수 사이여야 합니다. 분산 배치 정책의 도메인 수를 확인하려면 배치 정책 세부정보를 확인합니다.

REST

분산 배치 정책을 지정하는 VM을 일괄 생성하려면 instances.bulkInsert 메서드POST 요청을 수행합니다. 요청 본문에 resourcePolicies 필드를 포함합니다.

예를 들어 단일 영역에서 일괄로 VM을 만들고 VM의 이름 패턴을 지정하려면 다음 POST 요청을 수행합니다.

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 분산 배치 정책이 있는 프로젝트의 ID입니다.

  • ZONE: VM을 일괄로 만들 영역입니다.

  • COUNT: 만들 VM 수입니다.

  • NAME_PATTERN: VM의 이름 패턴입니다. VM 이름에서 일련의 숫자를 바꾸려면 해시(#) 문자 시퀀스를 사용하세요. 예를 들어 이름 패턴에 vm-#을 사용하면 이름이 vm-1, vm-2로 시작하고 COUNT에 지정된 최대 VM 수까지 이어지는 VM이 생성됩니다.

  • MACHINE_TYPE: VM의 머신 유형입니다.

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE: 다음 중 하나를 지정합니다.

    • OS 이미지의 특정 버전입니다(예: debian-12-bookworm-v20240617).

    • 이미지 계열이며 형식은 family/IMAGE_FAMILY여야 합니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

원하는 경우 VM을 일괄 생성할 가용성 도메인을 지정하려면 요청 본문에 availabilityDomain 필드를 포함합니다.

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": "COUNT",
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

DOMAIN_NUMBER를 VM을 배치할 가용성 도메인의 번호로 바꿉니다. 값은 1과 분산 배치 정책에 지정된 도메인 수 사이여야 합니다. 분산 배치 정책의 도메인 수를 확인하려면 배치 정책 세부정보를 확인합니다.

VM을 일괄로 만들기 위한 구성 옵션에 대한 자세한 내용은 일괄로 VM 만들기를 참고하세요.

인스턴스 템플릿을 만드는 동안 정책 적용

분산 배치 정책을 지정하는 인스턴스 템플릿을 만들기 전에 다음을 확인합니다.

  • 리전 인스턴스 템플릿을 만들려면 분산 배치 정책과 동일한 리전에 템플릿을 만듭니다. 그렇게 하지 않으면 인스턴스 템플릿을 만들 수 없습니다.

  • 인스턴스 템플릿을 만들 때 필요한 경우 VM을 만들 가용성 도메인을 지정할 수 있습니다. 단일 도메인에 모든 VM을 만들지 마세요. 그렇지 않으면 단일 하드웨어 오류가 모든 VM에 영향을 주는 위험을 완화할 수 없습니다.

분산 배치 정책을 지정하는 인스턴스 템플릿을 만든 후에는 템플릿을 사용하여 다음을 수행할 수 있습니다.

분산 배치 정책을 지정하는 인스턴스 템플릿을 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

분산 배치 정책을 지정하는 인스턴스 템플릿을 만들려면 gcloud compute instance-templates create 명령어--resource-policies 플래그와 함께 사용합니다.

예를 들어 분산 배치 정책을 지정하는 전역 인스턴스 템플릿을 만들려면 다음 명령어를 실행합니다.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

다음을 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.

  • MACHINE_TYPE: 인스턴스 템플릿을 사용하여 만든 VM의 머신 유형입니다.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

원하는 경우 VM을 만들 가용성 도메인을 지정하려면 --availability-domain 플래그를 포함합니다.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --availability-domain=DOMAIN_NUMBER  \
    --machine-type=MACHINE_TYPE \
    --resource-policies=POLICY_NAME

DOMAIN_NUMBER를 VM을 생성할 가용성 도메인의 수로 바꿉니다. 값은 1과 배치 정책에 지정된 도메인 수 사이여야 합니다. 분산 배치 정책의 도메인 수를 확인하려면 배치 정책 세부정보를 확인합니다.

REST

분산 배치 정책을 지정하는 인스턴스 템플릿을 만들려면 다음 방법 중 하나로 POST 요청을 수행합니다.

요청 본문에서 resourcePolicies 필드를 지정합니다.

예를 들어 분산 배치 정책을 지정하는 전역 인스턴스 템플릿을 만들려면 다음과 같이 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ]
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 분산 배치 정책이 있는 프로젝트의 ID입니다.

  • INSTANCE_TEMPLATE_NAME: 인스턴스 템플릿의 이름입니다.

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE: 다음 중 하나를 지정합니다.

    • OS 이미지의 특정 버전입니다(예: debian-12-bookworm-v20240617).

    • 이미지 계열이며 형식은 family/IMAGE_FAMILY여야 합니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 family/debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.

  • MACHINE_TYPE: 인스턴스 템플릿을 사용하여 만든 VM의 머신 유형입니다.

  • POLICY_NAME: 기존 분산 배치 정책의 이름입니다.

원하는 경우 VM을 만들 가용성 도메인을 지정하려면 요청 본문에 availabilityDomain 필드를 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "resourcePolicies": [
      "POLICY_NAME"
    ],
    "scheduling": {
      "availabilityDomain": DOMAIN_NUMBER
    }
  }
}

DOMAIN_NUMBER를 VM을 생성할 가용성 도메인의 수로 바꿉니다. 값은 1과 배치 정책에 지정된 도메인 수 사이여야 합니다. 분산 배치 정책의 도메인 수를 확인하려면 배치 정책 세부정보를 확인합니다.

인스턴스 템플릿을 만들기 위한 구성 옵션에 대한 자세한 내용은 인스턴스 템플릿 만들기를 참조하세요.

MIG의 VM에 정책 적용

분산 배치 정책을 지정하는 인스턴스 템플릿을 만든 후에는 템플릿을 사용하여 다음을 수행할 수 있습니다.

MIG를 만드는 동안 정책 적용

VM이 배치 정책과 같은 리전에 있는 경우에만 분산 배치 정책을 지정하는 VM을 만들 수 있습니다.

분산 배치 정책을 지정하는 인스턴스 템플릿을 사용하여 MIG를 만들려면 다음 옵션 중 하나를 선택합니다.

gcloud

분산 배치 정책을 지정하는 인스턴스 템플릿을 사용하여 MIG를 만들려면 gcloud compute instance-groups managed create 명령어를 사용합니다.

예를 들어 분산 배치 정책을 지정하는 전역 인스턴스 템플릿을 사용하여 영역 MIG를 만들려면 다음 명령어를 실행합니다.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size=SIZE \
    --template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 만들려는 MIG의 이름입니다.

  • SIZE: MIG의 크기입니다.

  • INSTANCE_TEMPLATE_NAME: 분산 배치 정책을 지정하는 기존 전역 인스턴스 템플릿의 이름입니다.

  • ZONE: MIG를 만들려는 영역으로, 분산 배치 정책이 있는 리전 내에 있어야 합니다.

REST

분산 배치 정책을 지정하는 인스턴스 템플릿을 사용하여 MIG를 만들려면 다음 메서드 중 하나로 POST 요청을 수행합니다.

예를 들어 분산 배치 정책을 지정하는 전역 인스턴스 템플릿을 사용하여 영역 MIG를 만들려면 다음과 같이 POST 요청을 수행합니다.

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

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": SIZE,
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 분산 배치 정책과 배치 정책을 지정하는 인스턴스 템플릿이 있는 프로젝트의 ID입니다.

  • ZONE: MIG를 만들려는 영역으로, 분산 배치 정책이 있는 리전 내에 있어야 합니다.

  • INSTANCE_GROUP_NAME: 만들려는 MIG의 이름입니다.

  • SIZE: MIG의 크기입니다.

  • INSTANCE_TEMPLATE_NAME: 분산 배치 정책을 지정하는 기존 전역 인스턴스 템플릿의 이름입니다.

MIG를 만드는 구성 옵션에 대한 자세한 내용은 MIG를 만드는 기본 시나리오를 참고하세요.

기존 MIG에 정책 적용

MIG가 배치 정책과 동일한 리전에 있거나 영역 MIG의 경우 배치 정책과 동일한 리전 내의 영역에 있는 경우에만 기존 MIG에 압축 배치 정책을 적용할 수 있습니다.

분산 배치 정책을 지정하는 인스턴스 템플릿을 사용하도록 MIG를 업데이트하려면 다음 옵션 중 하나를 선택합니다.

gcloud

분산 배치 정책을 지정하는 인스턴스 템플릿을 사용하도록 MIG를 업데이트하려면 gcloud compute instance-groups managed rolling-action start-update 명령어를 사용합니다.

예를 들어 분산 배치 정책을 지정하는 인스턴스 템플릿을 사용하고 MIG의 기존 VM을 템플릿 속성을 지정하는 새 VM으로 교체하도록 영역 MIG를 업데이트하려면 다음 명령어를 실행합니다.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=INSTANCE_TEMPLATE_NAME \
    --zone=ZONE

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 기존 MIG의 이름입니다.

  • INSTANCE_TEMPLATE_NAME: 분산 배치 정책을 지정하는 기존 전역 인스턴스 템플릿의 이름입니다.

  • ZONE: MIG가 있는 영역입니다. 배치 정책과 동일한 리전에 있는 MIG에만 분산 배치 정책을 적용할 수 있습니다.

REST

분산 배치 정책을 지정하는 인스턴스 템플릿을 사용하고 MIG의 기존 VM에 템플릿 속성과 배치 정책을 자동으로 적용하도록 MIG를 업데이트하려면 다음 메서드 중 하나로 PATCH 요청을 수행합니다.

예를 들어 분산 배치 정책을 지정하는 전역 인스턴스 템플릿을 사용하고 MIG의 기존 VM을 템플릿 속성을 지정하는 새 VM으로 교체하도록 영역 MIG를 업데이트하려면 다음 PATCH 요청을 실행합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
}

다음을 바꿉니다.

  • PROJECT_ID: 기존 MIG, 분산 배치 정책, 분산 배치 정책을 지정하는 인스턴스 템플릿을 만드는 데 사용한 프로젝트의 ID입니다.

  • ZONE: MIG가 있는 영역입니다. 배치 정책과 동일한 리전에 있는 MIG에만 분산 배치 정책을 적용할 수 있습니다.

  • INSTANCE_GROUP_NAME: 기존 MIG의 이름입니다.

  • INSTANCE_TEMPLATE_NAME: 분산 배치 정책을 지정하는 기존 전역 인스턴스 템플릿의 이름입니다.

MIG의 VM을 업데이트하는 구성 옵션에 대한 자세한 내용은 MIG의 VM에 새 구성 업데이트 및 적용을 참고하세요.

다음 단계