스테이트풀(Stateful) 관리형 인스턴스 그룹

스테이트풀(Stateful) 관리형 인스턴스 그룹(스테이트풀(Stateful) MIG)을 사용하여 VM 인스턴스에 가용성이 높은 스테이트풀(Stateful) 워크로드를 배포할 수 있습니다. 스테이트풀(Stateful) 워크로드에는 데이터베이스, 레거시 모놀리식 애플리케이션, 체크포인트가 있는 장기 실행 일괄 계산 등의 스테이트풀(Stateful) 데이터 또는 구성이 포함됩니다.

스테이트풀(Stateful) MIG를 사용하면 자동 복구(실패한 워크로드 자동 복구) 및 다중 영역 배포를 통해 이러한 스테이트풀 (Stateful) 애플리케이션의 업타임과 탄력성을 개선하고, 업데이트 출시 제어를 통해 스테이트풀(Stateful) 인스턴스 업데이트를 간소화할 수 있습니다.

스테이트풀(Stateful) 관리형 인스턴스 그룹은 VM 다시 시작, 다시 만들기, 자동 복구 또는 업데이트 시 각 인스턴스의 고유 상태(예: 인스턴스 이름, 연결된 영구 디스크, 메타데이터)를 유지합니다.

이 페이지에서는 스테이트풀(Stateful) MIG를 사용해야 하는 경우를 설명하고 작동 방식을 대략적으로 설명합니다. 자세한 내용은 스테이트풀(Stateful) MIG 작동 방식을 참조하세요.

스테이트풀(Stateful) MIG를 설정하는 방법은 스테이트풀(Stateful) MIG 설정을 참조하세요.

스테이트풀(Stateful) 워크로드와 스테이트리스(Stateless) 워크로드의 차이점

관리형 인스턴스 그룹을 사용하여 스테이트풀(Stateful) 및 스테이트리스(Stateless) 워크로드를 모두 지원할 수 있습니다. 스테이트풀(Stateful) 워크로드와 스테이트리스(Stateless) 워크로드의 주요 차이점은 스테이트풀(Stateful) 워크로드가 VM 디스크에서 개별 VM 상태(예: 데이터베이스 샤드 또는 앱 구성)를 유지하는 반면 웹 프런트엔드와 같은 스테이트리스(Stateless) 워크로드는 개별 VM의 상태를 유지하지 않는다는 점입니다.

VM을 커스텀 빌드 기계와 같은 스테이트풀(Stateful) 워크로드로 취급하며, 각 개별 머신의 VM ID(이름), 메타데이터, 데이터에 관심이 있습니다. 확장을 위해서는 데이터 복제, 데이터 샤드 생성 또는 삭제, 전체 애플리케이션 구성 변경이 필요할 수 있으므로 스테이트풀(Stateful) 워크로드는 손쉽게 수평 확장할 수 없습니다. 스테이트풀(Stateful) 워크로드가 있는 머신을 다시 만들거나 업데이트할 때는 VM의 고유한 상태를 보존해야 합니다. 스테이트풀(Stateful) 애플리케이션의 예시로는 Cassandra, ElasticSearch, mongoDB, MySQL, PostgreSQL, Kafka가 있습니다.

스테이트리스(Stateless) 워크로드가 있는 VM을 교환 가능한 것으로 취급하며, 제공 VM 수에 대해서만 관심이 있습니다. 어느 VM도 다른 VM과 다르게 취급되지 않습니다. VM을 추가하거나 삭제하여 스테이트리스(Stateless) 워크로드를 손쉽게 수평 확장할 수 있습니다. 애플리케이션을 업데이트할 때 머신을 삭제하고 이름, 메타데이터, 디스크가 다른 새 머신으로 바꿀 수 있습니다. 스테이트리스(Stateless) VM이 삭제되거나 다시 생성되면 머신의 모든 데이터가 손실됩니다. 디스크는 삭제되거나 처음부터 다시 생성됩니다. 웹 프런트엔드는 스테이트리스(Stateless) 애플리케이션의 예시입니다.

