스테이트풀(Stateful) MIG 작동 방식


스테이트풀(Stateful) 관리형 인스턴스 그룹(스테이트풀(Stateful) MIG)은 머신 재시작, 재생성, 자동 복구 또는 업데이트 시 VM 이름, 연결된 영구 디스크, IP 주소, 메타데이터를 포함한 각 가상 머신(VM) 인스턴스의 고유 상태를 보존합니다.

이 페이지에서는 스테이트풀(Stateful) MIG의 작동 방식을 설명합니다. 스테이트풀(Stateful) MIG를 설정하는 방법은 스테이트풀(Stateful) MIG 구성을 참조하세요.

스테이트풀(Stateful) MIG 작동 방식 개요

스테이트풀(Stateful) 구성을 만든 경우 MIG가 스테이트풀(Stateful)로 간주됩니다.

비어 있지 않은 스테이트풀(Stateful) 정책 또는 비어 있지 않은 인스턴스별 구성을 설정하여 스테이트풀(Stateful) 구성을 만듭니다.

이 구성은 사용자 또는 MIG가 적용해야 효력이 발생됩니다.

  • MIG는 스테이트풀(Stateful) 정책 구성을 새 인스턴스와 기존 인스턴스에 자동으로 적용합니다.
  • 인스턴스별 구성을 만들거나 업데이트할 때 새 구성을 수동으로 적용할지, 자동으로 적용할지를 선택할 수 있습니다.

스테이트풀(Stateful) 구성(스테이트풀(Stateful) 정책 또는 인스턴스별 구성)이 적용된 후에 각 관리형 인스턴스의 보존 상태를 검사하여 이를 확인할 수 있습니다.

이후에 MIG의 스테이트풀(Stateful) 구성 또는 크기를 변경(예: MIG 크기 축소, MIG에서 인스턴스 삭제 또는 폐기)하면 인스턴스의 보존된 상태에 영향을 줄 수 있습니다.

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

스테이트풀(Stateful) 구성은 사용자 또는 MIG가 적용해야 효력이 발생됩니다. MIG 인스턴스에 스테이트풀(Stateful) 구성을 적용하는 방법은 구성에 따라 다릅니다.

  • 스테이트풀(Stateful) 정책: MIG는 스테이트풀(Stateful) 정책 구성을 새 인스턴스와 기존 인스턴스에 자동 적용합니다.
  • 인스턴스별 구성: 인스턴스별 구성을 만들거나 업데이트할 때 새 구성을 수동으로 적용할지 아니면 자동으로 적용할지 선택할 수 있습니다.

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

스테이트풀(Stateful) 정책 업데이트가 인스턴스에 적용되는 방식

스테이트풀(Stateful) 정책을 만들거나 업데이트할 때(예: 스테이트풀(Stateful) 디스크 추가 또는 삭제) MIG는 스테이트풀(Stateful) 정책 구성을 그룹의 모든 관리형 인스턴스에 자동으로 비동기적으로 적용합니다. 또한 MIG는 스테이트풀(Stateful) 정책 구성을 생성 중인 새 인스턴스에 자동 적용합니다. 예를 들어 MIG의 크기를 늘리거나 MIG에서 인스턴스를 수동으로 만드는 경우입니다.

구성이 적용된 후에 각 관리형 인스턴스 정책의 보존 상태에서 업데이트 효과를 확인할 수 있습니다.

스테이트풀(Stateful) 정책을 업데이트해도 실행 중인 VM은 중단되지 않습니다.

스테이트풀(Stateful) 정책을 업데이트하여 스테이트풀(Stateful) 디스크를 추가하면 MIG는 각 VM 리소스를 업데이트하여 디스크의 autoDelete 플래그(instances.disks[].autoDelete) 값을 변경합니다.

  • MIG는 스테이트풀(Stateful)로 구성한 디스크의 autoDeleteFALSE로 설정합니다. 이렇게 하면 자동 복구, 업데이트 또는 수동 재생성을 통한 인스턴스 재생성 시 해당 디스크의 삭제가 방지됩니다.
  • MIG는 autoDelete를 스테이트리스(Stateless)로 구성할 수 있는 모든 디스크의 인스턴스 템플릿 구성(instanceTemplates.disks[].autoDelete)과 일치하도록 설정합니다.

