MIG에서 VM 구성 업데이트를 선택적으로 적용


이 문서에서는 관리형 인스턴스 그룹(MIG)에서 가상 머신(VM) 인스턴스에 구성 업데이트를 선택적으로 적용하는 방법을 설명합니다.

Compute Engine은 사용하는 구성 구성요소(인스턴스 템플릿, 선택적인 전체 인스턴스 구성, 선택적인 스테이트풀(Stateful) 구성)을 기반으로 MIG에서 VM을 유지 관리합니다.

이러한 구성요소를 변경하여 MIG의 VM 구성을 업데이트할 때마다 Compute Engine은 그룹에 추가된 새 VM에 업데이트된 구성을 자동으로 적용합니다.

업데이트된 구성을 기존 VM에 적용하려면 '낙관적' 업데이트 유형으로도 알려진 선택적인 업데이트를 설정할 수 있습니다. 이러한 유형의 업데이트는 다음 이점을 제공합니다.

  • 업데이트하려는 VM을 선택할 수 있습니다.
  • 업데이트 타이밍 및 순서를 제어할 수 있습니다.
  • gcloud CLI 또는 REST를 사용하여 모든 VM을 즉시 업데이트할 수 있습니다.

또는 MIG의 VM 전체 또는 일부 무작위 하위 집합에 새 구성을 자동으로 롤아웃하려면 MIG에서 VM 구성 업데이트 자동 적용을 참조하세요. 결정을 돕기 위해서는 기존 VM에 새 구성 적용 방법을 참조하세요.

시작하기 전에

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

선택한 VM에 업데이트된 구성 적용

MIG가 기존 VM에 새 VM 구성을 자동으로 적용하지 않도록 방지하기 위해 그룹의 업데이트 정책 유형이 '낙관적'으로 설정되었는지 확인합니다. 자세한 내용은 그룹의 업데이트 정책 유형 검사를 참조하세요.

그런 후 gcloud CLI 또는 REST를 사용하여 MIG 구성을 업데이트하고 그룹의 특정 VM 또는 그룹의 모든 VM에 최신 구성을 적용합니다.

gcloud

그룹에 대해 새 인스턴스 템플릿을 설정하려면 set-instance-template 명령어를 사용할 수 있습니다.

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE

특정 VM에 구성 적용

업데이트된 구성을 특정 VM에 적용하려면 --instances 플래그와 함께 update-instances 명령어를 사용합니다.

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --instances INSTANCE_NAMES \
    --most-disruptive-allowed-action DISRUPTION_LEVEL \
    --minimal-action DISRUPTION_LEVEL

모든 VM에 구성 적용

모든 VM에 업데이트된 구성을 적용하려면 --all-instances 플래그와 함께 update-instances 명령어를 사용합니다.

gcloud compute instance-groups managed update-instances INSTANCE_GROUP_NAME \
    --all-instances \
    --most-disruptive-allowed-action DISRUPTION_LEVEL \
    --minimal-action DISRUPTION_LEVEL

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: MIG 이름입니다.
  • INSTANCE_TEMPLATE: 새 인스턴스 템플릿입니다.
  • INSTANCE_NAMES: 템플릿을 적용할 VM 목록입니다.
  • DISRUPTION_LEVEL: 최소 또는 최대 중단 수준(none, refresh, restart 또는 replace)입니다.
    • 최소 작업 기본값은 none입니다.
    • 중단을 가장 많이 유발하는 작업 기본값은 replace입니다.

REST

그룹에 대해 새 인스턴스 템플릿을 설정하려면 영역 또는 리전 MIG에서 patch 메서드를 호출하고 versions.instanceTemplate 필드를 업데이트합니다. 새 템플릿을 자동으로 그룹 내 모든 VM에 출시하지 않도록 하려면 updatePolicy.type 필드를 OPPORTUNISTIC으로 설정합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "OPPORTUNISTIC"
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
  }]
}

특정 VM에 구성 적용

특정 VM에 업데이트된 구성을 적용하려면 영역 또는 리전 MIG에 대해 applyUpdatesToInstances 메서드를 호출하고 요청에 VM 목록을 지정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "instances": [
    "zones/ZONE/instances/INSTANCE_NAME_1",
    "zones/ZONE/instances/INSTANCE_NAME_2"
  ],
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

모든 VM에 구성 적용