스테이트풀(Stateful) MIG스테이트리스(Stateless) MIG
워크로드 스테이트풀(Stateful) 워크로드로 VM 재생성 작업 시 디스크 또는 메타데이터가 보존됩니다. 가용성이 높고 확장 가능한 스테이트리스(Stateless) 워크로드로 수평 확장, 자동 복구, 자동 업데이트, VM 재생성 시 디스크가 처음부터 다시 생성됩니다.
MIG 기능
  • 자동 복구
  • 특정 인스턴스의 제어 업데이트
  • 다중 영역 배포
  • 자동 복구
  • 자동 순차적 업데이트
  • 다중 영역 배포
  • 자동 확장
보관 가능한 항목
  • 인스턴스 이름
  • 인스턴스 템플릿에 정의되지 않은 디스크에 대한 지원을 포함한 영구 디스크
  • 인스턴스별 메타데이터
인스턴스 이름

모든 MIG는 커스텀 및 보존 가능 인스턴스 이름을 지원합니다.

스테이트풀(Stateful) MIG를 사용해야 하는 경우

스테이트풀(Stateful) 애플리케이션 또는 클러스터를 Compute Engine에 배포하고 자동 복구다중 영역 배포로 가용성을 높이고 싶거나 업데이트 출시를 조정하고 인스턴스에 허용되는 중단 수준을 제어하여 스테이트풀(Stateful) 인스턴스의 업데이트를 단순화하려는 경우 항상 스테이트풀(Stateful) 관리형 인스턴스 그룹(스테이트풀(Stateful) MIG)을 사용하는 것이 좋습니다.

스테이트풀(Stateful) MIG는 다음과 같이 스테이트풀 데이터 또는 구성이 있는 애플리케이션을 위한 것입니다.

  • 데이터베이스. 예: Cassandra, ElasticSearch, mongoDB, ZooKeeper. 스테이트풀(Stateful) MIG를 결정하기 전에 VM에 신경 쓰지 않고 애플리케이션에 집중할 수 있도록 Cloud SQL에서 MySQL 및 PostgreSQL과 같은 완전 관리형 서비스를 사용하는 방안을 고려하세요.
  • 데이터 처리 애플리케이션. 예: Kafka 및 Flink. 스테이트풀(Stateful) MIG를 결정하기 전에 VM에 신경 쓰지 않고 데이터 처리 작업에 집중할 수 있도록 Dataflow 또는 Dataproc과 같은 완전 관리형 서비스를 사용하는 방안을 고려하세요.
  • 기타 스테이트풀(Stateful) 애플리케이션. 예: TeamCity, Jenkins, Bamboo, 커스텀 스테이트풀(Stateful) 워크로드.
  • 레거시 모놀리식 애플리케이션. 이러한 애플리케이션은 부팅 디스크나 추가 영구 디스크에 애플리케이션 상태를 저장하거나 특정 VM 인스턴스 이름이나 메타데이터 키 값과 같은 스테이트풀(Stateful) 구성에 의존합니다.
  • 체크포인트가 있는 일괄 워크로드 이 구성을 사용하면 워크로드나 VM 장애 또는 인스턴스 선점을 예상하여 장기 실행 계산의 체크포인트가 있는 결과를 보존할 수 있습니다. 스테이트풀(Stateful) MIG는 데이터 디스크를 보존하면서 실패한 머신을 다시 만들 수 있으므로 마지막 체크포인트에서 계산을 계속할 수 있습니다.