autoDelete 플래그의 값을 변경해도 실행 중인 VM은 중단되지 않습니다.

인스턴스별 구성 업데이트가 인스턴스에 적용되는 방식

인스턴스별 구성을 만들거나 업데이트할 때는 새 구성을 수동 또는 자동으로 적용할지 여부를 선택할 수 있습니다. 자세한 내용은 인스턴스별 구성에서 스테이트풀(Stateful) 구성 적용을 참조하세요.

다음 표는 인스턴스별 구성 업데이트를 VM에 적용하는 데 필요한 중단 수준을 보여줍니다.

인스턴스별 구성 업데이트 적용 시 필요한 VM 중단
인스턴스 템플릿으로 정의된 디스크를 스테이트풀(Stateful)로 구성(인스턴스별 구성에 추가됨) 새로고침
인스턴스 템플릿으로 정의된 디스크를 스테이트리스(Stateless)로 구성(인스턴스별 구성에서 삭제됨) 새로고침
인스턴스 템플릿으로 정의되지 않은 디스크를 추가한 후 VM에 연결 새로고침
인스턴스 템플릿으로 정의되지 않은 디스크를 삭제한 후 VM에서 분리 새로고침
메타데이터 키-값 쌍 추가 새로고침
메타데이터 키-값 쌍 삭제 새로고침
인스턴스 템플릿에서 생성되지 않은 외부 부팅 디스크를 추가한 후 VM에 연결 바꾸기
인스턴스 템플릿에서 생성되지 않은 외부 부팅 디스크를 삭제한 후 VM에서 분리하고, 대신 인스턴스 템플릿에서 부팅 디스크 생성 바꾸기
내부 IP 주소 설정 바꾸기
내부 IP 주소 삭제 바꾸기

업데이트된 인스턴스별 구성을 해당하는 VM에 적용할 때 MIG는 업데이트되는 스테이트풀(Stateful) 항목에 따라 다음 작업을 수행합니다.

  • 디스크, IP 주소 또는 메타데이터를 해당하는 관리형 인스턴스 구성의 보존 상태에 추가 (또는 삭제)합니다.
  • 인스턴스 템플릿으로 정의되지 않은 디스크를 VM에 연결(또는 분리)합니다.
  • VM에 해당하는 메타데이터 키-값 쌍을 설정(또는 삭제)합니다.
  • 지정된 IP 주소를 VM 인스턴스에 할당(또는 삭제)합니다.

인스턴스별 구성을 해당 관리형 VM에 적용한 후에는 인스턴스의 구성에서 예약된 상태로 업데이트가 미치는 영향을 확인할 수 있습니다.

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

구성을 적용할 때 MIG는 인스턴스 템플릿과 스테이트풀(Stateful) 구성을 각 관리형 인스턴스의 '보존 상태'로 변환합니다.

관리형 인스턴스를 검사하여 보존 상태를 볼 수 있습니다.

MIG는 이러한 보존 상태를 자동 유지하며, 이 상태를 MIG에서 해당하는 각각의 실제 VM 인스턴스에 비동기식으로 자동 적용합니다.

스테이트풀(Stateful) 구성을 적용하여 생성되는 관리형 VM의 보존 상태

보존 상태는 해당 인스턴스에 대해 스테이트풀(Stateful)인 개별 항목(영구 디스크, IP 주소, 메타 데이터)을 설명합니다.

적용된 스테이트풀(Stateful) 구성에서 생성된 보존 상태

스테이트풀(Stateful) 정책에 따라 생성된 보존 상태는 인스턴스별 구성을 기준으로 생성된 보존 상태와 별도로 저장됩니다. MIG는 VM을 다시 만들 때 두 상태를 모두 결합하되 인스턴스별 구성의 보존 상태를 우선 적용합니다.

스테이트풀(Stateful) 정책에 따른 보존 상태

스테이트풀(Stateful) 정책은 모든 인스턴스에 표시되고 MIG의 인스턴스 템플릿에 정의된 항목을 지정하여 MIG의 각 VM 인스턴스에 대해 개별적으로 보존합니다.

