MIG에서 선택적으로 인스턴스 업데이트

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

Compute Engine은 인스턴스 템플릿 및 선택적인 스테이트풀(Stateful) 구성에 지정한 구성을 기준으로 MIG에서 VM을 유지 관리합니다. 일부 경우에는 이 구성을 업데이트해야 할 수 있습니다.

업데이트된 구성을 특정 인스턴스에 선택적으로 적용하면 다음과 같은 이점이 있습니다.

  • 업데이트하려는 인스턴스를 선택할 수 있습니다.
  • 업데이트 타이밍 및 순서를 제어할 수 있습니다.
  • API를 사용하여 모든 인스턴스의 업데이트를 즉시 수행할 수 있습니다.

또는 MIG에서 VM의 전체 또는 임의 하위 집합에 대한 새 구성의 출시를 자동화하려면 MIG의 인스턴스에 업데이트 자동 출시를 참조하세요. 결정하는 데 도움이 필요하면 자동 업데이트 및 선택적 업데이트 선택을 참조하세요.

시작하기 전에

선택한 인스턴스 업데이트

새 템플릿을 지정하고 선택된 인스턴스에만 적용하려는 경우 MIG는 계속 자동으로 새 템플릿을 MIG 크기를 조절하면 생성되는 새 인스턴스에 적용합니다. 기존 인스턴스의 경우 gcloud 도구나 Compute Engine API를 사용하여 새 템플릿을 선택한 인스턴스에 적용할 수 있습니다.

gcloud

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

gcloud compute instance-groups managed set-instance-template INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE \
    [--zone=ZONE | --region=REGION]

특정 인스턴스에 업데이트를 적용하려면 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

다음을 바꿉니다.

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

API

영역 또는 리전 MIG에서 patch 메서드를 호출하고 versions.instanceTemplate 필드를 업데이트합니다. 새 템플릿을 자동으로 그룹 내 모든 인스턴스에 출시하지 않도록 하려면 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",
  }]
}

새 템플릿 버전을 설정한 후 영역 또는 리전 MIG에 applyUpdatesToInstances를 호출합니다. 요청에 인스턴스 목록을 지정하거나 allInstances 부울을 true로 설정하여 모든 인스턴스를 업데이트합니다.

특정 인스턴스 업데이트

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
}

모든 인스턴스 업데이트

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: 업데이트할 인스턴스의 이름입니다.
  • DISRUPTION_LEVEL: 최소 또는 최대 중단 수준(NONE, REFRESH, RESTART 또는 REPLACE)입니다.
    • minimalAction의 기본값은 NONE입니다.
    • mostDisruptiveAllowedAction의 기본값은 REPLACE입니다.

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

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

인스턴스별 구성 업데이트

업데이트를 선택한 인스턴스에 적용하면 MIG는 인스턴스 템플릿과 인스턴스별 구성(있는 경우)을 모두 적용합니다.

자세한 내용은 인스턴스별 구성에서 스테이트풀(Stateful) 구성 적용을 참조하세요.

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

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

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

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

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

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

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

인스턴스를 선택적으로 업데이트하면 다음 기본값이 적용됩니다.

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

다음 단계