대체 영역에서 VM 복구

이 문서에서는 MIG가 원래 영역에서 VM을 복구할 수 없는 경우 리전 관리형 인스턴스 그룹 (MIG)이 대체 영역에서 가상 머신 (VM) 인스턴스를 복구하도록 허용하는 방법을 설명합니다. MIG에서의 복구에 대한 자세한 내용은 고가용성을 위한 VM 복구 정보를 참조하세요.

리전 MIG를 만들 때 MIG가 VM을 분산하는 영역을 하나 이상 선택합니다. 기본적으로 MIG의 VM에 오류가 발생하면 MIG는 원래 영역에서 해당 VM을 복구하려고 시도합니다. 선택적으로 MIG가 선택된 다른 영역 중 하나에서 해당 VM을 복구하도록 허용할 수 있습니다. 이는 MIG가 원래 영역에서 VM을 복구할 수 없는 경우에 유용합니다. MIG는 사용 가능한 용량과 할당량을 기준으로 대체 영역을 선택합니다.

제한사항

대체 영역에서 VM을 복구하도록 리전 MIG를 구성할 때는 다음 제한사항이 적용됩니다.

  • 복구 시 업데이트를 사용 설정해야 합니다.

  • 다음 구성이 있는 리전 MIG는 지원되지 않습니다.

    • EVEN 또는 ANY_SINGLE_ZONE 목표 분산 형태가 있는 MIG

    • 스테이트풀(Stateful) 구성을 사용하는 MIG

시작하기 전에

대체 영역에서 복구 허용

MIG가 대체 영역에서 VM을 복구하도록 허용하려면 다음 옵션 중 하나를 선택합니다.

콘솔

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

    인스턴스 그룹으로 이동

  2. MIG가 이미 있으면 다음을 수행합니다.

    1. MIG의 이름을 클릭합니다.
    2. 수정 을 클릭합니다.
  3. 아직 MIG가 없으면 다음을 수행합니다.

    1. 인스턴스 그룹 만들기 를 클릭합니다.
    2. 이름 을 입력합니다.
    3. 인스턴스 템플릿 을 선택합니다.
    4. 위치 섹션에서 여러 영역을 선택한 후 리전과 영역을 선택합니다.
    5. 목표 분산 형태 드롭다운에서 균형 또는 모두 를 선택합니다.

      • 균형 을 선택하면 대화상자가 나타나고 인스턴스 재분산 사용 중지 를 클릭합니다.

      • 모두를 선택하려면 먼저 자동 확장 구성을 삭제해야 합니다. 자동 확장을 삭제하려면 자동 확장 모드 드롭다운에서 자동 확장 구성 삭제 를 클릭합니다.

  4. VM 인스턴스 수명 주기 섹션에서 다음 필드가 다음과 같이 설정되어 있는지 확인합니다.

    1. 실패 시 기본 작업 목록이 인스턴스 복구 로 설정됩니다.

    2. VM 인스턴스 복구 중 업데이트인스턴스 구성 업데이트 로 설정됩니다.

    3. VM 인스턴스 복구 중 영역 변경 섹션에서 대체 영역에서 VM 복구 허용 체크박스를 선택합니다.

  5. 다른 설정의 경우 기본값을 사용하거나 필드를 수정할 수 있습니다.

  6. 완료되면 기존 MIG의 경우에는 저장 을 또는 새 MIG의 경우에는 만들기 를 클릭합니다.

gcloud

대체 영역에서 VM을 복구하도록 기존 MIG를 구성하려면 베타 update 명령어를 사용합니다.

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair \
    --region=REGION

대체 영역에서 VM을 복구할 수 있는 MIG를 만들려면 베타 create 명령어를 사용합니다.

gcloud beta compute instance-groups managed create MIG_NAME \
    --template=INSTANCE_TEMPLATE_URL \
    --size=SIZE \
    --zones=ZONES \
    --target-distribution-shape=SHAPE \
    --instance-redistribution-type=none \
    --on-repair-allow-changing-zone=YES \
    --force-update-on-repair