구성을 적용할 때 MIG는 스테이트풀(Stateful) 정책을 인스턴스별 보존 상태(managedInstances[].preservedStateFromPolicy)로 변환하고, 이러한 보존 상태를 자동 유지합니다.

다음은 모든 인스턴스에 적용되는 스테이트풀(Stateful) 정책에 정의된, 스테이트풀(Stateful) 디스크를 사용하는 VM 인스턴스가 2개 있는 MIG를 보여주는 예시입니다. 이 예시에는 인스턴스별 구성이 없습니다.

스테이트풀(Stateful) 정책에서만 생성되는 보존 상태

위의 그림은 2개의 인스턴스가 있는 MIG를 보여줍니다.

  • 인스턴스 템플릿은 MIG의 모든 인스턴스에 대해 기기 이름이 boot-disk인 부팅 디스크와 기기 이름이 data-disk인 디스크를 정의합니다.
  • 스테이트풀(Stateful) 정책은 data-disk를 스테이트풀(Stateful)로 선언합니다. 부팅 디스크는 스테이트리스(Stateless)로 유지됩니다. 기기 이름이 data-disk인 디스크는 인스턴스 템플릿으로 정의된 상태여야 합니다.
  • 구성이 적용된 후에 MIG는 스테이트풀(Stateful) 정책을 각 관리형 인스턴스의 인스턴스별 보존 상태로 변환합니다. 보존 상태는 MIG에 VM 인스턴스 node-1에 대해 디스크 data-disk-1를, 인스턴스 node-2에 대해 디스크 data-disk-2를 보존하도록 지시합니다. 두 디스크 모두 스테이트풀(Stateful) 정책에 기기 이름이 data-disk으로 구성되어 있기 때문입니다.
  • 이 예시에는 인스턴스별 구성이 없습니다.

인스턴스별 구성에 따른 보존 상태

인스턴스별 구성은 특정 VM에 대해 보존할 항목을 지정합니다. 이러한 항목은 MIG의 인스턴스 템플릿에서 정의할 필요가 없습니다.

구성을 적용할 때 MIG는 각 인스턴스별 구성을 해당하는 인스턴스의 보존 상태(preservedStateFromConfig)로 변환합니다.

다음 예시에서는 스테이트풀(Stateful) 메타데이터와 디스크가 모든 인스턴스의 인스턴스별 구성(PIC)에 정의된 두 개의 VM 인스턴스가 있는 MIG를 보여줍니다. 이 예시에는 스테이트풀(Stateful) 정책이 없습니다.

PIC에서만 생성되는 보존 상태

위 그림에 대한 설명은 다음과 같습니다.

  • 인스턴스 템플릿은 MIG의 모든 인스턴스에 대해 기기 이름이 boot-disk인 부팅 디스크를 정의합니다. 부팅 디스크는 MIG의 모든 VM에 대해 스테이트리스(Stateless)입니다.
  • 인스턴스별 구성은 MIG의 두 인스턴스(node-1node-2)에 대해 보존할 상태를 정의합니다.
    • node-1 인스턴스의 경우 인스턴스별 구성은 기기 이름이 legacy-disk이고 메타데이터가 node-id:xyz273my-legacy-1 디스크를 정의합니다.
    • node-2 인스턴스의 경우 인스턴스별 구성은 기기 이름이 logs-disk이고 메타데이터가 node-id:pqr851my-logs-1 디스크를 정의합니다.
  • 구성이 적용된 후에 MIG는 인스턴스별 구성을 각 관리형 인스턴스의 보존 상태로 자동 변환합니다. 보존 상태는 MIG에 다음을 연결하고 보존하도록 지시합니다.
    • VM node-1에 대한 영구 디스크 my-legacy-1 및 메타데이터 node-id:xyz273
    • VM node-2에 대한 영구 디스크 my-logs-1 및 메타데이터 node-id:pqr851
  • 이 예시에는 스테이트풀(Stateful) 정책이 없습니다.

인스턴스별 구성의 보존 상태에 있는 디스크와 메타데이터는 이 예시의 인스턴스 템플릿에서 정의되지 않습니다. 인스턴스별 구성에 의해서만 정의됩니다. 이는 인스턴스별 구성에서 지정하는 구성이 특정 VM과 관련되기 때문입니다. 즉, 인스턴스 템플릿에 있을 필요가 없습니다.

