관리형 인스턴스 그룹 만들기

관리형 인스턴스 그룹(MIG)에는 인스턴스 템플릿을 기반으로 하는 동일한 가상 머신(VM) 인스턴스가 포함되어 있습니다. MIG는 사전에 VM을 사용 가능한 상태(RUNNING 상태)로 유지하여 애플리케이션의 고가용성을 유지합니다.

MIG는 자동 복구, 부하 분산, 자동 확장, 자동 업데이트를 지원합니다.

영역별(단일 영역) MIG와 리전별(멀티 영역) MIG를 모두 만들 수 있습니다. 리전별 MIG는 동일한 리전 내 여러 영역에 분산된 인스턴스로 더 높은 가용성을 제공합니다.

인스턴스 그룹에 대한 자세한 내용은 인스턴스 그룹 개요를 참조하세요.

시작하기 전에

제한사항

  • 각 MIG는 최대 1,000개의 VM을 포함할 수 있습니다.
  • MIG를 업데이트할 때 요청 하나에 인스턴스를 1,000개 이하로만 지정할 수 있습니다.

스테이트리스(Stateless) 애플리케이션에 MIG 사용

실행할 기본 가상 머신(VM) 인스턴스의 상태에 의존하지 않는 스테이트리스(Stateless) 애플리케이션에 MIG를 사용할 수 있습니다. 애플리케이션은 연결된 디스크의 콘텐츠나 메모리 내 데이터와 같이 지속되지 않는 VM 속성에 의존해서는 안 됩니다. 애플리케이션에 VM 속성 보존이 필요한 경우 스테이트풀(Stateful) MIG를 참조하세요.

스테이트리스(Stateless) MIG의 모든 영구 디스크에 대한 기본 동작은 해당 VM이 삭제되거나 다시 생성될 때 디스크를 삭제하거나 다시 만드는 것이므로 연결된 디스크를 스테이트리스(Stateless) MIG의 영구 데이터로 사용해서는 안됩니다. 데이터를 보관하려면 업데이트된 소프트웨어 및 구성으로 최신 커스텀 이미지를 정기적으로 유지하는 것이 좋습니다. 데이터를 보관하려면 시작 스크립트를 사용하고 애플리케이션을 구성하여 Cloud Storage와 같은 다른 중앙 위치에 데이터를 백업합니다.

인스턴스 템플릿에서 컨테이너 이미지 또는 커스텀 이미지를 관련 시작 스크립트와 함께 지정할 수 있으므로 VM이 다시 생성되면 필요한 앱이 설치되어 있으며 필요한 데이터에 액세스할 수 있습니다. 인스턴스 템플릿 만들기에 대한 자세한 내용은 확정 인스턴스 템플릿을 참조하세요.

스테이트풀(Stateful) 애플리케이션에 MIG 사용(베타)

관리형 인스턴스 그룹은 스테이트풀(Stateful) 애플리케이션도 지원합니다. 스테이트풀(Stateful) MIG는 머신 재시작, 재생성, 자동 복구, 업데이트 시 각 VM의 고유 상태(VM 인스턴스 이름, 연결된 영구 디스크, 메타데이터)를 보존합니다.

데이터베이스, 데이터 처리 애플리케이션, 레거시 애플리케이션, 체크포인트를 지정하는 장기 실행 일괄 워크로드와 같은 스테이트풀(Stateful) 데이터 또는 구성이 있는 애플리케이션에 스테이트풀(Stateful) MIG를 사용하세요.

스테이트풀(Stateful) 애플리케이션 또는 클러스터를 Compute Engine에 배포할 때 자동 복구 및 멀티 영역 배포로 가용성을 향상시키거나 자동화된 순차적 업데이트로 업데이트를 간소화 및 가속화하려는 경우 MIG를 사용하는 것이 좋습니다.

스테이트풀(Stateful) MIG를 생성하거나 기존 MIG에 스테이트풀(Stateful) 구성을 추가하는 방법에 대한 자세한 내용은 스테이트풀(Stateful) MIG 구성을 참조하세요.

관리형 인스턴스 그룹 만들기

관리형 인스턴스 그룹을 만들기 전에 인스턴스 템플릿을 만들어 그룹에 속한 모든 VM의 운영체제 이미지 또는 컨테이너 이미지와 설정을 지정해야 합니다.

템플릿을 만든 후 Google Cloud Console, gcloud compute 도구 또는 API를 통해 관리형 인스턴스 그룹을 만듭니다.

