MIG에서 스테이트풀(Stateful) 구성 적용, 삭제, 보기

스테이트풀(Stateful) 관리형 인스턴스 그룹(MIG)스테이트풀(Stateful) 구성을 만들거나 업데이트한 후에는 다음 작업을 수행할 수 있습니다.

  • 스테이트풀(Stateful) 구성을 적용합니다.
  • 스테이트풀(Stateful) 구성과 관리형 인스턴스의 유효한 보존 상태를 봅니다.
  • 스테이트풀(Stateful) 구성을 삭제합니다.

시작하기 전에

관리형 인스턴스에 스테이트풀(Stateful) 구성 적용

스테이트풀(Stateful) 구성을 만들거나 업데이트한 후 적용합니다.

  • 스테이트풀(Stateful) 정책의 구성 변경사항은 자동으로 모든 관리형 인스턴스에 적용됩니다.
  • 인스턴스별 구성의 구성 변경사항을 수동 또는 자동으로 적용할 수 있습니다.

스테이트풀(Stateful) 정책에서 구성 적용

스테이트풀(Stateful) 정책의 모든 구성 변경사항은 자동으로 모든 관리형 인스턴스에 적용됩니다. 스테이트풀(Stateful) 정책을 업데이트해도 실행 중인 가상 머신(VM) 인스턴스는 중단되지 않습니다. 자세한 내용은 스테이트풀(Stateful) 구성이 관리형 인스턴스에 적용되는 방식을 참조하세요.

스테이트풀(Stateful) 정책이 적용되었는지 확인

변경 후 MIG가 안정화되었는지 확인하여 스테이트풀(Stateful) 정책 변경사항이 모든 VM에 적용되었는지 확인합니다.

관리형 인스턴스 보존 상태를 확인하고 스테이트풀(Stateful) 정책의 모든 디스크가 관리형 인스턴스의 preservedStateFromPolicy 또는 preservedStateFromConfig에 있는지 확인하여 스테이트풀(Stateful) 정책 변경사항이 MIG의 특정 VM에 적용되었는지 확인합니다.

인스턴스별 구성에서 스테이트풀(Stateful) 구성 적용

새 구성을 인스턴스별 구성에 수동으로 적용할지 또는 자동으로 적용할지를 선택할 수 있습니다. 자세한 내용은 인스턴스별 구성 업데이트가 인스턴스에 적용되는 방식을 참조하세요.

인스턴스별 구성에서 업데이트를 수동으로 적용하려면 자동 업데이트를 방지하고 VM을 수동으로 다시 만들거나 업데이트할 경우에만 업데이트가 적용되도록 상황별 업데이트 정책을 구성해야 합니다.

사전 자동 업데이트를 중지한 경우에는 인스턴스별로 구성 업데이트를 수동으로 해당 관리형 인스턴스에 적용해야 합니다.

  • gcloud 도구로 인스턴스별 구성을 만들거나 업데이트할 경우 --update-instance 플래그를 사용하여 구성을 연결된 관리형 인스턴스에 즉시 적용합니다. 또는 --no-update-instance 플래그를 사용하면 업데이트 적용을 연기할 수 있습니다.
  • 특정 인스턴스에 업데이트를 적용하여 중단 수준, 타이밍, 업데이트 순서를 제어합니다.

위 작업 모두 인스턴스별 구성과 적용되지 않은 버전 또는 인스턴스 템플릿 둘 다에 미적용 업데이트를 적용합니다(해당되는 경우).

스테이트풀(Stateful) 구성 및 보존 상태 보기

다음 태스크에서 스테이트풀(Stateful) MIG에 대한 정보를 가져옵니다.

  • MIG에 스테이트풀(Stateful) 구성이 있는지와 이 구성이 적용되고 유효한지 확인
  • 스테이트풀(Stateful) 정책에 저장된 MIG의 모든 인스턴스에 공통적으로 적용되는 스테이트풀(Stateful) 구성 보기
  • 인스턴스별 구성에 저장된 개별 인스턴스에 대한 스테이트풀(Stateful) 구성을 보고 이 구성이 적용되고 유효한지 확인
  • 스테이트풀(Stateful) 정책과 적용된 인스턴스별 구성에 따라 MIG에서 각 인스턴스의 유효한 보존 상태 보기