인스턴스별 구성은 스테이트풀(Stateful) 정책 및 인스턴스 템플릿보다 우선 적용됩니다.

하나의 MIG에서 스테이트풀(Stateful) 정책과 하나 이상의 인스턴스별 구성을 둘 다 구성할 수 있습니다. 예를 들어 스테이트풀(Stateful) 정책의 경우 모든 인스턴스에 표시된 스테이트풀(Stateful) 디스크를 정의할 수 있고, 인스턴스별 구성에서는 인스턴스별 메타데이터를 정의할 수 있습니다.

인스턴스 템플릿 또는 스테이트풀(Stateful) 정책에서 구성이 충돌할 경우 관리형 인스턴스의 인스턴스별 구성이 우선 적용됩니다.

인스턴스별 구성을 적용하여 스테이트풀(Stateful) 정책에 이미 정의된 디스크나 네트워크 인터페이스를 추가하면 MIG에서 이 디스크나 네트워크 인터페이스의 스테이트풀(Stateful) 구성을 인스턴스별 구성의 관리형 인스턴스 보존 상태(preservedStateFromConfig)에 저장하고 정책의 보존 상태(preservedStateFromPolicy)에서 충돌하는 항목을 삭제합니다. 새 보존 상태가 이전 상태와 다르면 MIG에서 VM을 새로고침해야 합니다. 새로고침하면 메타데이터 변경, 외부 IP 주소 변경 또는 디스크 교체가 마지막 보존 상태 구성에서 디스크를 분리하고 새 보존 상태 구성에 지정된 디스크를 연결할 수 있습니다.

다음 예시에서 VM 인스턴스 node-1의 인스턴스별 구성이 재정의됩니다.

  • 원래 스테이트풀(Stateful) 정책에 정의되어 있는 기기 이름이 logs-disk인 디스크의 보존 상태
  • 원래 인스턴스 템플릿에 정의되어 있는 메타데이터 키 logmonth의 값

인스턴스별 구성의 구성이 스테이트풀(Stateful) 정책 및 인스턴스 템플릿보다 우선 적용됨

위 그림에 대한 설명은 다음과 같습니다.

  • 인스턴스 템플릿은 다음을 정의합니다.
    • MIG의 모든 인스턴스에 대한 3개 디스크(기기 이름: boot-disk, data-disk, logs-disk)
    • 모든 인스턴스에 대해 공통인 메타데이터(logmonth:jan)
  • 스테이트풀(Stateful) 정책은 기기 이름이 data-disklogs-disk인 디스크를 스테이트풀(Stateful)로 선언하고, 부팅 디스크는 스테이트리스(Stateless)로 유지됩니다.
  • 인스턴스 node-1에 대한 인스턴스별 구성은 다음을 재정의합니다.
    • 기기 이름이 logs-disk인 디스크의 스테이트풀(Stateful) 구성: 이 구성은 MIG에 디스크 pd-logs-feblogs-disk 기기 이름 아래의 node-1에 연결하도록 지시합니다.
    • 키 값이 logmonth:jan이며 인스턴스 템플릿에 정의된 메타데이터: 이 구성은 MIG에 logmonth:feb의 값을 node-1로 설정하도록 지시합니다.
  • 구성이 적용되면 MIG는 자동으로 스테이트풀(Stateful) 정책 및 인스턴스별 구성을 관리형 인스턴스에 저장된 인스턴트별 보존 상태로 변환합니다.
    • 정책의 보존 상태는 MIG에 VM node-1data-disk-1 디스크를 보존하도록 지시합니다. 정책의 보존 상태에는 기기 이름이 logs-disk인 디스크의 스테이트풀(Stateful) 구성이 포함되지 않습니다. 이 구성은 인스턴스별 구성에 있는 logs-disk의 구성에서 재정의되기 때문입니다.
    • 구성의 보존 상태는 MIG에 영구 디스크 logs-disk를 연결 및 보존하고 VM 인스턴스 node-1의 메타데이터logmonth:feb을 설정 및 보존하도록 지시합니다. 구성의 보존 상태는 스테이트풀(Stateful) 정책에서 logs-disk의 구성을 재정의하고, 인스턴스 템플릿에서 메타데이터 logmonth:jan을 재정의합니다.