Console

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

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

  2. 인스턴스 그룹 만들기를 클릭합니다.
  3. MIG의 이름을 입력하고 그룹을 배치할 영역을 선택합니다.
  4. 그룹 유형에서 관리형 인스턴스 그룹을 선택합니다.
  5. 인스턴스 템플릿에서 인스턴스 템플릿을 선택합니다. 사용할 수 있는 템플릿이 없으면 인스턴스 템플릿을 만듭니다.
  6. 그룹에 만들 인스턴스의 수를 지정합니다. 원하는 경우 자동 확장을 사용 설정하여 그룹이 인스턴스 사용률에 따라 인스턴스를 자동으로 추가 또는 삭제하도록 하거나, 자동 복구를 사용 설정하여 그룹에 있는 VM에 대한 애플리케이션 기반 상태 확인을 수행할 수 있습니다.
  7. 만들기를 클릭하여 새 그룹을 만듭니다.

gcloud

instance-groups managed create 하위 명령어를 사용하여 인스턴스 그룹을 만듭니다.

gcloud compute instance-groups managed create instance-group-name \
    --base-instance-name base-name \
    --size size \
    --template instance-template \
    --zone zone

각 입력 항목은 다음과 같이 바꿉니다.

  • instance-group-name: 이 인스턴스 그룹의 이름입니다.
  • base-name: 이 인스턴스 그룹에 만드는 VM에 사용할 이름입니다. 이러한 VM은 공통 템플릿을 기반으로 하므로 각 VM에는 VM 이름의 일부로 임의의 문자열이 할당됩니다. 이 임의의 문자열 앞에 기본 이름이 옵니다. 예를 들어 기본 이름을 example로 설정하면 VM의 이름은 example-yahsexample-qtyz와 같이 지정됩니다. 특정 이름이 필요하면 MIG에 특정 이름으로 인스턴스 만들기를 참조하세요.
  • size: 인스턴스 그룹의 크기입니다.
  • instance-template: 이 그룹에 사용할 인스턴스 템플릿의 이름입니다.
  • zone: Compute Engine에서 사용할 수 있는 영역 중 하나입니다.

    예를 들어 다음 명령어는 기본 VM 이름이 test이고 그룹 이름이 example-group인 인스턴스 그룹을 만들며 이 그룹에는 세 개의 인스턴스가 포함됩니다.

    gcloud compute instance-groups managed create example-group \
      --base-instance-name test \
      --size 3 \
      --template an-instance-template

API

API에서 instanceGroupManagers.insert 메서드 또는 regionInstanceGroupManagers.insert 메서드에 대한 POST 요청을 생성합니다. 요청 본문에 그룹 이름, 그룹 크기, 그룹 내 VM의 기본 이름, 인스턴스 템플릿의 URL을 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

{
  "baseInstanceName": "base-name",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/instance-template"
    }
  ],
  "name": "instance-group-name",
  "targetSize": size
}

다음을 바꿉니다.

  • project-id: 요청의 프로젝트 ID입니다.
  • zone: 요청의 영역입니다.
    • 리전 MIG의 경우 zones/zoneregions/region으로 바꾸고 리전을 지정합니다.
  • instance-group-name: 이 인스턴스 그룹의 이름입니다.
  • base-name: 이 인스턴스 그룹에 만드는 VM에 사용할 이름입니다. 이러한 VM은 공통 템플릿을 기반으로 하므로 각 VM에는 VM 이름의 일부로 임의의 문자열이 할당됩니다. 이 임의의 문자열 앞에 기본 이름이 옵니다. 예를 들어 기본 이름을 example로 설정하면 VM의 이름은 example-yahsexample-qtyz와 같이 지정됩니다. 특정 이름이 필요하면 MIG에 특정 이름으로 인스턴스 만들기를 참조하세요.
  • size: 인스턴스 그룹의 크기입니다.
  • instance-template: 이 그룹에 사용할 인스턴스 템플릿입니다.

MIG를 구성하고 조치를 취하는 방법에 따라 다양한 정책과 작업이 그룹의 인스턴스에 영향을 미칠 수 있습니다. 실행 중인 관리형 인스턴스를 확인하려면 관리형 인스턴스의 상태 확인을 참조하세요.

관리형 인스턴스 그룹의 인스턴스 템플릿 변경

기존 인스턴스에 변경사항을 적용하지 않고 관리형 인스턴스 그룹의 인스턴스 템플릿을 변경할 수 있습니다. 인스턴스를 추가하거나 다시 만들도록 요청하면 새 템플릿이 관리형 인스턴스 그룹에 사용되지만 그룹의 기존 VM이 이 템플릿으로 자동으로 업데이트되지는 않습니다. 따라서 업데이트할 VM을 정확하게 제어할 수는 있지만 인스턴스 그룹에 유사성이 없는 VM이 포함되게 됩니다.