영역 장애에 대한 복원력을 확보하려면 애플리케이션이 애플리케이션 수준에서 여러 인스턴스에 데이터를 복제해야 합니다. 예를 들어 ElasticSearch와 Cassandra는 이러한 기능을 지원합니다. 리전별 MIG를 사용하여 중복 복제본을 여러 영역에 배포하고 애플리케이션의 데이터 복제 기능을 사용하여 영역 장애에 대한 복원력이 우수한 애플리케이션을 만들 수 있습니다. 영역에 장애가 발생하면 나머지 영역의 사용 가능한 복제본에서 데이터가 제공됩니다.

제한사항을 검토하여 스테이트풀(Stateful) MIG가 사용자의 요구사항을 완전히 충족하는지 확인합니다.

MIG를 스테이트풀(Stateful)로 만드는 요소

스테이트풀(Stateful) 구성을 만들면 MIG는 스테이트풀(Stateful)로 간주됩니다.

MIG를 만들 때 스테이트풀(Stateful) 구성을 만들거나 스테이트풀(Stateful) 구성을 추가하여 그룹을 스테이트리스(Stateless)에서 스테이트풀(Stateful)로 변환할 수 있습니다.

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

  • 스테이트풀(Stateful) 정책은 MIG의 모든 인스턴스에 대해 보존할 항목을 정의합니다.
  • 인스턴스별 구성은 특정 VM 인스턴스에 대해 보존할 항목을 정의합니다.

이 구성은 사용자 또는 MIG가 구성을 적용한 이후 효력이 발생합니다.

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

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

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

스테이트풀(Stateful) 구성

스테이트풀(Stateful) 관리형 인스턴스 그룹 (MIG)은 사용자가 설정하는 인스턴스 템플릿, 스테이트풀(Stateful) 정책, 인스턴스별 구성의 조합에서 인스턴스 구성을 가져옵니다. 인스턴스 템플릿, 스테이트풀(Stateful) 정책, 인스턴스별 구성을 그룹에 적용한 후 MIG는 VM 인스턴스를 만들거나 다시 만들거나 자동 복구하거나 자동 업데이트할 때 이 구성을 사용합니다.

스테이트풀(Stateful) 정책

스테이트풀(Stateful) 정책은 관리형 인스턴스 그룹의 모든 인스턴스에 공통적인 스테이트풀(Stateful) 항목을 정의합니다. 스테이트풀(Stateful) 정책에 포함하는 각 항목은 MIG의 인스턴스 템플릿에 정의되어야 합니다.

스테이트풀(Stateful) 정책을 다음과 같이 변경할 수 있습니다.

  • 디스크를 스테이트풀(Stateful) 정책에 추가하여 디스크를 스테이트풀(Stateful)로 구성합니다.
  • 디스크를 스테이트풀(Stateful) 정책에서 삭제하여 디스크를 스테이트리스(Stateless)로 구성합니다.

인스턴스별 구성

인스턴스별 구성은 인스턴스별 메타데이터 키-값 쌍과 같이 특정 관리형 인스턴스에 고유한 스테이트풀(Stateful) 항목을 정의합니다. 이러한 항목은 MIG의 인스턴스 템플릿에서 정의할 필요가 없습니다.

MIG의 특정 인스턴스에 대해 다음과 같이 인스턴스별 구성을 변경할 수 있습니다.

  • 인스턴스 템플릿에 정의된 디스크를 구성하여 인스턴스에 연결된 스테이트풀(Stateful)로 설정하거나(인스턴스별 구성에 디스크 추가), 스테이트리스(Stateless)로 설정합니다(인스턴스별 구성에서 디스크 삭제).
  • 인스턴스 템플릿에 정의되지 않은 기존 디스크를 구성하여 인스턴스에 연결된 스테이트풀(Stateful)로 설정하거나(인스턴스별 구성에 디스크 추가), 인스턴스에서 분리합니다(인스턴스별 구성에서 디스크 삭제).
  • 인스턴스에 대한 스테이트풀(Stateful) 메타데이터 키-값 쌍을 추가 또는 삭제합니다.

스테이트풀(Stateful) 구성의 예시