스테이트풀(Stateful) 정책에서 리소스 삭제가 보존 상태에 미치는 영향

스테이트풀(Stateful) 정책에서 리소스 구성을 삭제하면 MIG는 모든 관리형 인스턴스에서 해당하는 preservedStateFromPolicy를 자동 삭제합니다. 컴퓨팅 리소스는 인스턴스에 계속 연결되어 있지만 더 이상 스테이트풀(Stateful)이 아닙니다.

다음 예시에서 스테이트풀(Stateful) 정책에서 디스크를 삭제하면 모든 관리형 VM 정책의 보존 상태에서 해당 디스크가 삭제됩니다. 이러한 디스크는 VM에 계속 연결되어 있지만 더 이상 스테이트풀(Stateful)이 아니며 다음 VM 재생성 시 삭제된 후 다시 생성될 수 있습니다.

스테이트풀(Stateful) 정책에서 디스크 삭제

동일한 항목(예: 스테이트풀(Stateful) 영구 디스크)이 스테이트풀(Stateful) 정책과 인스턴스별 구성에 모두 있는 경우, 스테이트풀(Stateful) 정책에서만 스테이트풀(Stateful) 구성을 삭제하면 MIG는 인스턴스별 구성에서 구성을 삭제하지 않습니다. 해당하는 VM에서 구성된 리소스는 스테이트풀(Stateful)로 유지됩니다.

다음 예시에서는 스테이트풀(Stateful) 정책에서 디스크를 삭제해도 인스턴스별 구성에서 디스크가 삭제되지 않습니다. 디스크는 여전히 구성에서 보존 상태의 일부이기 때문에 스테이트풀(Stateful)로 유지됩니다.

인스턴스별 구성도 존재하는 경우 스테이트풀(Stateful) 정책에서 디스크 삭제

인스턴스별 구성에서 항목을 삭제하는 것이 보존 상태에 미치는 영향

인스턴스별 구성에서 스테이트풀(Stateful) 구성을 삭제하고 변경사항을 적용하면 MIG는 해당하는 관리형 인스턴스 구성(preservedStateFromConfig)의 보존 상태에서 스테이트풀(Stateful) 구성을 자동 삭제합니다. 더 이상 보존 상태의 일부가 아닌 컴퓨팅 리소스는 스테이트리스(Stateless)가 됩니다.

인스턴스별 구성에서 스테이트풀(Stateful) 디스크 구성을 삭제하는 것이 보존 상태에 미치는 영향

인스턴스별 구성에서 스테이트풀(Stateful) 디스크 구성을 삭제하고 연결된 VM 인스턴스에 변경사항을 적용하면 MIG는 다음을 수행합니다.

  • 디스크 구성이 인스턴스 구성의 보존 상태에서 삭제됩니다.
  • 기기 이름이 동일한 디스크가 인스턴스 템플릿에 정의되어 있지만 스테이트풀(Stateful) 정책에서 구성되지 않았으면 디스크가 지정된 VM에 연결된 상태로 유지됩니다. 하지만 디스크는 지정된 VM에 대해 스테이트리스(Stateless)가 되고 다음 VM 재생성, 자동 복구 또는 업데이트 이벤트 시 인스턴스 템플릿 구성에 따라 다시 생성될 수 있습니다.
  • 동일한 기기 이름을 가진 디스크가 인스턴스 템플릿에 정의되어 있지 않으면, 자동 삭제 구성과 상관없이 연결된 VM에 업데이트된 인스턴스별 구성이 적용되는 즉시 VM에서 자동으로 분리됩니다.
  • 기기 이름이 동일한 디스크가 스테이트풀(Stateful) 정책에서 구성되어 있으면 스테이트풀(Stateful) 정책 구성이 지정된 관리형 인스턴스 정책의 보존 상태로 변환되며 디스크는 스테이트풀(Stateful)로 유지됩니다.