새 인스턴스 템플릿을 만든 후에는 기존 인스턴스 그룹의 인스턴스 템플릿을 변경하세요.

Console

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

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

  2. 목록의 이름 열에서 인스턴스 템플릿을 변경할 인스턴스 그룹의 이름을 클릭합니다.
  3. 그룹 수정을 클릭하여 이 관리형 인스턴스 그룹을 수정합니다.
  4. 인스턴스 템플릿에서 이 그룹에 사용할 새 인스턴스 템플릿을 선택합니다.
  5. 저장을 클릭하여 새 템플릿을 적용합니다.

gcloud

set-instance-template 메서드를 사용하여 템플릿을 업데이트하려면 새 템플릿을 instance-groups managed set-instance-template 하위 명령어에 전달합니다.

gcloud compute instance-groups managed set-instance-template instance-group-name \
    --template instance-template \
    --zone zone

API

대상 관리형 인스턴스 그룹 이름을 사용하여 instanceGroupManagers 서비스에 대한 요청을 작성합니다. 새 인스턴스 템플릿의 URL을 요청 본문에 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/setInstanceTemplate

{
 "instanceTemplate": "global/instanceTemplates/instance-template
}

인스턴스 템플릿을 변경한 후에는 개별 인스턴스를 다시 만들거나 순차적 업데이트를 통해 그룹에 있는 모든 VM을 업데이트합니다.

관리형 인스턴스 그룹 크기 조절

MIG의 VM을 추가하거나 삭제하는 방법은 다음과 같습니다.

MIG 크기 자동 조절

워크로드에 따라 자동으로 VM을 추가하거나 삭제하도록 관리형 인스턴스 그룹을 구성할 수 있습니다. 그러면 애플리케이션에서 트래픽 증가 처리가 원활해지며, 컴퓨팅 리소스의 수요가 줄면 비용을 절감할 수 있습니다. 관리형 인스턴스 그룹 확장을 시작하려면 인스턴스 그룹 자동 확장을 참조하세요.

수동으로 MIG 크기 설정

관리형 인스턴스 그룹이 자동 확장되도록 설정되지 않은 경우 수동으로 그룹 크기를 조절하여 인스턴스 수를 변경할 수 있습니다. 크기를 늘리면 관리형 인스턴스 그룹에서 현재 인스턴스 템플릿을 사용하여 새 인스턴스가 추가되고, 크기를 줄이면 관리형 인스턴스 그룹에서 VM이 삭제됩니다. 예약된 작업 없이 실행되는 인스턴스가 삭제되기 전에 그룹에서 DELETING, CREATING, RECREATINGcurrentAction을 통해 인스턴스가 삭제됩니다.

그룹이 연결 드레이닝을 사용하도록 설정백엔드 서비스의 일부일 경우 연결 드레이닝 기간 경과 후 VM 인스턴스가 제거 또는 삭제될 때까지 최대 60초가 소요될 수 있습니다.

Google Cloud Console, gcloud compute 도구 또는 API를 사용하여 관리형 인스턴스 그룹의 크기를 조절할 수 있습니다.

Console

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

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

  2. 목록의 이름 열에서 그룹 크기를 변경할 인스턴스 그룹의 이름을 클릭합니다.
  3. 그룹 수정을 클릭하여 이 관리형 인스턴스 그룹을 수정합니다.
  4. 인스턴스 수에서 이 관리형 인스턴스 그룹에 포함할 인스턴스의 수를 지정합니다. 자동 확장을 사용 설정하면 필요에 따라 그룹에서 자동으로 인스턴스가 추가 또는 삭제됩니다. 하지만 최소 인스턴스 수최대 인스턴스 수 값을 변경하면 자동 확장 처리를 통해 그룹 크기를 간접적으로 조정할 수 있습니다.
  5. 저장을 클릭하여 새 템플릿을 적용합니다.

gcloud

resize 하위 명령어를 사용합니다.

gcloud compute instance-groups managed resize instance-group-name \
    --size new-size \
    --zone zone

API

resize 메서드에 대한 요청을 생성하고 매개변수로 새 인스턴스 그룹 크기를 지정합니다.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/resize?size=new-size

인스턴스 그룹이 리전 관리형 인스턴스 그룹이면 zones/zoneregions/region으로 바꿉니다.

