VM 호스트 유지보수 정책 설정


이 문서에서는 호스트 이벤트가 발생할 때 VM이 작동하는 방식을 제어하기 위해 가상 머신(VM) 인스턴스의 호스트 유지 관리 정책을 설정하는 방법을 설명합니다.

시작하기 전에

  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

제한사항

  • 선점형 VM의 호스트 유지보수 정책은 변경할 수 없습니다. 유지보수 이벤트가 있으면 선점형 VM이 중지되고 마이그레이션되지 않습니다. 선점형 VM을 수동으로 다시 시작해야 합니다.
  • E2 머신 유형을 사용하여 VM을 만든 후에는 MIGRATE에서 TERMINATE로 또는 다른 방법으로 VM의 호스트 유지보수 설정을 변경할 수 없습니다.

사용 가능한 호스트 유지보수 속성

다음 속성을 사용하면 호스트 오류가 발생한 후 VM의 유지보수 동작, 다시 시작 동작, 동작을 구성할 수 있습니다.

Compute Engine은 별도로 지정하지 않는 한 기본값으로 각 VM을 구성합니다.

호스트 이벤트 중에 구성된 호스트 유지보수 정책에 따라 라이브 마이그레이션을 지원하지 않는 VM이 종료되거나 자동으로 다시 시작됩니다.

  • onHostMaintenance: VM을 재부팅할 수도 있는 유지보수 이벤트가 발생하는 경우의 동작을 결정합니다.

    • MIGRATE (기본값): 유지보수 이벤트가 있을 때 Compute Engine이 인스턴스를 라이브 마이그레이션합니다.
    • TERMINATE: VM을 마이그레이션하지 않고 중지합니다.
  • automaticRestart: VM이 비정상 종료되거나 시스템에 의해 중지되는 경우의 동작을 결정합니다.

    • true (기본값): 인스턴스가 다운되거나 중지되는 경우 Compute Engine이 인스턴스를 다시 시작합니다.
    • false: VM이 비정상 종료되거나 중지되는 경우 Compute Engine이 VM을 다시 시작하지 않습니다.
  • localSsdRecoveryTimeout: 로컬 SSD 복구 제한 시간을 설정합니다. Compute Engine이 호스트 오류 후 로컬 SSD 데이터를 복구하기까지 기다리는 최대 시간(시간)입니다. 이 설정은 로컬 SSD 디스크가 연결된 VM에만 적용됩니다.

    • 설정되지 않음(기본값): Compute Engine이 디스크를 복구하기 위해 최대 1시간 동안 기다립니다. Z3 VM(프리뷰)의 경우 기본 대기 시간은 4시간입니다.
    • 0~168 사이의 숫자: Compute Engine이 디스크 복구를 대기할 시간을 지정합니다. 이 숫자는 1시간 단위로 증가하는 정수여야 하며 최댓값은 7일입니다. 값이 0이면 Compute Engine이 데이터 복구를 기다리지 않는다는 의미입니다.
  • hostErrorTimeoutSeconds(미리보기): VM에서 응답이 없는 것을 감지하고 Compute Engine이 VM을 다시 시작하거나 종료하기 위해 대기하는 최대 시간(초)을 설정합니다.

    • 설정되지 않음(기본값): Compute Engine이 최대 5.5분(330초) 동안 대기한 후 응답하지 않는 VM을 다시 시작합니다.
    • 90~330 사이의 숫자: Compute Engine에서 응답하지 않는 VM을 다시 시작하기 전에 대기하는 시간(초)을 30초 단위로 지정합니다.

VM의 호스트 유지보수 정책 설정

처음 VM을 만들 때나 VM을 만든 후에 VM의 호스트 유지보수 정책을 변경할 수 있습니다.

VM 생성 중 호스트 유지보수 정책 설정

이 섹션의 정보는 VM을 만들 때 호스트 유지보수 정책을 설정하는 방법을 중점적으로 설명합니다. 더 많은 VM 만들기 예시는 VM 인스턴스 만들기 및 시작을 참조하세요.

