스테이트풀(Stateful) 디스크가 있는 MIG 만들기


이 문서에서는 MIG의 VM이 자동 복구, 업데이트, 다시 생성될 때와 같이 VM이 재생성될 때에도 MIG의 VM 모두에 대해 특정 기기 이름의 디스크에 데이터를 보존하는 관리형 인스턴스 그룹(MIG)을 만드는 방법을 설명합니다. 디스크 보존은 데이터베이스 또는 기존 애플리케이션의 경우와 같은 특정 워크로드에 유용합니다.

그룹의 모든 VM에 대해 디스크를 보존하는 것 외에도 다음에 대해 스테이트풀(Stateful) MIG를 구성할 수 있습니다.

  • 인스턴스별로 디스크를 추가하고 보존할 수 있습니다.
  • 인스턴스별로 메타데이터를 추가하고 보존할 수 있습니다.
  • IP 주소를 추가 및 보존할 수 있습니다.

자세한 내용은 스테이트풀(Stateful) MIG 개요를 참조하세요.

MIG를 만드는 다른 기본 시나리오도 참조하세요.

시작하기 전에

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

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    Terraform

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

    1. Google Cloud CLI를 설치합니다.
    2. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

      gcloud init
    3. Google 계정의 로컬 인증 사용자 인증 정보를 만듭니다.

      gcloud auth application-default login

    자세한 내용은 로컬 개발 환경의 인증 설정를 참조하세요.

    REST

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

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

제한사항

스테이트풀(Stateful) 구성(스테이트풀(Stateful) MIG)을 사용하는 MIG에는 다음 제한사항이 있습니다.

  • MIG에 스테이트풀(Stateful) 구성이 있는 경우 자동 확장을 사용할 수 없습니다.
  • 자동화된 순차적 업데이트를 사용하려면 RECREATE에 대해 대체 메서드를 설정해야 합니다.
  • 스테이트풀(Stateful) 리전 MIG의 경우 사전 재배포를 중지(재배포 유형을 NONE으로 설정)하여 자동 교차 영역 재배포에 의한 스테이트풀(Stateful) 인스턴스 삭제를 방지해야 합니다.
  • 모든 인스턴스 구성을 사용하여 인스턴스 템플릿 속성을 재정의하는 경우 어떤 인스턴스별 구성에서도 이러한 속성을 지정할 수 없으며 마찬가지로 그룹의 전체 인스턴스 구성에서 이러한 속성을 지정할 수 없습니다.

사용하는 구성에 따라 달라지는 MIG 제한사항의 전체 목록을 보려면 MIG 제한사항을 참조하세요.

스테이트풀(Stateful) 디스크가 있는 MIG 만들기

Google Cloud 콘솔, gcloud CLI, Terraform 또는 REST를 사용합니다.

콘솔

  1. 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

    나머지 단계는 Google Cloud console에서 자동으로 표시됩니다.

  2. 인스턴스 그룹 만들기를 클릭합니다.
  3. 새 관리형 인스턴스 그룹(스테이트풀(Stateful)) 옵션을 선택합니다.
  4. 인스턴스 그룹에 이름과 설명(선택사항)을 할당합니다.
  5. 인스턴스 그룹의 인스턴스 템플릿을 선택하거나 새로 만듭니다.
  6. 인스턴스 수 필드에 이 그룹에 필요한 초기 VM 수를 지정합니다.
  7. 스테이트풀(Stateful) 구성 섹션의 그룹 구성에서 스테이트풀(Stateful)로 만들 디스크를 클릭한 후 다음 단계를 수행합니다.
    1. 스테이트풀(Stateful) 섹션에서 를 선택합니다.
    2. 영구 인스턴스 삭제 시 목록에서 VM을 영구적으로 삭제할 때 디스크를 분리할지 아니면 디스크를 삭제할지 선택합니다.
    3. 설정을 저장하려면 완료를 클릭합니다.
  8. MIG를 만들려면 만들기를 클릭합니다.

gcloud