관리형 인스턴스 그룹 크기를 조절하도록 요청한 후 시스템에서 VM을 프로비저닝하거나 삭제할 수 있게 되는 즉시 VM이 시작되거나 중지됩니다. 그룹의 인스턴스 수에 따라 이 프로세스에 상당한 시간이 걸릴 수도 있습니다. 관리형 인스턴스 그룹에 있는 인스턴스의 상태를 확인하세요.

크기 조절 중에 만들기 재시도 모드 사용 중지

기본적으로 관리형 인스턴스 그룹에서는 VM 인스턴스를 처음 만들 때 실패하면 VM이 성공적으로 만들어질 때까지 계속해서 각 VM의 만들기가 재시도됩니다. 하지만 만들기를 자동으로 재시도하지 않게 하려면 인스턴스 그룹 크기를 조절할 때 --nocreation-retries 플래그를 설정하여 만들기 재시도 모드를 중지할 수 있습니다. 이 모드에서 관리형 인스턴스 그룹은 모든 인스턴스 만들기를 한 번만 시도합니다. 인스턴스를 만드는 동안 오류가 발생하면 관리형 인스턴스 그룹은 이 인스턴스를 포기하고 그룹의 관리형 인스턴스 목록에서 삭제하고 관리형 인스턴스 그룹의 대상 크기를 줄입니다.

VM 만들기를 처음 시도할 때만 이 모드가 적용됩니다. 이 모드를 사용하는 동안 VM이 성공적으로 생성되면 VM은 일반적인 크기 조절 요청으로 만든 다른 모든 VM과 동일한 방식으로 동작합니다. 특히 실행 중인 VM이 나중에 예기치 않게 손상되어 다시 만들어야 할 경우 이 모드는 다시 만들기 동작에 영향을 주지 않습니다.

만들기 재시도 모드 사용 중지는 특히 VM 수가 정확하지 않아도 되는 VM 그룹을 시스템에서 자동으로 생성하는 시나리오에서 유용합니다. 할당량 오류나 기타 관련 없는 문제로 인스턴스 생성이 일시적으로나 영구적으로 지연될 수 있으므로 요청한 모든 인스턴스가 생성될 때까지 무기한 기다리는 것보다는 관리형 인스턴스 그룹 크기를 신속하게 안정화하고 그룹의 VM 수를 탄력적으로 조정하는 편이 좋을 수 있습니다.

만들기 재시도 모드를 사용 중지한 상태에서 관리형 인스턴스 그룹의 크기를 조절하려면 gcloud 도구 또는 API를 사용합니다.

gcloud

resize 하위 명령어를 --no-creation-retries 플래그와 함께 사용합니다.

gcloud beta compute instance-groups managed resize instance-group-name --size new-size \
    --no-creation-retries \
    --zone zone

API

resizeAdvanced 메서드에 대한 요청을 생성하고 요청 본문에서 새 인스턴스 그룹 크기와 noCreationRetries 필드를 지정합니다.

POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/resizeAdvanced

{
 "targetSize": size
 "noCreationRetries": true
}

인스턴스 그룹이 리전 관리형 인스턴스 그룹이면 zones/zoneregions/region으로 바꿉니다.

listManagedInstances 메서드를 사용하여 어떤 모드에서 어떤 인스턴스가 생성되는지 확인할 수 있습니다. 만들기 재시도 모드를 사용 중지한 상태에서 만드는 인스턴스의 currentActionCREATING_WITHOUT_RETRIES입니다.

MIG에서 특정 이름을 사용해 인스턴스 만들기

특정 이름에 의존하는 시스템이 있는 경우 해당 이름으로 VM을 만들 수 있습니다. 이러한 관리형 인스턴스에 할당한 이름은 VM을 다시 만들 때도 유지됩니다. 특정 이름으로 인스턴스 추가를 참조하세요.

그룹에서 특정 인스턴스 삭제

관리형 인스턴스 그룹에서 개별 VM 인스턴스를 삭제할 수 있습니다. 인스턴스를 삭제하면 인스턴스 그룹의 지정된 targetSize가 줄어들고 VM이 속한 대상 풀에서 VM이 삭제됩니다.

관리형 인스턴스 그룹에서 인스턴스를 삭제해도 지정된 자동 확장 처리 설정은 변경되지 않습니다. 관리형 인스턴스 그룹에서 인스턴스를 삭제하면 자동 확장 처리에서 그룹에 있는 다른 인스턴스의 워크로드 증가를 감지하고 그룹 크기를 이전 수준으로 다시 늘릴 수 있습니다. 이를 방지하려면 인스턴스를 삭제하기 전에 자동 확장 처리를 사용 중지하거나 삭제하세요.

