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

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

관리형 인스턴스 그룹은 자동 복구, 부하 분산, 자동 확장, 자동 업데이트를 지원합니다.

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

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

시작하기 전에

제한사항

  • 각 관리형 인스턴스 그룹에는 최대 1,000개의 가상 머신(VM) 인스턴스가 포함될 수 있습니다.
  • 관리형 인스턴스 그룹을 업데이트할 때 한 요청에 인스턴스를 1,000개 이하로만 지정할 수 있습니다.

스테이트리스(Stateless) 앱에 관리형 인스턴스 그룹 사용

관리형 인스턴스 그룹은 실행할 기본 VM 인스턴스의 상태에 의존하지 않는 스테이트리스(Stateless) 앱을 지원합니다. 자동 확장 및 자동 복구와 같은 기능이 지원되어 관리형 인스턴스 그룹이 인스턴스를 자동으로 삭제하고 다시 만들 수 있습니다. 또한 사용자 작업, 자동 복구의 일환으로 인해 또는 인스턴스가 라이브 마이그레이션으로 설정되지 않은 경우 인프라 유지보수에 의해 관리형 인스턴스 그룹에서 인스턴스가 삭제되면 인스턴스 그룹은 새 루트 영구 디스크를 사용하여 자동으로 인스턴스를 다시 만듭니다.

관리형 인스턴스 그룹의 스테이트리스(Stateless) 특성으로 인해 IP 주소나 메모리 내 데이터와 같이 지속되지 않는 특정 인스턴스 속성에 의존하지 않도록 앱을 설계하거나 개조해야 합니다. 마찬가지로 부팅 영구 디스크의 기본 동작은 해당 VM 인스턴스가 삭제되면 부팅 디스크도 삭제되는 것이므로 관리형 인스턴스 그룹에서 부팅 디스크를 영구 데이터로 사용해서는 안 됩니다.

데이터를 보관하려면 정기적으로 최신 OS 이미지를 유지보수하고, 시작 스크립트를 사용하며, Cloud Storage와 같은 다른 중앙 위치에 데이터를 백업하는 것이 가장 좋습니다.

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

관리형 인스턴스 그룹과 연결된 디스크를 저장하려면 disks.autoDelete 옵션을 사용 중지해 영구 디스크 삭제를 방지합니다. 디스크를 사용하는 인스턴스가 삭제되면(예: 자동 확장 처리로 인해 그룹이 축소되거나 인스턴스를 수동으로 삭제할 경우) 나머지 디스크를 수동으로 삭제해야 합니다(원하는 경우).

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

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

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

Console

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

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

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

gcloud

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

gcloud compute instance-groups managed create [NAME] \
    --base-instance-name [BASE_NAME] \
    --size [SIZE] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

여기서 다음과 같이 바꿉니다.

  • [NAME]을 이 인스턴스 그룹의 이름으로 바꿉니다.
  • [BASE_NAME]을 이 인스턴스 그룹에서 만든 인스턴스에 사용할 이름으로 바꿉니다. 이러한 인스턴스는 동일하므로 임의의 문자열이 인스턴스 이름의 일부로 인스턴스에 할당됩니다. 이 임의의 문자열 앞에 기본 이름이 옵니다. 예를 들어 기본 이름이 example이면 인스턴스 이름이 example-yahs, example-qtyz 등으로 지정됩니다. 특정 이름이 필요한 경우 MIG에서 특정 이름을 가진 인스턴스 만들기를 참조하세요.
  • [SIZE]를 인스턴스 그룹의 크기로 바꿉니다.
  • [INSTANCE_TEMPLATE]을 이 그룹에 사용할 인스턴스 템플릿의 이름으로 바꿉니다.
  • [ZONE]은 Compute Engine에 사용할 수 있는 영역 중 하나입니다.

    예를 들어 다음 명령어를 실행하면 이름이 example-group이고 기본 인스턴스 이름이 test인 인스턴스 그룹이 생성됩니다. 다음 세 가지 인스턴스가 그룹에 포함됩니다.

    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 요청을 만듭니다. 요청 본문에 그룹 이름, 그룹 크기, 그룹 내 인스턴스의 기본 이름, 인스턴스 템플릿의 URL을 포함합니다.

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

{
  "baseInstanceName": "[BASE_NAME]",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]"
    }
  ],
  "name": "[NAME]",
  "targetSize": [SIZE]
}

여기서 다음과 같이 바꿉니다.

  • [PROJECT_ID]를 요청의 프로젝트 ID로 바꿉니다.
  • [ZONE]을 요청의 영역으로 바꿉니다.
  • [NAME]을 이 인스턴스 그룹의 이름으로 바꿉니다.
  • [BASE_NAME]을 이 인스턴스 그룹에서 만든 인스턴스에 사용할 이름으로 바꿉니다. 이러한 인스턴스는 동일하므로 임의의 문자열이 인스턴스 이름의 일부로 인스턴스에 할당됩니다. 이 임의의 문자열 앞에 기본 이름이 옵니다. 예를 들어 기본 이름이 example이면 인스턴스 이름이 example-yahs, example-qtyz 등으로 지정됩니다.
  • [SIZE]를 인스턴스 그룹의 크기로 바꿉니다.
  • [INSTANCE_TEMPLATE]을 이 그룹에 사용할 인스턴스 템플릿으로 바꿉니다.

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

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

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

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