모든 기존 VM에 업데이트된 구성을 적용하려면 allInstances 필드를 true로 설정합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/applyUpdatesToInstances
{
  "allInstances": true,
  "minimalAction": DISRUPTION_LEVEL,
  "mostDisruptiveAllowedAction": DISRUPTION_LEVEL
}

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 그룹 이름
  • NEW_TEMPLATE: 새 템플릿 이름의 이름입니다.
  • ZONE: 업데이트할 인스턴스의 영역입니다.
  • INSTANCE_NAME_1INSTANCE_NAME_2: 업데이트할 VM의 이름입니다.
  • DISRUPTION_LEVEL: 최소 또는 최대 중단 수준(NONE, REFRESH, RESTART 또는 REPLACE)입니다.
    • minimalAction의 기본값은 NONE입니다.
    • mostDisruptiveAllowedAction의 기본값은 REPLACE입니다.

다른 관리형 인스턴스 그룹 메서드와 마찬가지로 applyUpdatesToInstances는 인텐트 기반이므로 작업 응답을 반환합니다. 작업을 완료하는 데 다소 시간이 걸릴 수 있습니다.

요청한 후에는 상태를 확인하여 업데이트가 완료되었는지 확인할 수 있습니다.

선택적 업데이트 중 중단 수준 제어

업데이트 특성에 따라 인스턴스 상태가 중단될 수 있습니다. 예를 들어 인스턴스의 부팅 디스크를 변경하려면 인스턴스를 바꿔야 합니다. 다음 옵션을 설정하여 선택적 업데이트 중 중단 수준을 제어할 수 있습니다.

  • 최소 작업: 중단을 최소화하거나 필요 이상으로 더 많이 중단을 유발하는 작업을 적용하려면 이 옵션을 사용합니다.

    • 중단을 최대한 제한하려면 최소 작업을 NONE으로 설정합니다. 업데이트에 더 많이 중단을 유발하는 작업이 필요한 경우 Compute Engine이 업데이트를 실행하는 데 필요한 작업을 수행합니다.
    • 반드시 필요한 것보다 더 많이 중단을 유발하는 작업을 적용하려면 최소 작업을 RESTART 또는 REPLACE로 설정합니다. 예를 들어 Compute Engine에서 메타데이터를 변경하기 위해 VM을 다시 시작할 필요가 없습니다. 그러나 애플리케이션이 VM이 다시 시작될 때에만 인스턴스 메타데이터를 읽는 경우에는 최소 작업을 RESTART로 설정하여 메타데이터 변경사항을 가져오면 됩니다.
  • 중단을 가장 많이 유발하는 작업: 감당할 수 있는 수준보다 더 많이 중단을 유발하는 업데이트를 방지하려면 이 옵션을 사용합니다. 업데이트에 이 플래그로 설정한 것보다 더 많이 중단을 유발하는 작업이 필요한 경우 업데이트 요청이 실패합니다. 예를 들어 중단을 가장 많이 유발하는 작업을 RESTART로 설정하면 부팅 디스크 이미지 업데이트 시도는 실패하게 됩니다. 이는 해당 업데이트에 다시 시작보다 더 많이 중단을 유발하는 작업인 인스턴스 재생성이 필요하기 때문입니다.

선택한 VM을 업데이트할 때 이 옵션은 모두 다음 값을 허용합니다.

설명업데이트할 인스턴스 속성
NONE인스턴스를 전혀 중단하지 않습니다.없음
REFRESH인스턴스를 중지하지 않습니다.추가 디스크, 인스턴스 메타데이터, 라벨, 태그
RESTART인스턴스를 중지한 후 다시 시작합니다.추가 디스크, 인스턴스 메타데이터, 라벨, 태그, 머신 유형
REPLACE인스턴스를 삭제하고 다시 만듭니다.인스턴스 템플릿이나 인스턴스별 구성에 저장된 모든 인스턴스 속성

중단을 가장 많이 유발하는 작업은 최소 작업보다 중단을 적게 유발할 수 없습니다.

VM을 선택적으로 업데이트하면 다음 기본값이 적용됩니다.

  • 최소 작업 기본값은 NONE으로, 중단을 최대한 제한합니다.
  • 중단을 가장 많이 유발하는 작업 기본값은 REPLACE입니다. 이러한 중단을 감당할 수 없는 경우 중단을 가장 많이 유발하는 작업을 중단을 적게 유발하도록 설정합니다.

다음 단계