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


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

VM에서 유지보수 이벤트를 시뮬레이션하여 다음을 테스트할 수 있습니다.

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

라이브 마이그레이션을 지원하지 않는 인스턴스에서 호스트 유지보수 이벤트를 시뮬레이션하려고 하면 구성된 호스트 유지보수 정책에 따라 인스턴스가 종료되거나 다시 시작됩니다.

시작하기 전에

  • SimulateMaintenanceEventRequestsPerMinutePerProjectPerRegion지역 API 비율 제한을 검토합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    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 사용을 위한 인증을 참고하세요.

제한사항

  • 호스트 유지보수 정책이 노드 그룹 내에서 마이그레이션하도록 설정된 단독 테넌트 노드 그룹에서 유지보수 이벤트를 올바르게 시뮬레이션하려면 각 노드에서 유지보수 이벤트를 순차적으로 트리거해야 합니다.
  • 단독 테넌트 노드 그룹의 경우 호스트 유지보수 이벤트를 시뮬레이션하려고 하는데 노드 그룹에 노드 그룹 내에서 마이그레이션하도록 설정된 호스트 유지보수 정책이 있는 경우 다음과 같이 처리됩니다.
    • 지정된 노드 수가 예약된 총 보류 노드 수보다 작거나 같은 경우 호스트 유지보수 이벤트 시뮬레이션은 지정된 모든 노드에서 동시에 실행됩니다.
    • 지정된 노드 수가 예약된 총 보류 노드 수보다 크면 시뮬레이션이 실패합니다.
  • 지역별로 분당 시작할 수 있는 유지보수 이벤트 시뮬레이션 수는 simulate_maintenance_event_requests_per_region 측정항목의 API 비율 제한에 따라 제한됩니다.

호스트 유지보수 이벤트 시뮬레이션을 통한 라이브 마이그레이션 테스트

Google Cloud CLI 또는 API 요청을 사용하여 컴퓨팅 인스턴스의 유지보수 이벤트를 시뮬레이션할 수 있습니다. 이 시뮬레이션된 이벤트에는 정기 유지보수 이벤트에서 발생하는 다양한 유지보수 활동이 포함됩니다. 이렇게 하면 엔드 투 엔드 프로세스를 관찰하고 구현한 자동화를 테스트할 수 있습니다.

실시간 이전을 사용하는 인스턴스의 호스트 유지보수 이벤트를 시뮬레이션하는 동안 인스턴스의 maintenance-event 메타데이터 키는 다음과 같이 변경됩니다.

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

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

gcloud

compute instances simulate-maintenance-event 명령어를 사용하여 인스턴스의 유지보수 이벤트를 시뮬레이션하고 구성된 호스트 유지보수 정책 설정을 테스트합니다.

gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
    --zone=ZONE --with-extended-notifications=True

다음을 바꿉니다.

  • INSTANCE_NAME: 유지보수 이벤트를 시뮬레이션할 컴퓨팅 인스턴스의 이름입니다.

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

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

REST

compute.instances.simulateMaintenanceEvent 메서드에 대한 POST 요청을 생성합니다.

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

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • INSTANCE_NAME: 유지보수 이벤트를 시뮬레이션할 인스턴스의 이름입니다.
  • ZONE: 인스턴스가 있는 영역입니다.

종료되는 컴퓨팅 인스턴스의 호스트 유지보수 시뮬레이션

Google Cloud CLI 또는 API 요청을 사용하여 컴퓨팅 인스턴스의 유지보수 이벤트를 시뮬레이션할 수 있습니다. 이 시뮬레이션된 이벤트에는 정기 유지보수 이벤트에서 발생하는 다양한 유지보수 활동이 포함됩니다. 이렇게 하면 엔드 투 엔드 프로세스를 관찰하고 구현한 자동화를 테스트할 수 있습니다.

또한 지원되는 머신 유형과 함께 --with-extended-notifications 매개변수를 사용하면 시뮬레이션된 이벤트 중에 호스트 유지보수를 수동으로 시작하는 것을 테스트할 수 있습니다.

gcloud

  1. compute instances simulate-maintenance-event 명령어를 사용하여 인스턴스의 유지보수 이벤트를 시뮬레이션하고 구성된 호스트 유지보수 정책 설정을 테스트합니다. 원하는 경우 --with-extended-notifications 플래그를 포함할 수 있습니다.

    gcloud compute instances simulate-maintenance-event INSTANCE_NAME \
       --zone=ZONE --with-extended-notifications=True
    

    다음을 바꿉니다.

    • INSTANCE_NAME: 유지보수 이벤트를 시뮬레이션할 컴퓨팅 인스턴스의 이름입니다.

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

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

  2. 선택사항: 시뮬레이션된 유지보수 이벤트를 수동으로 시작하려면 compute instances perform-maintenance 명령어를 사용합니다.

    gcloud compute instances perform-maintenance INSTANCE_NAME \
       --zone=ZONE
    

    다음을 바꿉니다.

    • INSTANCE_NAME: 유지보수 이벤트를 시뮬레이션할 컴퓨팅 인스턴스의 이름입니다.

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

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

REST

  1. compute.instances.simulateMaintenanceEvent 메서드에 대한 POST 요청을 생성합니다. 원하는 경우 쿼리 매개변수 withExtendedNotifications를 포함할 수 있습니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/simulateMaintenanceEvent?withExtendedNotifications=True
    

    다음을 바꿉니다.

    • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
    • INSTANCE_NAME: 유지보수 이벤트를 시뮬레이션할 인스턴스의 이름입니다.
    • ZONE: 인스턴스가 있는 영역입니다.
  2. 선택사항: 시뮬레이션된 유지보수 이벤트를 수동으로 시작하려면 compute.instances.performMaintenance 메서드에 대한 POST 요청을 작성합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/performMaintenance
    

    다음을 바꿉니다.

    • INSTANCE_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.nodeGroups.simulateMaintenanceEvent 메서드에 대한 POST 요청을 생성합니다.

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").

다음 단계