그룹이 연결 드레이닝을 사용하도록 설정백엔드 서비스의 일부일 경우 연결 드레이닝 기간 경과 후 VM 인스턴스가 제거 또는 삭제될 때까지 최대 60초가 소요될 수 있습니다.

Google Cloud Console, gcloud compute 도구 또는 API를 사용하여 관리형 인스턴스 그룹의 인스턴스를 삭제할 수 있습니다.

Console

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

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

  2. 목록의 이름 열에서 개별 인스턴스를 삭제할 인스턴스 그룹 이름을 클릭합니다. 인스턴스 그룹 속성과 그룹에 포함된 인스턴스 목록이 표시된 페이지가 열립니다.
  3. 인스턴스 목록에서 삭제할 인스턴스를 한 개 이상 선택합니다.
  4. 삭제를 클릭합니다. 선택한 인스턴스가 삭제됩니다.

gcloud

instance-groups managed delete-instances 하위 명령어를 사용합니다.

gcloud compute instance-groups managed delete-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    --zone zone

API

instanceGroupManagers.deleteInstances 메서드에 대한 요청을 생성하고 삭제할 인스턴스 하나 이상의 URL을 요청 본문에 포함합니다.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/deleteInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

인스턴스 그룹이 리전 관리형 인스턴스 그룹이면 zones/zoneregions/region으로 바꿉니다.

관리형 인스턴스 그룹의 인스턴스 삭제를 요청한 후 시스템에서 인스턴스를 삭제할 수 있게 되면 인스턴스가 즉시 중지됩니다. 그룹에서 삭제하는 인스턴스 수에 따라 이 프로세스에 상당한 시간이 걸릴 수 있습니다. 관리형 인스턴스 그룹에 있는 인스턴스의 상태를 확인하세요.

그룹에서 인스턴스 폐기

관리형 인스턴스 그룹에서 VM 인스턴스를 분리하여 그룹 전체에 영향을 주지 않고 개별 VM의 문제를 쉽게 디버그할 수 있습니다. 그룹에서 인스턴스를 폐기하면 관리형 인스턴스 그룹에 할당된 부하 분산기에서도 VM이 삭제됩니다. 특정한 개별 인스턴스에 수동으로 할당된 대상 풀은 삭제되지 않습니다.

인스턴스를 폐기하면 인스턴스 그룹의 지정된 targetSize가 줄어들지만 지정된 자동 확장 처리 설정은 변경되지 않습니다. 자동 확장 처리를 사용하는 관리형 인스턴스 그룹은 필요에 따라 자동으로 계속해서 VM을 추가하거나 삭제합니다.

그룹이 연결 드레이닝을 사용하도록 설정백엔드 서비스의 일부일 경우 연결 드레이닝 기간 경과 후 VM 인스턴스가 제거 또는 삭제될 때까지 최대 60초가 소요될 수 있습니다.

Google Cloud Console, gcloud compute 도구 또는 API를 사용하여 관리형 인스턴스 그룹의 인스턴스를 폐기할 수 있습니다.

Console

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

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

  2. 목록의 이름 열에서, 삭제할 인스턴스가 속한 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성과 그룹에 포함된 인스턴스의 목록이 표시된 페이지가 열립니다.
  3. 인스턴스 목록에서, 그룹에서 제거할 인스턴스를 하나 이상 선택합니다.
  4. 그룹에서 제거를 클릭합니다. 선택한 인스턴스는 그룹에 더 이상 속하지 않지만 그룹 밖에서 계속 실행됩니다.

gcloud

인스턴스 그룹에서 인스턴스를 삭제하되 인스턴스 자체를 삭제하지는 않으려면 abandon-instances 하위 명령어를 사용하세요.

gcloud compute instance-groups managed abandon-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    --zone zone

API

instanceGroupManagers.abandonInstances 메서드에 대한 요청을 생성하고 폐기할 인스턴스 하나 이상의 URL을 요청 본문에 포함합니다.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/abandonInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

인스턴스 그룹이 리전 관리형 인스턴스 그룹이면 zones/zoneregions/region으로 바꿉니다.

관리형 인스턴스 그룹에서 인스턴스를 폐기하도록 요청하면 가능한 한 즉시 그룹에서 인스턴스가 삭제됩니다. 관리형 인스턴스 그룹에 있는 인스턴스의 상태를 확인하세요.