다음 예시에서는 node-1의 인스턴스별 구성에서 파란색 및 녹색 디스크를 삭제하면 node-1 관리형 인스턴스의 보존 상태에서 두 디스크가 모두 삭제됩니다.

  • 파란색 디스크는 node-1 VM 인스턴스에 연결된 상태로 유지되지만 현재 스테이트리스(Stateless)이며 다음 VM 재생성 시 인스턴스 템플릿 구성에 따라 다시 생성될 수 있습니다.
  • 인스턴스 템플릿은 동일한 기기 이름으로 디스크를 정의하지 않으므로 녹색 디스크는 node-1 VM 인스턴스에서 분리됩니다.

인스턴스별 구성에서 디스크 삭제

인스턴스별 구성에서 스테이트풀(Stateful) 메타데이터를 삭제하는 것이 보존 상태에 미치는 영향

인스턴스별 구성에서 스테이트풀(Stateful) 메타데이터를 삭제하고 변경사항을 적용하면 MIG는 즉시 해당하는 관리형 인스턴스의 보존 상태에서 스테이트풀(Stateful) 메타데이터를 자동 삭제합니다.

  • 인스턴스 템플릿에서 동일한 키로 메타데이터를 정의하면 MIG는 즉시 인스턴스 템플릿 값을 인스턴스에 적용합니다.
  • 키 값이 동일한 메타데이터가 인스턴스 템플릿에 정의되어 있지 않으면 MIG는 즉시 인스턴스에서 키 값을 삭제합니다.

다음 예시에서 node-1의 인스턴스별 구성에서 mode:devid:xyz273 메타데이터를 삭제하면 node-1 관리형 인스턴스의 구성에서 보존된 상태에서 두 키-값 쌍이 자동으로 삭제됩니다.

  • VM에서 mode:dev는 인스턴스 템플릿의 mode:test로 대체됩니다.
  • 인스턴스 템플릿에는 서로 대체할 수 있는 키 id가 동일한 메타데이터가 없기 때문에 id:xyz273은 VM에서 즉시 삭제됩니다.

인스턴스별 구성에서 메타데이터 삭제

인스턴스별 구성에서 스테이트풀(Stateful) IP 구성을 삭제하는 것이 보존 상태에 미치는 영향

인스턴스별 구성에서 내부 IP 구성을 삭제하면 이 VM의 IP 주소가 스테이트리스(Stateless)가 됩니다. 이 VM에서는 자동 변경이 수행되지 않지만 VM이 다시 생성, 업데이트 또는 자동 복구되면 IP 주소가 변경될 수 있습니다.

스테이트풀(Stateful) 정책으로 대체

인스턴스별 구성에서 리소스의 스테이트풀(Stateful) 구성을 삭제한 후 스테이트풀(Stateful) 정책에서 동일한 리소스를 구성한 경우 이 리소스는 스테이트풀(Stateful) 정책에 따라 스테이트풀(Stateful)로 유지됩니다.

MIG는 자동으로 항목의 스테이트풀(Stateful) 구성을 preservedStateFromConfig에서 삭제하고 해당하는 관리형 인스턴스의 preservedStateFromPolicy에 추가합니다.

다음 예시에서는 node-1의 인스턴스별 구성에서 디스크를 삭제해도 스테이트풀(Stateful) 정책에서 디스크가 삭제되지 않습니다. 디스크는 스테이트풀(Stateful) 정책에 따라 스테이트풀(Stateful)로 유지됩니다.

  • 이 디스크는 더 이상 인스턴스별 구성의 일부가 아니므로 MIG는 node-1 관리형 인스턴스의 preserveStateFromConfig에서 디스크를 자동 삭제합니다.
  • 스테이트풀(Stateful) 정책 구성이 아직 유효하고 더 이상 node-1 인스턴스별 구성과 충돌하지 않으므로 MIG는 node-1 관리형 인스턴스의 preserveStateFromPolicy에 디스크를 자동 추가합니다.

인스턴스별 구성에서 디스크를 삭제해도 스테이트풀(Stateful) 정책에서 디스크가 삭제되지 않음

피드백

스테이트풀(Stateful) MIG에 대한 사용 사례, 문제 또는 의견을 알고 싶습니다. mig-discuss@google.com으로 저희 팀에 의견을 공유해 주세요.

다음 단계