MIG 생성 시 인스턴스 템플릿에서 어느 디스크가 스테이트풀(Stateful)이어야 하는지 지정하려면 gcloud compute instance-groups managed create 명령어와 함께 --stateful-disk 플래그를 사용합니다.

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --stateful-disk device-name=DEVICE_NAME[,auto-delete=DELETE_RULE]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 만들려는 관리형 인스턴스 그룹의 이름입니다.
  • INSTANCE_TEMPLATE: 인스턴스를 만들 때 사용할 인스턴스 템플릿의 이름입니다. 리전 인스턴스 템플릿의 경우 템플릿의 전체 또는 부분 URL을 지정해야 합니다. 전체 URL 예시는 https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template이고 부분 URL은 projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template입니다.
  • SIZE: 이 그룹에 필요한 초기 VM 수입니다.
  • DEVICE_NAME: 인스턴스 템플릿에 지정된 디스크의 기기 이름입니다.
  • DELETE_RULE: VM이 삭제될 때 스테이트풀(Stateful) 디스크에 수행해야 하는 작업을 규정하는 값입니다. 사용 가능한 옵션은 다음과 같습니다.

    • never: (기본값) 절대 디스크를 삭제하지 않습니다. 대신 VM이 삭제될 때 디스크를 분리합니다.
    • on-permanent-instance-deletion: VM 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 관리형 인스턴스가 수동으로 삭제될 때 또는 그룹 크기를 줄일 때) 디스크를 삭제합니다.

    삭제 규칙의 값에 관계없이 스테이트풀(Stateful) 디스크는 VM 자동 복구, 업데이트, 재생성 작업 시 항상 보존됩니다.

Terraform

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

MIG 생성 시 인스턴스 템플릿에서 어느 디스크가 스테이트풀(Stateful)이어야 하는지 지정하려면 stateful_disk 블록을 포함합니다. 다음 샘플은 스테이트풀(Stateful) 디스크가 있는 영역 MIG를 만듭니다. 샘플에 사용되는 리소스에 대한 자세한 내용은 google_compute_instance_group_manager 리소스를 참조하세요.

resource "google_compute_instance_group_manager" "default" {
  name               = "igm-stateful-disk-basic"
  zone               = "us-central1-f"
  base_instance_name = "instance"
  target_size        = 1

  version {
    instance_template = google_compute_instance_template.default.id
  }

  stateful_disk {
    device_name = "example-disk"
    delete_rule = "NEVER"
  }

}

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

REST

MIG를 생성할 때 인스턴스 템플릿에서 스테이트풀(Stateful)이어야 하는 디스크를 지정하려면 이를 요청 본문의 statefulPolicy 필드에 포함합니다. 영역별 MIG의 경우 instanceGroupManagers.insert 메서드를 사용하고 리전별 MIG의 경우 regionInstanceGroupManagers.insert 메서드를 사용합니다.

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

{
  "name": "NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "disks": {
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" },
        "DEVICE_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

다음을 바꿉니다.

  • PROJECT: 요청의 프로젝트 ID입니다.
  • ZONE: MIG가 위치한 영역입니다(영역 MIG에 적용).
    • 리전 MIG의 경우 zones/ZONEregions/REGION으로 바꾸고 MIG의 리전을 지정합니다.
  • NAME: 만들려는 MIG의 이름입니다.
  • TEMPLATE: 인스턴스를 만들 때 사용할 인스턴스 템플릿의 이름입니다.
  • SIZE: 이 그룹에 필요한 초기 인스턴스 수입니다.
  • DEVICE_NAME: 인스턴스 템플릿에 지정된 디스크의 기기 이름입니다.
  • DELETE_RULE: VM 인스턴스가 삭제될 때 스테이트풀(Stateful) 디스크에 수행해야 하는 작업을 규정하는 값입니다. 사용 가능한 옵션은 다음과 같습니다.

    • never: (기본값) 절대 디스크를 삭제하지 않습니다. VM이 삭제될 때 디스크를 분리합니다.
    • on_permanent_instance_deletion: VM이 인스턴스 그룹에서 영구적으로 삭제될 때(예: 관리형 인스턴스가 수동으로 삭제될 때 또는 그룹 크기를 줄일 때) 스테이트풀(Stateful) 디스크를 삭제합니다.

    삭제 규칙의 값에 관계없이 스테이트풀(Stateful) 디스크는 인스턴스 자동 복구, 업데이트, 재생성 작업 시 항상 보존됩니다.

다음 단계