스테이트풀(Stateful) 정책 보기

gcloud 도구 또는 API로 그룹의 세부정보를 확인하여 MIG의 스테이트풀(Stateful) 정책을 봅니다.

gcloud

MIG의 스테이트풀(Stateful) 정책을 보려면 gcloud beta compute instance-groups managed describe 명령어를 실행합니다. 예를 들면 다음과 같습니다.

    gcloud beta compute instance-groups managed describe example-group \
    --zone us-east1-c
    
    baseInstanceName node
    ...
    name example-group
    ...
    statefulPolicy:
      preservedState:
        disks:
          data-disk:
            autoDelete: NEVER
          logs-disk:
            autoDelete: ON_PERMANENT_INSTANCE_DELETION
    targetSize: 3
    ...
    

API

instanceGroupManagers.get 메서드에서 반환된 instanceGroupManagers.statefulPolicy 구조에서 MIG의 스테이트풀(Stateful) 정책을 봅니다. 예를 들면 다음과 같습니다.

    GET https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group
    

이 메서드는 instanceGroupManagers 객체를 반환합니다.

    {
      "name": "example-group",
      "baseInstanceName": "node",
      ...
      "statefulPolicy": {
        "preservedState": {
          "disks": {
            "data-disk": { "autoDelete": "NEVER" },
            "logs-disk": { "autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
          }
        }
      },
      "targetSize": 3,
      ...
    }
    

인스턴스별 구성 보기

gcloud 도구 또는 API로 MIG의 모든 인스턴스별 구성을 나열하여 인스턴스별 구성을 봅니다.

gcloud

gcloud beta compute instance-groups managed instance-configs list 명령어를 실행하여 MIG의 인스턴스별 구성을 모두 나열합니다.

    gcloud beta compute instance-groups managed instance-configs list name
    

다음을 바꿉니다.

  • name: 인스턴스별 구성을 나열할 MIG의 이름입니다.

표준 --filter 플래그를 사용하여 목록을 필터링합니다.

예를 들어 example-group의 모든 인스턴스별 구성을 나열하려면 다음을 실행합니다.

    gcloud beta compute instance-groups managed instance-configs list example-group
    ---
    fingerprint: JxPvsKOywuY=
    name: node-1
    preservedState:
      disks:
        data-disk:
          autoDelete: NEVER
          mode: rw
          source: https://www.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/disks/data-disk-1
      metadata:
        role: primary
    ---
    fingerprint: IbGmJBqqEkk=
    name: node-2
    status:
      applicationStatus: UNAPPLIED
    preservedState:
    ...
    

API

instanceGroupManagers.listPerInstanceConfigs 메서드를 호출하여 MIG의 모든 인스턴스별 구성을 나열합니다.

    POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers/name/listPerInstanceConfigs
    

다음을 바꿉니다.

  • project-id: 요청의 프로젝트 ID입니다.
  • zone: MIG가 있는 영역입니다(영역 MIG에 적용).
    • 리전 MIG의 경우 zones/zoneregions/region으로 바꾸고 MIG의 리전을 지정합니다.
  • name: 인스턴스별 구성을 나열할 MIG의 이름입니다.

예를 들어 example-group의 모든 인스턴스별 구성을 나열하려면 다음을 실행합니다.

    POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group/listPerInstanceConfigs
    

이 메서드는 그룹의 인스턴스별 구성 목록을 반환합니다.

    {
      "items": [
        {
          "fingerprint": "JxPvsKOywuY="
          "name": "node-1",
          "preservedState" : {
            "disks": {
              "data-disk" : {
                "source": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/disks/data-disk-1",
                "mode": "READ_WRITE",
                "autoDelete": "NEVER"
              }
            },
            "metadata": {
              "role": "primary"
            }
          }
        },
        {
          "fingerprint": "IbGmJBqqEkk="
          "name": "node-2",
          "preservedState" : {
            ...
          }
        },
        ...
      ]
    }
    

관리형 인스턴스의 보존 상태 보기

관리형 인스턴스를 나열하여 보존 상태를 봅니다.

스테이트풀(Stateful) 구성이 적용되면 MIG가 두 필드에 보존 상태를 생성 및 설정합니다.

  • preservedStateFromPolicy: 인스턴스별 구성으로 재정의된 스테이트풀(Stateful) 구성을 제외하고 스테이트풀(Stateful) 정책에 따라 생성된 보존 상태를 포함합니다.
  • preservedStateFromConfig: 관리형 인스턴스에 이미 적용된 인스턴스별 구성에 따라 생성된 보존 상태를 포함합니다.

gcloud

gcloud beta compute instance-groups managed list-instances 명령어를 사용하고 PRESERVED_STATE 열의 값을 확인하여 보존 상태를 가진 관리형 인스턴스를 확인합니다. 예를 들면 다음과 같습니다.

    gcloud beta compute instance-groups managed list-instances example-group
    
    NAME    ZONE        STATUS   HEALTH_STATE  ACTION  PRESERVED_STATE  INSTANCE_TEMPLATE  ...
    node-1  us-east1-c  RUNNING                NONE    POLICY,CONFIG    example-template
    node-2  us-east1-c  RUNNING                NONE    POLICY,CONFIG    example-template
    

PRESERVED_STATE 열에는 다음 값이 포함될 수 있습니다.

  • POLICY: 스테이트풀(Stateful) 정책에 따라 관리형 인스턴스에 보존 상태가 있습니다.
  • CONFIG: 인스턴스별 구성에 따라 관리형 인스턴스에 보존 상태가 있습니다.
  • 값 없음: 관리형 인스턴스에 보존 상태가 없으며 스테이트리스(Stateless)입니다.

gcloud beta compute instance-groups managed describe-instance 명령어를 실행하여 특정 관리형 인스턴스의 보존 상태를 봅니다.

    gcloud beta compute instance-groups managed describe-instance instance-group-name \
      --instance instance-name
    

다음을 바꿉니다.

  • instance-group-name: MIG 이름입니다.
  • instance-name: 그룹의 관리형 인스턴스 이름입니다.

예를 들어 example-group에서 node-1 관리형 인스턴스의 보존 상태를 보려면 다음을 실행합니다.

    gcloud beta compute instance-groups managed describe-instance example-group \
      --instance node-1
    instance: .../example-project/zones/us-east1-c/instances/node-1
    instanceStatus: RUNNING
    currentAction: NONE
    id: 123456789012345678
    version:
      instanceTemplate: .../example-project/global/instanceTemplates/example-template
    preservedStateFromPolicy:
      disks:
        data-disk:
          autoDelete: NEVER
          mode: rw
          source: .../example-project/zones/us-east1-c/disks/data-disk-1
    preservedStateFromConfig:
      metadata:
        role: primary
        my-key: my-value
    

API

instanceGroupManagers.listManagedInstances 메서드를 호출하여 관리형 인스턴스를 나열하고 각 인스턴스의 보존 상태를 봅니다. 리전 MIG의 경우 리전 메서드를 사용합니다.

예를 들어 example-group의 모든 관리 인스턴스를 나열하려면 다음을 실행합니다.

    POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group/listManagedInstances
    

이 메서드는 보존 상태에 대한 정보가 포함된 그룹의 관리형 인스턴스 목록을 반환합니다.

    {
      "managedInstances": [
        {
          "instance": ".../example-project/zones/us-east1-c/instances/node-1",
          "instanceStatus": "RUNNING",
          "currentAction": "NONE",
          "id": "123456789012345678",
          "version": {
             "instanceTemplate":".../example-project/global/instanceTemplates/example-template"
          },
          "preservedStateFromPolicy": {
            "disks": {
              "data-disk" : {
                "source": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/disks/data-disk-1",
                "mode": "rw",
                "autoDelete": "NEVER"
              }
            }
          },
          "preservedStateFromConfig": {
            "metadata": {
              "role": "primary",
              "my-key": "my-value"
            }
          }
        },
        {
          "instance": ".../example-project/zones/us-east1-c/instances/node-2",
          "instanceStatus": "RUNNING",
          ...
          "preservedStateFromPolicy": {
            ...
          },
          "preservedStateFromConfig": {
            ...
          }
        },
        ...
      ]
    }
    

스테이트풀(Stateful) 구성 삭제

다음 상황에서는 스테이트풀(Stateful) 구성을 삭제하는 것이 유용합니다.

  • 독립형 VM을 스테이트풀(Stateful) MIG로 마이그레이션했고 이제 스테이트풀(Stateful) 구성을 인스턴스별 구성에서 공통 스테이트풀(Stateful) 정책으로 이동하려는 경우
  • 워크로드를 다시 설계했으며 더 이상 VM 인스턴스에서 상태를 유지할 필요가 없는 경우
  • 만들었던 테스트용 스테이트풀(Stateful) 구성을 정리하려는 경우

이 섹션에서는 인스턴스별 구성에서 스테이트풀(Stateful) 정책을 완전히 삭제하는 방법을 설명합니다. 스테이트풀(Stateful) 정책 또는 인스턴스별 구성의 일부만 삭제해야 하는 경우에는 다음 섹션을 참조하세요.

스테이트풀(Stateful) 정책 삭제

스테이트풀(Stateful) 정책을 삭제하면 MIG의 모든 VM이 영향을 받습니다. MIG는 스테이트풀(Stateful) 정책에서 구성된 모든 스테이트풀(Stateful) 리소스를 스테이트리스(Stateless)로 취급합니다. 단, 이러한 리소스가 개별 인스턴스의 인스턴스별 구성에서 구성된 경우는 예외입니다. 이후 인스턴스 재생성, 자동 복구 또는 업데이트 작업 시 현재 스테이트리스(Stateless) 리소스는 상태를 잃을 수 있습니다.

  • 디스크를 인스턴스 템플릿에서 정의된 소스에서 삭제하고 다시 만들 수 있습니다.

자세한 내용은 스테이트풀(Stateful) 정책에서 리소스 삭제가 보존 상태에 미치는 영향을 참조하세요.

gcloud

스테이트풀(Stateful) 정책에서 모든 구성을 삭제하려면 gcloud beta compute instance-groups managed update 명령어--remove-stateful-disks 플래그와 함께 실행하고 구성된 모든 스테이트풀(Stateful) 디스크의 기기 이름을 나열합니다.

예를 들어 스테이트풀(Stateful) 정책에 기기 이름이 data-disklogs-disk인 스테이트풀(Stateful) 디스크 두 개의 구성이 포함된 경우 정책을 지우려면 다음 명령어를 실행합니다.

    gcloud beta compute instance-groups managed update example-group \
        --remove-stateful-disks data-disk,logs-disk
    

MIG가 스테이트풀(Stateful) 정책에서 data-disklogs-disk 구성을 삭제하고 그룹의 모든 관리형 인스턴스의 보존 상태에서 디스크를 비동기식으로 자동 삭제합니다. 단, 디스크가 인스턴스별 구성에서 구성된 경우는 예외입니다.

API

스테이트풀(Stateful) 정책의 모든 구성을 삭제하려면 instanceGroupManagers.patch 메서드를 사용하여 statefulPolicy 필드를 null로 설정합니다.

예를 들어 다음 호출은 example-group에서 스테이트풀(Stateful) 정책 구성을 삭제합니다.

    PATCH https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group

    {
      "statefulPolicy": null
    }
    

MIG는 스테이트풀(Stateful) 정책 구성을 지우고 그룹의 모든 관리형 인스턴스의 보존 상태에서 스테이트풀(Stateful) 리소스를 비동기식으로 자동 삭제합니다. 단, 리소스가 인스턴스별 구성에서 구성된 경우는 예외입니다.

특정 VM의 스테이트풀(Stateful) 구성 삭제

특정 VM의 스테이트풀(Stateful) 구성 삭제는 두 단계로 진행됩니다.

  1. 연결된 인스턴스별 구성을 삭제합니다.
  2. 변경사항을 관리형 인스턴스에 적용합니다. 변경사항을 수동으로 적용할지 또는 자동으로 적용할지 선택할 수 있습니다.

변경사항이 적용된 후에는 이전에 인스턴스별 구성에서 구성된 모든 스테이트풀(Stateful) 항목이 그룹의 스테이트풀(Stateful) 정책에서도 구성되어 있지 않으면 이제 스테이트리스(Stateless)로 처리됩니다. 이후에 VM을 다시 만들거나 업데이트하면 항목 상태를 잃게 됩니다.

  • 디스크가 인스턴스 템플릿의 소스에서 분리되거나 재생성될 수 있습니다.
  • 메타데이터가 삭제되거나 인스턴스 템플릿에서 정의된 값으로 재설정됩니다.

자세한 내용은 인스턴스별 구성에서 항목 삭제 시 보존 상태에 미치는 영향을 참조하세요.

gcloud

인스턴스별 구성을 완전히 삭제하려면 gcloud beta compute instance-groups managed instance-configs delete 명령어를 실행합니다.

선택사항인 --update-instance 플래그를 사용하여 변경사항을 인스턴스에 즉시 적용합니다(기본값). --no-update-instance 플래그를 설정하면 다음에 인스턴스를 다시 만들거나 업데이트할 때 변경사항이 적용됩니다.

--instance-update-minimal-action 플래그만 --update-instance 플래그와 함께 사용할 수 있습니다.

    gcloud beta compute instance-groups managed instance-configs delete instance-group-name \
      --instances instance-name[,instance-name,...] \
      [--no-update-instance | --update-instance] \
      [--instance-update-minimal-action minimal-action
    

다음을 바꿉니다.

  • instance-group-name: (필수) MIG 이름입니다.
  • instance-name: (필수) 인스턴스별 구성을 삭제할 인스턴스의 이름입니다.
  • minimal-action: 인스턴스별 구성 업데이트를 VM에 적용할 때 수행할 작업입니다. 이 값은 다음 중 하나여야 합니다.
    • none: 적용할 작업이 없습니다.
    • refresh: VM을 중지하지 않고 적용할 수 있는 업데이트를 적용합니다.
    • restart: VM을 중지했다가 다시 시작합니다.
    • replace: VM을 다시 만듭니다.

예를 들어 example-group에서 node-1의 인스턴스별 구성을 삭제하려면 다음 명령어를 실행합니다.

    gcloud beta compute instance-groups managed instance-configs delete example-group \
      --instances node-1 \
      --update-instance
    

MIG가 node-1의 인스턴스별 구성을 삭제하고 더 이상 이전 스테이트풀(Stateful) 항목을 스테이트풀(Stateful)로 취급하지 않습니다. VM이 업데이트되고 구성 변경사항이 적용되었기 때문입니다.

API

인스턴스 하나 또는 여러 개의 인스턴스별 구성을 완전히 삭제하려면 instanceGroupManagers.deletePerInstanceConfigs 메서드를 사용합니다.

    POST https://compute.googleapis.com/compute/beta/projects/project-id/zones/zone/instanceGroupManagers/instance-group-name/deletePerInstanceConfigs

    {
      "names": ["instance-name",...]
    }
    

다음을 바꿉니다.

  • project-id: 요청의 프로젝트 ID입니다.
  • zone: MIG가 있는 영역입니다(영역 MIG에 적용).
    • 리전 MIG의 경우 zones/zoneregions/region으로 바꾸고 MIG의 리전을 지정합니다.
  • instance-group-name: MIG 이름입니다.
  • instance-name: (필수) 인스턴스별 구성을 삭제할 인스턴스의 이름입니다.

deletePerInstanceConfig 메서드는 지정된 인스턴스별 구성을 삭제하지만 변경사항을 연결된 VM에 적용하지 않습니다. 변경사항은 인스턴스를 다시 만들거나 업데이트할 때 VM에 적용됩니다. 선택한 VM을 수동으로 업데이트하여 변경사항을 적용합니다.

예를 들어 example-group에서 node-1의 인스턴스별 구성을 삭제하려면 다음 메서드를 호출합니다.

    POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group/deletePerInstanceConfigs

    {
      "names": ["node-1"]
    }
    

이 메서드는 example-group에서 node-1 인스턴스의 인스턴스별 구성을 삭제합니다. 변경사항은 인스턴스를 다시 만들거나 업데이트할 때 관리형 인스턴스에 적용됩니다.

구성 변경사항을 적용하려면 instanceGroupManagers.applyUpdatesToInstances 메서드를 호출합니다.

    POST https://compute.googleapis.com/compute/beta/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-group/applyUpdatesToInstances

    {
      "instances": ["/zones/us-east1-c/instances/node-1"]
    }
    

이 메서드는 관리형 인스턴스의 보존 상태에서 스테이트풀(Stateful) 항목을 삭제합니다.

다음 단계