그룹에 인스턴스 다시 만들기

관리형 인스턴스를 다시 만들면 지정된 VM이 삭제되고 관리형 인스턴스 그룹에 할당된 인스턴스 템플릿을 사용하여 새 VM이 만들어집니다.

이 방법으로 선택한 VM을 업데이트하면 인스턴스에서 최신 인스턴스 템플릿을 사용할 수 있습니다. 관리형 인스턴스 그룹의 모든 VM을 다시 만들어야 하는 경우에는 순차적 업데이트를 대신 시작하세요.

그룹이 연결 드레이닝을 사용하도록 설정백엔드 서비스의 일부일 경우 연결 드레이닝 기간 경과 후 VM 인스턴스가 제거 또는 삭제될 때까지 최대 60초가 소요될 수 있습니다.

gcloud compute 도구 또는 API를 사용하여 관리형 인스턴스 그룹에서 선택한 VM을 다시 만듭니다.

gcloud

instance-groups managed recreate-instances 하위 명령어를 사용합니다.

gcloud compute instance-groups managed recreate-instances instance-group-name \
    --instances example-i3n2,example-z2x9 \
    --zone zone

API

instanceGroupManagers.recreateInstances 메서드에 대한 요청을 생성하고 다시 만들 인스턴스 하나 이상의 URL을 요청 본문에 포함합니다.

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/recreateInstances

{
 "instances": [
  "zones/zone/instances/example-instance-i3n2",
  "zones/zone/instances/example-instance-l6n1"
 ]
}

인스턴스 그룹이 리전 관리형 인스턴스 그룹이면 zones/zoneregions/region으로 바꿉니다.

관리형 인스턴스 그룹에서 인스턴스 다시 만들기를 요청한 후 시스템에서 VM을 프로비저닝할 수 있게 되면 새 VM이 즉시 시작됩니다. 이 프로세스는 다시 만드는 인스턴스 수에 따라 상당한 시간이 걸릴 수 있습니다. 관리형 인스턴스 그룹에 있는 인스턴스의 상태를 확인하세요.

관리형 인스턴스 그룹 삭제

관리형 인스턴스 그룹을 삭제하면 그룹의 모든 VM이 삭제됩니다. 이 관리형 인스턴스 그룹의 VM을 유지해야 할 경우 먼저 인스턴스를 폐기하여 그룹에서 VM을 삭제하세요. 그런 다음 관리형 인스턴스 그룹을 삭제합니다.

Google Cloud Console 또는 gcloud compute 도구를 사용하여 관리형 인스턴스 그룹과 그룹 내 인스턴스를 삭제하면 연결된 자동 확장 처리가 자동으로 삭제됩니다. 하지만 API를 사용하는 경우에는 먼저 autoscalers.delete 또는 regionAutoscalers.delete로 개별 요청을 실행해서 연결된 자동 확장 처리를 삭제해야 합니다.

Console

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

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

  2. 목록에서 삭제할 그룹을 하나 이상 선택합니다.
  3. 삭제를 클릭하여 그룹과 관리형 인스턴스 그룹에 속한 모든 VM을 삭제합니다.

gcloud

instance-groups managed delete 하위 명령어를 사용합니다.

gcloud compute instance-groups managed delete instance-group-name \
    --zone zone

API

instanceGroupManagers.delete 메서드에 대한 요청을 생성합니다.

DELETE https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name

인스턴스 그룹이 리전 관리형 인스턴스 그룹이면 zones/zoneregions/region으로 바꿉니다.

선점형 인스턴스 그룹 만들기

관리형 인스턴스 그룹을 사용하여 여러 선점형 인스턴스를 신속하게 만들면 관리형 인스턴스 그룹에 속한 VM의 비용을 줄일 수 있습니다. 예를 들어 선점형 인스턴스의 그룹을 만들고 이를 사용하여 일괄 처리 작업을 실행한 후 작업이 완료되면 그룹을 삭제할 수 있습니다.

선점형 인스턴스의 그룹을 만들려면 인스턴스 템플릿에서 선점형 옵션을 설정한 후 템플릿을 사용하여 관리형 인스턴스 그룹을 만듭니다.

Console

  1. Cloud Console에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿 페이지로 이동

  2. 새 인스턴스 템플릿을 클릭합니다.
  3. 인스턴스 템플릿에 원하는 속성을 입력합니다.
  4. 고급 옵션 표시를 클릭하여 가용성 정책 섹션을 확장합니다.
  5. 선점사용으로 설정합니다.
  6. 만들기를 클릭하여 템플릿을 만듭니다.
  7. 이 템플릿을 사용하여 관리형 인스턴스 그룹을 만듭니다.