다음을 바꿉니다.

  • MIG_NAME: MIG 이름
  • INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.
    • 리전 인스턴스 템플릿의 경우: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 전역 인스턴스 템플릿의 경우: INSTANCE_TEMPLATE_ID
  • SIZE: MIG의 목표 크기
  • ZONES: MIG에서 VM을 만들려는 리전의 영역 목록
  • SHAPE: 목표 분산 형태 이 값은 balanced 또는 any일 수 있습니다.
  • REGION: MIG가 있는 리전

Terraform

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

대체 영역에서 VM을 복구할 수 있는 MIG를 만들려면 google_compute_region_instance_group_manager 리소스를 사용합니다.

resource "google_compute_region_instance_group_manager" "default" {
  provider           = google-beta
  name               = "example-rmig"
  base_instance_name = "example-rmig-instance"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "BALANCED"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_lifecycle_policy {
    default_action_on_failure = "REPAIR"
    force_update_on_repair    = "YES"
    on_repair {
      allow_changing_zone = "YES"
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

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

REST

대체 영역에서 VM을 복구하도록 기존 MIG를 구성하려면 베타 regionInstanceGroupManagers.patch 메서드를 사용합니다.

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "YES"
      },
      "forceUpdateOnRepair": "YES"
    }
}

대체 영역에서 VM을 복구할 수 있는 MIG를 만들려면 베타 regionInstanceGroupManagers.insert 메서드를 사용합니다.

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

{
  "name": "MIG_NAME",
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "targetSize": SIZE,
  "distributionPolicy": {
    "targetShape": "SHAPE"
  }
  "updatePolicy": {
    "instanceRedistributionType": none
  }
  "instanceLifecyclePolicy": {
    "forceUpdateOnRepair": "YES",
    "onRepair": {
      "allowChangingZone": "YES"
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION: MIG가 있는 리전
  • MIG_NAME: MIG 이름
  • INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.
    • 리전 인스턴스 템플릿의 경우: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
    • 전역 인스턴스 템플릿의 경우: INSTANCE_TEMPLATE_ID
  • SIZE: MIG의 목표 크기
  • SHAPE: 목표 분산 형태 이 값은 BALANCED 또는 ANY일 수 있습니다.

대체 영역에서 복구 허용 안 함

대체 영역에서 VM을 복구하도록 MIG를 구성한 경우 MIG가 원래 영역에서 VM을 복구하는 기본 설정을 복원할 수 있습니다.

대체 영역에서 복구를 허용하지 않으려면 다음 옵션 중 하나를 선택합니다.

콘솔

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

    인스턴스 그룹으로 이동

  2. MIG의 이름을 클릭합니다.

  3. 수정 을 클릭합니다.

  4. VM 인스턴스 수명 주기 섹션으로 이동합니다.

  5. VM 인스턴스 복구 중 영역 변경 섹션에서 대체 영역에서 VM 복구 허용 체크박스를 선택 해제합니다.

  6. 저장 을 클릭합니다.

gcloud

대체 영역에서 복구를 허용하지 않으려면 베타 update 명령어를 사용합니다:

gcloud beta compute instance-groups managed update MIG_NAME \
    --on-repair-allow-changing-zone=NO \
    --region=REGION

다음을 바꿉니다.

  • MIG_NAME: MIG 이름
  • REGION: MIG가 있는 리전

REST

대체 영역에서 복구를 허용하지 않으려면 베타 regionInstanceGroupManagers.patch 메서드를 사용합니다.

PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME
{
    "instanceLifecyclePolicy": {
      "onRepair": {
        "allowChangingZone": "NO"
      }
    }
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION: MIG가 있는 리전
  • MIG_NAME: MIG 이름

다음 단계