다음은 스테이트풀(Stateful) 구성의 예시입니다.

인스턴스 템플릿 + 스테이트풀(Stateful) 정책 + 인스턴스별 구성 = 관리형 인스턴스 구성

차트:

  • 인스턴스 템플릿은 MIG의 모든 VM 인스턴스에 대한 공통 구성을 정의합니다.
  • 스테이트풀(Stateful) 정책은 인스턴스 템플릿에서 정의한 기기 이름 data-disk를 사용하여 디스크에 대한 공통 스테이트풀(Stateful) 구성을 정의하며, MIG의 각 VM 인스턴스에 개별적으로 생성 및 연결됩니다.
  • 인스턴스별 구성은 이름이 node-1인 VM 인스턴스에 대한 스테이트풀(Stateful) 구성을 정의합니다. 이 구성은 기존 디스크 my-legacy-1node-1 인스턴스에 연결하고 스테이트풀(Stateful)로 취급하도록 지정합니다. 또한 node-1 인스턴스 node-id:xyz273의 개별성을 보존할 하나의 메타데이터 키 값을 지정합니다.

node-1 VM을 만들 때 MIG는 다음을 수행합니다.

  1. 인스턴스 템플릿에 따라 n2-standard-2 머신 유형을 사용합니다.
  2. 인스턴스 템플릿에 따라 Debian GNU/Linux 이미지를 사용하여 자동 생성된 디스크 이름, boot-node-1, 기기 이름 boot-disk로 부팅 디스크를 만들고 연결합니다. 스테이트풀(Stateful) 정책 또는 인스턴스별 구성에서 구성되지 않았으므로 MIG는 boot-node-1 부팅 디스크를 스테이트리스(Stateless)로 취급합니다.
  3. 인스턴스 템플릿에 따라 커스텀 이미지를 사용하여 자동 생성된 디스크 이름 data-disk-1 및 기기 이름 data-disk를 사용하여 추가 디스크를 만들고 연결합니다. 기기 이름이 스테이트풀(Stateful) 정책에 지정되었으므로 MIG는 data-disk-1 추가 디스크를 스테이트풀(Stateful)로 취급합니다.
  4. 인스턴스별 구성에 따라 기존 디스크를 디스크 이름 my-legacy-1로 연결하고 기기 이름 legacy-disk를 사용합니다. 기기 이름이 인스턴스별 구성에 지정되어 있으므로 MIG는 my-legacy-1 추가 디스크를 스테이트풀(Stateful)로 취급합니다.
  5. 인스턴스 템플릿(app:example-stateful-app, version:1.0)에서 2개, 인스턴스별 구성(node-id:xyz273)에서 1개, 총 3개의 메타데이터 키-값 쌍을 설정합니다. 인스턴스별 구성에 지정되어 있으므로 MIG는 node-id:xyz273 키-값 쌍을 스테이트풀(Stateful)로 취급합니다.

node-1 VM 재생성 시 동일한 구성이 여전히 유효하다고 가정하면 MIG는 스테이트리스(Stateless) 항목을 다시 만들고 스테이트풀(Stateful) 항목을 보존합니다.

  1. 원본 이미지에서 부팅 디스크를 다시 만듭니다.

    먼저 boot-node-1 부팅 디스크를 삭제한 다음 인스턴스 템플릿에 지정된 대로 Debian GNU/Linux 이미지에서 디스크를 다시 만듭니다.

  2. 추가 디스크 data-disk-1my-legacy-1을 보존합니다.

    VM을 삭제하기 전에 추가 디스크를 분리하고 VM이 다시 생성된 후 VM에 연결합니다.

  3. 개별 메타데이터 키-값 쌍 node-id:xyz273을 보존합니다.

    VM이 다시 생성된 후 메타데이터를 설정합니다. 또한 인스턴스 템플릿(app:example-stateful-appversion:1.0)에서 공통 키-값 쌍을 설정합니다.

다음 단계