Console

  1. GCP 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] \
    --template [INSTANCE_TEMPLATE] \
    --zone [ZONE]

API

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

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers[INSTANCE_GROUP]/setInstanceTemplate

{
 "instanceTemplate": "global/instanceTemplates/[INSTANCE_TEMPLATE]
}

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

자동으로 관리형 인스턴스 그룹 크기 조절

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

수동으로 관리형 인스턴스 그룹 크기 조절

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

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

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

Console

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

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

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

gcloud

다음과 같이 명령어를 사용합니다.

gcloud compute instance-groups managed resize [INSTANCE_GROUP ] \
    --size [NEW_SIZE] \
    --zone [ZONE]

API

대상 관리형 인스턴스 그룹 이름을 사용하여 instanceGroupManagers 서비스에 대한 요청을 작성합니다. 매개변수로 새 인스턴스 크기를 지정합니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resize?size=[NEW_SIZE]

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

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

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

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

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

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

gcloud

gcloud 명령줄 도구를 사용하여 --no-creation-retries 플래그가 지정된 resize 명령어를 실행합니다.

gcloud beta compute instance-groups managed resize [INSTANCE_GROUP] --size [NEW_SIZE] \
    --nocreation-retries \
    --zone [ZONE]

API

대상 관리형 인스턴스 그룹 이름을 사용하여 instanceGroupManagers 서비스에 대한 요청을 작성합니다. 요청 본문에 새 인스턴스 크기와 noCreationRetries 필드를 지정합니다.

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/resizeAdvanced

{
 "targetSize": [SIZE]
 "noCreationRetries": true
}

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

그룹에서 개별 인스턴스 삭제

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

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

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

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

Console

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

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

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

gcloud

gcloud로 인스턴스를 삭제하려면 instance-groups managed delete-instances 하위 명령어를 사용하세요.

gcloud compute instance-groups managed delete-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

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

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/deleteInstances

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

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

그룹에서 인스턴스 폐기

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

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

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

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

Console

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

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

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

gcloud

인스턴스를 삭제하지 않고 인스턴스 그룹에서 삭제하려면 abandon-instances 하위 명령어를 사용합니다.

gcloud compute instance-groups managed abandon-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

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

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/abandonInstances

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

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

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

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

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

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

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

gcloud

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

gcloud compute instance-groups managed recreate-instances [INSTANCE_GROUP] \
    --instances example-i3n2,example-z2x9 \
    --zone [ZONE]

API

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

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/recreateInstances

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

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

관리형 인스턴스 그룹 삭제

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

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

Console

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

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

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

gcloud

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

gcloud compute instance-groups managed delete [INSTANCE_GROUP] \
    --zone [ZONE]

API

instanceGroupManagers 서비스에 대한 DELETE 요청을 작성하고 삭제할 관리형 인스턴스 그룹의 이름을 지정합니다.

DELETE https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

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

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

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

Console

  1. GCP 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"
      }
    }
  ]
  }
}

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

관리형 인스턴스 그룹 삭제

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

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

Console

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

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

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

gcloud

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

gcloud compute instance-groups managed delete [INSTANCE_GROUP] \
    --zone [ZONE]

API

instanceGroupManagers 서비스에 대한 DELETE 요청을 작성하고 삭제할 관리형 인스턴스 그룹의 이름을 지정합니다.

DELETE https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]

instanceTemplateversions 필드 이해

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

{

 "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 필드가 설정된 경우 여전히 요청이 유효합니다.

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

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

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

API에서 다음 URL에 POST 요청을 전송합니다.

POST https://compute.googleapis.com/compute/beta/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]@cloudservices.gserviceaccount.com

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 해당하는 프로젝트의 숫자 ID입니다.

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

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

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

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

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

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

관리형 인스턴스 그룹 업데이트를 참조하세요.

문제해결

관리형 인스턴스 그룹에서 인스턴스 만들기가 계속 실패합니다. 왜 그런가요?

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

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

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

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

    • 소스 이미지와 같은 존재하지 않는 리소스를 지정했습니다.
    • 리소스 이름 철자가 틀렸습니다.
    • 부팅 디스크가 아닌 추가 영구 디스크를 읽기-쓰기 모드로 연결하려고 했습니다. 인스턴스 그룹에는 인스턴스가 여러 개 있으므로 그룹의 모든 인스턴스에 공유하려는 추가 디스크를 읽기 전용 모드로만 연결할 수 있습니다.

다음 단계

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

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

Compute Engine 문서