gcloud

gcloud compute에서 instance-templates create 명령어를 사용하여 인스턴스 템플릿을 만듭니다. --preemptible 플래그를 포함합니다.

gcloud compute instance-templates create instance-template \
    --preemptible

인스턴스 템플릿을 만든 후 이를 사용하여 관리형 인스턴스 그룹을 만듭니다.

API

instanceTemplates().insert 메서드를 사용하여 새 인스턴스 템플릿을 만듭니다. scheduling 아래에 preemptible 속성을 포함하고 이를 true로 설정합니다.

{
"name": "instance-template",
"properties": {
  "machineType": "zones/zone/machineTypes/machine-type",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "scheduling":
  {
    "preemptible": true
  },
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

인스턴스 템플릿을 만든 후 이를 사용하여 관리형 인스턴스 그룹을 만듭니다.

instanceTemplateversions 필드 이해

관리형 인스턴스 그룹을 만들 때는 관리형 인스턴스 그룹에서 개별 VM 인스턴스를 만드는 데 사용되는 인스턴스 템플릿을 제공해야 합니다. 기본적으로 Compute Engine에서는 두 가지 API 속성, 즉 최상위 instanceTemplate 속성과 versions 속성으로 사용되는 인스턴스 템플릿을 설명합니다. 예를 들어 다음의 관리형 인스턴스 그룹에는 instanceTemplateversions 필드가 모두 채워져 있습니다.

{

 "name": "example-group",
 "zone": "zones/us-central1-a",
 "instanceTemplate": "global/instanceTemplates/example-it",
 "versions": [
  {
   "name": "v3",
   "instanceTemplate": "global/instanceTemplates/example-it",
   "targetSize": {
    "calculated": 3
   }
  }
 ]...
}

Compute Engine에서는 이전 버전과의 호환성을 위해 최상위 instanceTemplate 필드와 versions 필드가 둘 다 자동으로 채워집니다. 가능하다면 versions 필드를 지정하고 최상위 instanceTemplates 필드는 생략하는 것이 좋지만 애플리케이션 코드에 현재 최상위 instanceTemplate 필드가 설정된 경우 여전히 요청이 유효합니다.

관리형 인스턴스 그룹 업데이터에 대한 자세한 내용은 MIG에 업데이트 적용을 참조하세요.

(고급) 관리형 인스턴스 그룹으로 인스턴스 템플릿 카나리아

서로 다른 인스턴스 템플릿을 사용하는 두 그룹의 VM이 있는 관리형 인스턴스 그룹을 만들 수 있습니다. 예를 들어 VM 인스턴스가 20개인 관리형 인스턴스 그룹을 만들어서 VM 10개는 특정 운영 이미지에서 실행되고 나머지는 다른 운영체제 이미지에서 실행되게 하려 할 수 있습니다. 이 기능을 사용하면 서로 다른 두 인스턴스 템플릿 버전을 비교하여 한 인스턴스 템플릿을 결정할 수 있습니다.

API에서 다음 URL에 대해 POST 요청을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers

요청 본문에서 최상위 instanceTemplates 필드를 생략하고 인스턴스 템플릿 2개가 설정된 versions 속성을 포함해야 합니다. versions 객체마다 인스턴스 템플릿을 지정합니다. 그리고 versions 객체 중 하나에만 targetSize를 지정해야 합니다. 예를 들어 다음 요청을 실행하면 VM 인스턴스 중 50%가 example-template 인스턴스 템플릿을 사용하고 나머지 VM 인스턴스는 small-machine-type 템플릿을 사용하는 인스턴스 그룹이 만들어집니다.

{
  "baseInstanceName": "example-instances",
  "name": "example-group",
  "targetSize": 5,
  "versions":
  [
    {
      "instanceTemplate": "global/instanceTemplates/example-template",
      "targetSize":
      {
        "percent": 50
      }
    },
   {
     "instanceTemplate": "global/instanceTemplates/small-machine-type"
   }
  ]
}

관리형 인스턴스 그룹 및 IAM

관리형 인스턴스 그룹의 일부로서 Compute Engine에서 수행되는 모든 작업은 프로젝트의 Google API 서비스 계정을 사용하여 이루어집니다. 이 프로젝트별 서비스 계정의 이메일 주소는 다음과 같습니다(여기서 project-id는 해당하는 프로젝트의 숫자 ID).

project-id@cloudservices.gserviceaccount.com

Google API 서비스 계정은 기본 Compute Engine 서비스 계정과 다릅니다.

관리형 인스턴스 그룹에 사용되는 서비스 계정에 인스턴스 템플릿을 기반으로 리소스를 만들 수 있는 충분한 권한을 부여해야 합니다. 특히 인스턴스 그룹에 VM을 만들고 관리하려면 서비스 계정에 compute.instanceAdmin.v1 역할을 부여해야 하며 필요할 경우 serviceAccountUser 역할도 부여해야 합니다. 관리형 인스턴스 그룹에서 서비스 계정으로 실행될 수 있는 VM을 만들 경우에만 serviceAccountUser 역할이 필요합니다. 이 계정은 Deployment Manager를 비롯한 다른 프로세스에서도 사용된다는 점을 유의하세요.

관리형 인스턴스 그룹을 만들거나 인스턴스 템플릿을 업데이트하면 Compute Engine은 Google API 서비스 계정에 대해 다음 사항을 확인합니다.

  • serviceAccountUser 역할이 있는지 여부. 서비스 계정으로 실행될 수 있는 인스턴스를 만들려면 이 역할이 필요합니다.
  • 이미지, 디스크, VPC 네트워크, 서브넷 등 인스턴스 템플릿에서 참조되는 모든 리소스에 대한 권한이 있는지 여부

서비스 계정에 대한 자세한 내용은 서비스 계정 개요를 참조하세요.

관리형 인스턴스 그룹의 모든 인스턴스 업데이트

MIG에 업데이트 적용을 참조하세요.

문제해결

관리형 인스턴스 그룹에서 VM 생성에 계속 실패합니다. 왜 그런가요?

여러 가지 문제로 인해 인스턴스 그룹에서 VM 인스턴스를 만들거나 다시 만들지 못할 수 있습니다. 일반적으로 발생하는 몇 가지 문제는 다음과 같습니다.

  • 관리형 인스턴스 그룹에서 인스턴스와 부팅 영구 디스크를 모두 만들거나 다시 만들려고 시도하지만 영구 디스크가 이미 있습니다. 새 인스턴스가 생성되면 기본적으로 새 부팅 영구 디스크도 생성됩니다. 이 디스크 이름은 VM 이름을 따라 지정됩니다. VM의 이름이 my-awesome-instance이면 디스크의 이름도 my-awesome-instance입니다. 이 이름의 영구 디스크가 이미 있으면 요청이 실패합니다. 기존의 영구 디스크를 삭제하여 이 문제를 해결하세요.

  • 인스턴스 템플릿에서 부팅 영구 디스크의 disks.autoDelete 옵션을 false로 설정하여, 자동 복구와 같은 이유로 VM이 삭제되었을 때 영구 디스크가 삭제되지 않았습니다. 관리형 인스턴스 그룹이 같은 이름의 VM을 다시 만들려고 시도할 때 같은 이름의 영구 디스크가 이미 있을 때 발생하는 동일한 문제가 발생했습니다. 기존의 영구 디스크를 삭제하여 발생한 문제를 해결하고 인스턴스와 함께 부팅 영구 디스크도 삭제하려면 인스턴스 템플릿을 업데이트하여 disks.autoDeletetrue로 설정합니다.

  • 인스턴스 템플릿이 잘못된 경우도 있습니다. 최근에 인스턴스 템플릿을 업데이트한 경우 관리형 인스턴스 그룹에서 VM 만들기에 실패하도록 하는 잘못된 속성이 있을 수 있습니다. 몇 가지 잘못된 속성은 다음과 같습니다.

    • 소스 이미지와 같은 존재하지 않는 리소스를 지정했습니다.
    • 리소스 이름의 철자가 틀렸습니다.
    • 부팅 디스크가 아닌 추가 영구 디스크를 읽기/쓰기 모드로 연결하려고 했습니다. 인스턴스 그룹에는 여러 개의 VM이 포함되므로 그룹의 모든 VM 간에 공유하려는 추가 디스크는 읽기 전용 모드로만 연결할 수 있습니다.
  • 자동 복구 정책을 구성했지만 상태 확인 프로브가 애플리케이션에 도달하도록 허용하는 방화벽 규칙을 구성하지 않았거나 잘못 구성한 경우 VM이 비정상으로 나타나고 MIG가 계속해서 다시 생성을 시도합니다. 상태 확인 방화벽 규칙을 구성하는 방법에 대한 자세한 내용은 이 상태 확인 설정 예시를 참조하세요.

다음 단계