대체 영역에서 VM 복구

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

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

제한사항

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

시작하기 전에

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

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

    콘솔

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

    gcloud

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

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  • 기본 리전 및 영역을 설정합니다.
  • Terraform

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

    1. Google Cloud CLI를 설치합니다.

    2. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

    3. 로컬 셸을 사용하는 경우 사용자 계정에 대한 로컬 인증 사용자 인증 정보를 만듭니다.

      gcloud auth application-default login

      Cloud Shell을 사용하는 경우 이 작업을 수행할 필요는 없습니다.

      인증 오류가 반환되고 외부 ID 공급업체(IdP)를 사용하는 경우 제휴 ID로 gcloud CLI에 로그인했는지 확인합니다.

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

    REST

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

      Google Cloud CLI를 설치합니다.

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

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

대체 영역에서 복구 허용

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

기존 MIG가 대체 영역에서 VM을 복구하도록 구성하려면 베타 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 이름

다음 단계