Google Cloud 콘솔, gcloud CLI 또는 Compute Engine API를 사용하여 생성 시 VM의 호스트 유지보수 정책을 설정할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

  2. VM의 이름을 지정합니다.

  3. VM의 리전영역을 선택합니다.

  4. 머신 구성 섹션에서 다음을 수행합니다.

    1. VM의 머신 유형 세부정보를 지정합니다.
    2. VM 프로비저닝 모델 고급 설정 메뉴를 펼칩니다.
    3. 호스트 유지보수 시 메뉴에서 다음 단계 중 하나를 선택합니다.
    4. 유지보수 이벤트 중에 VM을 마이그레이션하려면 VM 인스턴스 마이그레이션을 선택합니다.
    5. 유지보수 이벤트 중에 VM을 중지하려면 VM 인스턴스 종료를 선택합니다.
  5. 만들기를 클릭하여 VM을 만듭니다.

gcloud

Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

Cloud Shell 활성화

Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

새 VM의 호스트 유지보수 정책을 설정하려면 gcloud compute instances create 명령어를 사용합니다. 다음 매개변수 중 하나 이상을 포함합니다.

  • --maintenance-policy: 호스트 유지보수 중에 VM을 마이그레이션 또는 중지할지 여부입니다. 이 속성을 생략하면 VM이 기본적으로 마이그레이션됩니다.
  • --no-restart-on-failure 또는 --restart-on-failure: 호스트 오류 후 VM이 자동으로 다시 시작되는지 여부입니다. 기본적으로 VM은 장애가 감지되면 항상 다시 시작됩니다.
  • --local-ssd-recovery-timeout: Compute Engine이 호스트 오류 후 연결된 로컬 SSD 디스크를 복구하는 데 소요되는 시간입니다. 기본값은 1시간입니다.

다음 명령어를 사용하여 새 VM의 호스트 유지보수 정책을 설정합니다. 플래그를 생략하면 플래그 기본값이 사용됩니다.

  gcloud compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

다음을 바꿉니다.

  • VM_NAME: VM 이름입니다.
  • MAINTENANCE_POLICY: 이 VM의 유지보수 정책입니다(TERMINATE 또는 MIGRATE).
  • RESTART_ON_FAILURE_BEHAVIOR: VM의 동작을 다시 시작합니다(--no-restart-on-failure 또는 --restart-on-failure로 설정).
  • SSD_RECOVERY_TIMEOUT: 응답하지 않는 VM에 연결된 로컬 SSD를 복구하는 데 걸리는 시간입니다. 유효한 값은 0시간~168시간(1시간 단위)입니다.

호스트 오류 감지 제한 시간 설정

Compute Engine이 응답이 없는 VM을 다시 시작하거나 종료하기 위해 대기하는 최대 시간을 설정하려면 gcloud compute instances create 명령어를 사용합니다. --host-error-timeout-seconds 플래그로 제한 시간을 지정합니다.

  gcloud beta compute instances create VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=ERROR_DETECTION_TIMEOUT

다음을 바꿉니다.

  • VM_NAME: VM 이름입니다.
  • MAINTENANCE_POLICY: 이 VM의 유지보수 정책입니다(TERMINATE 또는 MIGRATE).
  • RESTART_ON_FAILURE_BEHAVIOR: VM의 동작을 다시 시작합니다(--no-restart-on-failure 또는 --restart-on-failure로 설정).
  • SSD_RECOVERY_TIMEOUT: Compute Engine이 응답하지 않는 VM에 연결된 로컬 SSD를 복구하는 데 걸린 시간입니다. 유효한 값은 0시간~168시간(1시간 단위)입니다.
  • ERROR_DETECTION_TIMEOUT: Compute Engine이 응답하지 않는 VM을 다시 시작하기 전에 대기하는 시간(초)이며, 90부터 330까지의 값(30초 단위)입니다.

REST

