호스트 유지보수 이벤트 시뮬레이션


이 페이지에서는 가상 머신(VM) 인스턴스의 호스트 유지보수 정책이 애플리케이션에 미치는 영향을 테스트하는 방법을 설명합니다.

다음과 같은 경우에 VM에서 유지보수 이벤트를 시뮬레이션할 수 있습니다.

  • 유지보수 이벤트 중에 라이브 마이그레이션하도록 구성된 인스턴스가 있으며 라이브 마이그레이션이 애플리케이션에 미치는 영향을 테스트해야 합니다.
  • 선점형 VM 인스턴스에서 실행 중인 일괄 작업이 있으며 애플리케이션이 인스턴스 한 개 이상의 선점 및 종료를 처리하는 방식을 테스트해야 합니다.
  • 인스턴스가 유지보수 이벤트 중에 라이브 마이그레이션하지 않고 중지 및 다시 시작하도록 구성되어 있으며 애플리케이션이 이 종료 및 다시 시작 프로세스를 처리하는 방식을 테스트해야 합니다.
  • 단독 테넌트 노드에서 실행되는 워크로드가 호스트 유지보수 이벤트 중에 어떻게 작동하는지 테스트하고, VM에서 실행되는 애플리케이션에 대한 단독 테넌트 VM의 호스트 유지보수 정책으로 인한 영향을 확인하려고 합니다.

시작하기 전에

  • simulate_maintenance_event_requests 측정항목의 API 비율 제한을 검토합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 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에서 호스트 유지보수 이벤트를 시뮬레이션하려고 하면 구성된 호스트 유지보수 정책에 따라 종료되거나 다시 시작됩니다.

  • 호스트 유지보수 정책이 노드 그룹 내 마이그레이션으로 설정된 노드 그룹에서 호스트 유지보수 이벤트를 시뮬레이션하려고 할 때 지정된 노드 수가 예약된 총 보류 노드 수보다 작거나 같으면 호스트 유지보수 이벤트 시뮬레이션이 지정된 모든 노드에서 동시에 실행됩니다. 반면에 지정된 노드 수가 예약된 총 보류 노드 수보다 크면 시뮬레이션이 실패합니다.

  • 노드 그룹 내에서 마이그레이션하도록 호스트 유지보수 정책이 설정된 노드 그룹에서 유지보수 이벤트를 올바르게 시뮬레이션하려면 각 노드에서 유지보수 이벤트를 순차적으로 트리거해야 합니다.

호스트 유지보수 이벤트 시뮬레이션

Google Cloud CLI 또는 API 요청을 사용하여 VM에서 유지보수 이벤트를 시뮬레이션할 수 있습니다.

호스트 유지보수 이벤트를 시뮬레이션하는 동안 VM의 maintenance-event 메타데이터 키는 다음과 같은 변경됩니다.

  1. 시뮬레이션이 시작되면 maintenance-event 메타데이터 키의 값이 NONE에서 MIGRATE_ON_HOST_MAINTENANCE로 변경됩니다.
  2. 시뮬레이션 이벤트가 지속되는 동안 값은 MIGRATE_ON_HOST_MAINTENANCE로 유지됩니다.
  3. 시뮬레이션이 종료되면 값은 NONE으로 돌아갑니다.

유지보수 이벤트 키를 쿼리하려면 유지보수 이벤트 메타데이터 키 쿼리를 참조하세요.

gcloud

instances simulate-maintenance-event 명령어를 실행하여 인스턴스에서 구성된 유지보수 정책 작업을 강제 활성화합니다.

gcloud compute instances simulate-maintenance-event VM_NAME \
    --zone ZONE

다음을 바꿉니다.

  • VM_NAME: 유지보수 이벤트를 시뮬레이션하려는 VM의 이름입니다.

    단일 공백으로 구분된 다수의 VM 이름을 지정하여 동일한 영역에 있는 두 개 이상의 인스턴스에서 유지보수 이벤트를 시뮬레이션할 수 있습니다. 예를 들면 instance-1 instance-2 instance-3입니다.

  • ZONE: 인스턴스가 있는 영역입니다.

REST

Compute Engine API에서 compute.instances.simulateMaintenanceEvent 메서드에 대해 요청을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/simulateMaintenanceEvent

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • VM_NAME: 유지보수 이벤트를 시뮬레이션할 인스턴스의 이름입니다.

    단일 공백으로 구분된 다수의 인스턴스 이름을 지정하여 동일한 영역에 있는 두 개 이상의 인스턴스에서 유지보수 이벤트를 시뮬레이션할 수 있습니다. 예를 들면 instance-1 instance-2 instance-3입니다.

  • ZONE: 인스턴스가 있는 영역입니다.

단독 테넌트 노드에서 호스트 유지보수 이벤트 시뮬레이션

Google Cloud CLI 또는 API 요청을 사용하여 단독 테넌트 노드에서 호스트 유지보수 이벤트를 시뮬레이션할 수 있습니다. 단독 테넌트 VM에서 호스트 유지보수 이벤트를 시뮬레이션하는 동안 maintenance-event 메타데이터 키 값은 변경되지 않으며 시뮬레이션 중에도 NONE 상태로 유지됩니다.

gcloud

sole-tenancy node-groups simulate-maintenance-event 명령어를 실행하여 단독 테넌트 노드가 구성된 유지보수 정책을 강제로 활성화하게 합니다.

 gcloud compute sole-tenancy node-groups simulate-maintenance-event NODE_GROUP \
    --nodes=NODE_NAMES \
    --zone=ZONE \
    --async

다음을 바꿉니다.

  • NODE_GROUP: 유지보수 이벤트를 시뮬레이션하려는 노드 그룹의 이름입니다.

  • NODE_NAMES: 유지보수 이벤트를 시뮬레이션하려는 노드의 이름입니다. 여러 노드 이름을 지정할 때는 쉼표로 구분된 값을 사용합니다(예: node-1,node-2,node-3).

  • ZONE: 노드가 있는 영역입니다.

REST

Compute Engine API에서 compute.nodeGroups.simulateMaintenanceEvent 메서드에 대해 요청을 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups/NODE_GROUP/simulateMaintenanceEvent

{
  "nodes": [NODE_NAMES]
}

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.

  • ZONE: 노드가 있는 영역입니다.

  • NODE_GROUP: 유지보수 이벤트를 시뮬레이션하려는 노드 그룹의 이름입니다.

  • NODE_NAMES: 유지보수 이벤트를 시뮬레이션하려는 노드의 이름입니다. 노드 이름을 큰따옴표로 묶습니다(예: "node-1"). 여러 노드 이름을 지정할 때는 쉼표로 구분된 값을 사용합니다(예: "node-1","node-2","node-3").

다음 단계