Compute Engine API를 사용하여 새 VM의 호스트 유지보수 정책을 설정하려면 instances.insert 메서드를 사용합니다. 요청 본문의 scheduling 객체에 다음 속성 중 하나 이상을 포함합니다.

  • onHostMaintenance: 호스트 유지보수 중에 VM을 마이그레이션 또는 중지할지 여부입니다. VM은 기본적으로 마이그레이션됩니다.
  • automaticRestart: 호스트 오류 후 VM이 자동으로 다시 시작되는지 여부입니다. VM은 기본적으로 자동으로 다시 시작됩니다.
  • localSsdRecoveryTimeout: Compute Engine이 호스트 오류를 감지한 후 연결된 로컬 SSD 디스크를 복구하는 데 소요되는 시간입니다. 기본값은 1시간입니다.
      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

      {
        "name": "VM_NAME",

        "scheduling": {
          "onHostMaintenance": "MAINTENANCE_POLICY",
          "automaticRestart": "RESTART_POLICY,
          "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        }
      }

다음을 바꿉니다.

  • PROJECT_ID: VM의 프로젝트입니다.
  • ZONE: VM을 만들려는 영역입니다.
  • VM_NAME: VM 이름입니다.
  • MAINTENANCE_POLICY: 이 VM의 유지보수 정책입니다(TERMINATE 또는 MIGRATE).
  • RESTART_POLICY: 이 VM의 다시 시작 정책입니다(true 또는 false).
  • SSD_RECOVERY_TIMEOUT: Compute Engine이 응답하지 않는 VM에 연결된 로컬 SSD 디스크를 복구하는 데 걸린 시간입니다. 유효한 값은 0시간~168시간(1시간 단위)입니다.

호스트 오류 감지 제한 시간 설정

Compute Engine이 응답하지 않는 VM을 다시 시작하거나 종료하기 위해 대기하는 최대 시간을 설정하려면 베타 instances.insert 메서드를 사용합니다. 이 옵션은 미리보기에서 사용할 있기 때문입니다.

hostErrorTimeoutSeconds 속성을 요청 본문의 scheduling 객체에 추가합니다.


   POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

   {
      "name": "VM_NAME",

      "scheduling": {
        "onHostMaintenance": "MAINTENANCE_POLICY",
        "automaticRestart": "RESTART_POLICY,
        "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
        "hostErrorTimeoutSeconds": HOST_ERROR_TIMEOUT,
      }
    }

다음을 바꿉니다.

  • PROJECT_ID: VM의 프로젝트입니다.
  • ZONE: VM을 만들려는 영역입니다.
  • VM_NAME: VM 이름입니다.
  • MAINTENANCE_POLICY: 이 VM의 유지보수 정책입니다(TERMINATE 또는 MIGRATE).
  • RESTART_POLICY: 이 VM의 다시 시작 정책입니다(true 또는 false).
  • SSD_RECOVERY_TIMEOUT: Compute Engine이 응답하지 않는 VM에 연결된 로컬 SSD 디스크를 복구하는 데 걸린 시간입니다. 유효한 값은 0시간~168시간(1시간 단위)입니다.
  • HOST_ERROR_TIMEOUT: Compute Engine이 응답하지 않는 VM을 다시 시작하거나 종료하기 전에 대기하는 시간(초)입니다. 유효한 값은 90부터 330까지의 값(30초 단위)입니다.

기존 VM의 호스트 유지보수 정책 업데이트

콘솔

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 설정을 변경할 VM을 클릭합니다. VM 세부정보 페이지가 표시됩니다.

  3. VM 세부정보 페이지에서 다음 단계를 완료합니다.

    1. 페이지 상단에서 수정 버튼을 클릭합니다.
    2. 관리 섹션으로 이동합니다. 가용성 정책 섹션에서 호스트 유지보수 시 옵션과 자동 다시 시작 옵션을 설정할 수 있습니다.
    3. 저장을 클릭합니다.

gcloud

Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

Cloud Shell 활성화

Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

gcloud compute instances set-scheduling 명령어를 사용하여 기존 VM의 호스트 유지보수 정책을 업데이트합니다. 이전 섹션의 VM 생성 명령어에 설명된 것과 동일한 매개변수를 사용합니다.

    gcloud compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT

다음을 바꿉니다.

  • VM_NAME: VM 이름입니다.
  • MAINTENANCE_POLICY: 이 VM의 정책입니다(TERMINATE 또는 MIGRATE).
  • RESTART_ON_FAILURE_BEHAVIOR: VM의 다시 시작 동작입니다(--no-restart-on-failure 또는 --restart-on-failure).
  • SSD_RECOVERY_TIMEOUT: Compute Engine이 응답하지 않는 VM에 연결된 로컬 SSD 디스크를 복구하는 데 걸리는 시간입니다(시간 단위). 유효한 값은 0부터 168까지입니다.

호스트 오류 감지 제한 시간 업데이트

Compute Engine이 응답하지 않는 VM을 다시 시작하거나 종료하기 위해 대기하는 최대 시간을 업데이트하려면 gcloud beta compute instances set-scheduling 명령어를 사용합니다. 이 기능은 미리보기에서 사용할 수 있기 때문입니다.

--host-error-timeout-seconds 매개변수로 제한 시간을 업데이트합니다. 예를 들면 다음과 같습니다.

    gcloud beta compute instances set-scheduling VM_NAME \
      --maintenance-policy=MAINTENANCE_POLICY \
      --RESTART_ON_FAILURE_BEHAVIOR \
      --local-ssd-recovery-timeout=SSD_RECOVERY_TIMEOUT \
      --host-error-timeout-seconds=NUMBER_OF_SECONDS

다음을 바꿉니다.

  • VM_NAME: VM 이름입니다.
  • MAINTENANCE_POLICY: 이 VM의 유지보수 정책입니다(TERMINATE 또는 MIGRATE).
  • RESTART_ON_FAILURE_BEHAVIOR: VM의 동작을 다시 시작합니다(--no-restart-on-failure 또는 --restart-on-failure로 설정).
  • SSD_RECOVERY_TIMEOUT: Compute Engine이 응답하지 않는 VM에 연결된 로컬 SSD 디스크를 복구하는 데 걸리는 시간(시간 단위)입니다. 유효한 값은 0부터 168까지입니다.
  • NUMBER_OF_SECONDS: Compute Engine이 응답하지 않는 VM을 다시 시작하거나 종료하기 전에 대기하는 시간(초)이며, 90부터 330까지의 값(30초 단위)입니다.

REST

instances.setScheduling 메서드에 대한 POST 요청으로 기존 VM의 호스트 유지보수 정책을 업데이트합니다.

요청 본문에 다음 속성 중 하나 이상을 포함합니다.

  • onHostMaintenance: 호스트 유지보수 중에 VM을 마이그레이션 또는 중지할지 여부입니다. VM은 기본적으로 마이그레이션됩니다.
  • automaticRestart: 호스트 오류 후 VM이 자동으로 다시 시작되는지 여부입니다. VM은 기본적으로 자동으로 다시 시작됩니다.
  • localSsdRecoveryTimeout: Compute Engine이 호스트 오류를 감지한 후 연결된 로컬 SSD 디스크를 복구하는 데 소요되는 시간입니다. 생략할 경우 기본값은 1시간입니다.
    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

    {
      "onHostMaintenance": "MAINTENANCE_POLICY",
      "automaticRestart": RESTART_POLICY,
      "localSsdRecoveryTimeout": SSD_RECOVERY_TIMEOUT
    }

다음을 바꿉니다.

  • PROJECT_ID: VM의 프로젝트입니다.
  • ZONE: VM이 있는 영역입니다.
  • VM_NAME: VM 이름입니다.
  • MAINTENANCE_POLICY: 이 VM의 유지보수 정책입니다(TERMINATE 또는 MIGRATE).
  • RESTART_POLICY: 이 VM의 다시 시작 정책입니다(true 또는 false).
  • SSD_RECOVERY_TIMEOUT: Compute Engine에서 응답하지 않는 VM에 연결된 로컬 SSD 디스크를 복구하는 데 걸리는 시간(시간 단위)입니다. 유효한 값은 0부터 168까지입니다.

호스트 오류 감지 제한 시간 업데이트

Compute Engine은 응답이 없는 VM을 다시 시작하거나 종료하기 위해 대기하는 최대 시간을 업데이트하려면 베타 instances.setScheduling 메서드를 사용해야 합니다. 이 기능은 미리보기에서 사용할 수 있기 때문입니다.

요청 본문에 hostErrorTimeoutSeconds 매개변수를 추가합니다.

  POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setScheduling

  {
    "hostErrorTimeoutSeconds": NUMBER_OF_SECONDS,
  }

다음을 바꿉니다.

  • PROJECT_ID: VM의 프로젝트입니다.
  • ZONE: VM이 있는 영역입니다.
  • VM_NAME: VM 이름입니다.
  • NUMBER_OF_SECONDS: Compute Engine이 응답하지 않는 VM을 다시 시작하거나 종료하기 전에 대기하는 시간(초)이며, 90부터 330까지의 값(30초 단위)입니다.

VM의 호스트 유지보수 정책 설정 보기

콘솔

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 설정을 보려는 VM의 이름을 클릭합니다. VM 인스턴스 세부정보 페이지가 열립니다.

  3. 관리 섹션으로 이동합니다. 가용성 정책 하위 섹션에 호스트 유지보수 시자동으로 다시 시작에 대한 현재 설정이 표시됩니다.

gcloud

gcloud compute instances describe 명령어를 사용하여 VM의 호스트 유지보수 옵션 설정을 확인합니다.

    gcloud compute instances describe VM_NAME --format="yaml(scheduling)"

VM_NAME을 VM 이름으로 바꿉니다.

출력에는 VM의 호스트 오류 감지 제한 시간이 포함됩니다. 예를 들면 다음과 같습니다.

    scheduling:
      automaticRestart: true
      localSsdRecoveryTimeout:
        nanos: 0
        seconds: '10800'
      onHostMaintenance: MIGRATE
      preemptible: false
      provisioningModel: STANDARD

호스트 오류 감지 제한 시간 설정 보기

이 옵션은 미리보기에서만 사용할 수 있으므로 gcloud beta compute instances describe 명령어를 사용하여 hostErrorTimeoutSeconds의 현재 값을 확인합니다.

  gcloud beta compute instances describe VM_NAME --format="yaml(scheduling)"

VM_NAME을 VM 이름으로 바꿉니다.

출력에는 VM의 호스트 오류 감지 제한 시간이 포함됩니다. 예를 들면 다음과 같습니다.

  scheduling:
    automaticRestart: true
    hostErrorTimeoutSeconds: 120
    localSsdRecoveryTimeout:
      nanos: 0
      seconds: '10800'
    onHostMaintenance: MIGRATE
    preemptible: false
    provisioningModel: STANDARD

REST

VM의 호스트 유지보수 설정을 보려면 instances.get 메서드를 사용합니다.

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

다음을 바꿉니다.

  • PROJECT_ID: VM이 있는 프로젝트입니다.
  • ZONE: VM이 있는 영역입니다.
  • VM_NAME: VM 이름입니다.

출력에서 scheduling 객체에는 VM의 호스트 유지보수 정책이 포함됩니다. 예를 들면 다음과 같습니다.

  "scheduling": {
      "onHostMaintenance": "MIGRATE",
      "automaticRestart": true,
      "preemptible": false,
      "provisioningModel": "STANDARD",
      "localSsdRecoveryTimeout": {
        "seconds": "10800",
        "nanos": 0
      }
    }

호스트 오류 제한 시간 설정 보기

이 옵션은 미리보기에서만 사용할 수 있으므로 베타 instances.get 메서드에 대한 GET 요청으로 현재 hostErrorTimeoutSeconds 설정을 확인합니다.

 GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

다음을 바꿉니다.

  • PROJECT_ID: VM의 프로젝트입니다.
  • ZONE: VM이 있는 영역입니다.
  • VM_NAME: VM 이름입니다.

출력에서 scheduling 객체에는 VM의 호스트 오류 감지 제한 시간이 포함됩니다. 예를 들면 다음과 같습니다.

  "scheduling": {
    "hostErrorTimeoutSeconds": 120
  }

다음 단계