인스턴스 가용성 정책 설정

Compute Engine은 인프라의 유지보수 작업을 정기적으로 수행합니다. 이 페이지에서는 이러한 유지보수 이벤트의 유형 및 대략적인 빈도와 인스턴스 가용성 옵션을 설정하여 이러한 유지보수 이벤트가 발생할 때의 VM 인스턴스 동작을 구성하는 방법을 설명합니다. 유지보수 이벤트가 발생할 때 인스턴스를 라이브 마이그레이션하도록 설정하는 방법도 설명합니다.

시작하기 전에

유지보수 이벤트

Compute Engine 유지보수 이벤트에는 하드웨어 및 소프트웨어 업데이트가 수반됩니다. 이러한 유지보수 이벤트 중 일부에서는 Google이 유지보수할 호스트에서 VM을 이전해야 하며 Compute Engine은 이러한 인스턴스의 예약 동작을 자동으로 관리합니다. 라이브 마이그레이션을 사용할 수 있도록 인스턴스의 가용성 정책을 구성하면 Compute Engine은 VM 인스턴스를 라이브 마이그레이션합니다. 이렇게 하면 이러한 이벤트 도중에 애플리케이션이 중단되지 않습니다. 또는 이러한 이벤트 도중에 라이브 마이그레이션하지 않고 인스턴스를 종료할 수도 있습니다.

다음 표에서는 Compute Engine 유지보수 이벤트를 크게 두 가지 카테고리로 분류하고, 각각의 예를 보여주며, VM을 다른 호스트로 라이브 마이그레이션해야 하는 유지보수 이벤트가 무엇인지 알려줍니다.

유지보수 이벤트 유형 대략적인 빈도* 새 호스트로 라이브 마이그레이션 필요 여부
호스트 유지보수 호스트 커널 업그레이드, 하드웨어 복구 또는 업그레이드 2주에 한 번
경량 하이퍼바이저 수준 업그레이드, 네트워킹 스택 업그레이드 1주에 1~2회 아니요

* 이러한 빈도는 대략적인 수치이며 보장되지 않습니다. Compute Engine은 여기에 언급된 빈도보다 더 자주 유지보수를 수행할 수 있습니다.

가용성 정책 선택

VM 인스턴스의 가용성 정책은 Google이 VM 인스턴스를 다른 호스트 머신으로 이전해야 하는 유지보수 이벤트가 발생할 때의 동작을 지정합니다. Compute Engine이 VM 인스턴스를 다른 호스트로 라이브 마이그레이션하는 동안 VM 인스턴스가 계속 실행되도록 구성하거나 인스턴스를 종료할 수 있습니다. 언제든지 인스턴스의 가용성 정책을 업데이트하여 VM 인스턴스의 동작 방식을 제어할 수 있습니다.

다음 두 가지 설정을 구성하여 인스턴스의 가용성 정책을 변경할 수 있습니다.

  • VM 인스턴스의 유지보수 동작: 유지보수 이벤트가 있을 때 인스턴스를 라이브 마이그레이션할지 또는 종료할지 여부를 결정합니다.
  • 인스턴스의 다시 시작 동작: 인스턴스가 비정상 종료되거나 종료되는 경우 인스턴스를 자동으로 다시 시작할지 여부를 결정합니다.

인스턴스의 기본 유지보수 동작은 라이브 마이그레이션이지만 유지보수 이벤트 동안 인스턴스를 종료하도록 동작을 변경할 수도 있습니다.

실시간 마이그레이션

기본적으로 표준 인스턴스는 실시간 마이그레이션하도록 설정되어 있습니다. 즉, Compute Engine이 인프라 유지보수 이벤트 발생 시 인스턴스를 자동으로 마이그레이션하며, 인스턴스는 마이그레이션이 진행되는 동안 실행 상태를 유지합니다. 인스턴스의 성능이 잠시 감소할 수는 있지만 전반적으로 대부분의 인스턴스에서 별 차이는 감지되지 않습니다. 이는 지속적인 업타임이 요구되며 짧은 시간 동안의 성능 감소에 크게 영향을 받지 않는 인스턴스에 이상적입니다.

Compute Engine은 인스턴스를 마이그레이션할 때 시스템 이벤트를 보고하며, 이벤트는 영역 작업 목록에 게시됩니다. 특정 영역의 Compute Engine 작업을 확인하여 이 이벤트를 검토할 수 있습니다. 라이브 마이그레이션 이벤트의 작업 유형은 다음과 같습니다.

compute.instances.migrateOnHostMaintenance

종료 및 (원하는 경우) 재시작

인스턴스를 라이브 마이그레이션하기를 원하지 않는 경우 인스턴스를 종료하고 원하는 경우 다시 시작하도록 선택할 수 있습니다. 이 옵션을 사용하면 Compute Engine은 인스턴스에 종료 신호를 보내고 인스턴스가 완전히 종료될 때까지 잠시 기다렸다가 인스턴스를 종료하고 유지보수 이벤트 이후에 인스턴스를 다시 시작합니다. 이 옵션은 일정하게 최대 성능을 유지해야 하는 인스턴스나, 인스턴스 장애나 재부팅을 처리하도록 전체 애플리케이션을 빌드한 경우에 이상적입니다.

Compute Engine은 인스턴스를 종료하고 재부팅할 때 시스템 이벤트를 보고하며, 이벤트는 영역 작업 목록에 게시됩니다. 특정 영역의 Compute Engine 작업을 확인하여 이 이벤트를 검토할 수 있습니다. 종료 이벤트의 작업 유형은 다음과 같습니다.

compute.instances.terminateOnHostMaintenance

인스턴스는 재부팅할 때 동일한 영구 부팅 디스크를 사용하며 구성한 보조 영구 디스크를 다시 연결합니다. 이러한 디스크의 데이터는 인스턴스를 마이그레이션하고 재시작해도 유지됩니다.

로컬 SSD 데이터는 인스턴스를 종료한 후에 유지되지 않습니다. 다시 시작할 때 인스턴스는 포맷하고 마운트해야 하는 새 로컬 SSD를 만듭니다.

자동 다시 시작

automaticRestart 필드를 true로 설정하면 유지보수 이벤트가 있을 때 인스턴스가 종료되도록 설정되어 있거나 기본 하드웨어 문제 발생 시 인스턴스가 충돌하는 경우 Compute Engine이 인스턴스를 자동으로 재시작하도록 설정할 수 있습니다. 이 설정은 사용자 작업(예: sudo shutdown 호출)을 통해 인스턴스를 오프라인으로 전환한 경우 또는 영역이 중단된 동안에는 적용되지 않습니다.

Compute Engine은 인스턴스를 재시작할 때 시스템 이벤트를 보고하며, 이벤트는 영역 작업 목록에 게시됩니다. 특정 영역의 Compute Engine 작업을 확인하여 이 이벤트를 검토할 수 있습니다. 자동 다시 시작 이벤트의 작업 유형은 다음과 같습니다.

compute.instances.automaticRestart

Compute Engine 작업 보기

Google Cloud Console, gcloud 명령줄 도구 또는 Compute Engine API를 통해 완료된 작업의 목록을 확인할 수 있습니다.

Console

프로젝트의 작업 목록을 보려면 작업 페이지로 이동합니다.

  1. 작업 페이지로 이동합니다.

  2. 작업에 대한 자세한 내용을 보려면 작업 요약을 클릭합니다. 예를 들어 my-instance 인스턴스의 마이그레이션 세부정보를 보려면 자동으로 인스턴스 마이그레이션 작업을 클릭합니다. 라이브 마이그레이션을 보여주는 작업 페이지 스크린샷 라이브 마이그레이션 세부정보 스크린샷

gcloud

gcloud compute를 사용하여 프로젝트의 작업 목록을 보려면 operations list 하위 명령어를 사용합니다.

지정된 영역의 작업 목록을 보려면 --filter 플래그를 추가합니다.

gcloud compute operations list --filter="zone:(ZONE)"

예를 들어 us-cental1-c의 작업 목록을 보려면 다음 명령어를 실행합니다.

gcloud compute operations list --filter="zone:(us-central1-c)"

NAME                            TYPE                                        TARGET                                HTTP_STATUS  STATUS  TIMESTAMP
systemevent-1543845145000...    compute.instances.migrateOnHostMaintenance  us-central1-c/instances/my-instance   200          DONE    2018-12-03T05:52:25.000-08:00

API

작업에 대한 API 요청을 전역, 리전, 영역 수준에서 지정해야 합니다. 라이브 마이그레이션, 인스턴스 종료, 자동 다시 시작은 모두 영역 수준 작업입니다.

영역 작업의 경우 zoneOperations.list 메서드에 대한 GET 요청을 수행합니다.

GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/operations

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 이 요청의 프로젝트 ID입니다.
  • [ZONE]은 이 요청의 영역 이름입니다.

    요청 본문을 비워 둡니다.

다음은 영역 작업 요청의 샘플 출력입니다. 이 출력에는 호스트 마이그레이션의 세부정보가 표시됩니다.

{
 "kind": "compute#operation",
 "id": "3216798767364213712",
 "name": "systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b",
 "zone": "https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c",
 "operationType": "compute.instances.migrateOnHostMaintenance",
 "targetLink": "https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/instances/my-instance",
 "targetId": "3070988523247098025",
 "status": "DONE",
 "statusMessage": "Instance migrated during Compute Engine maintenance.",
 "user": "system",
 "progress": 100,
 "insertTime": "2018-12-03T05:52:25.000-08:00",
 "startTime": "2018-12-03T05:52:25.000-08:00",
 "endTime": "2018-12-03T05:52:25.000-08:00",
 "selfLink": "https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/operations/systemevent-1543845145000-57c1e7574b840-a195b637-5ff74d9b"
}

가용성 정책 설정

onHostMaintenance 속성과 automaticRestart 속성을 사용하여 인스턴스의 유지보수 동작 및 자동 다시 시작 설정을 구성합니다. 명시적으로 달리 지정하지 않는 한 모든 인스턴스는 기본값으로 구성됩니다.

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

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

    • [기본값] true: 인스턴스가 다운되거나 종료되는 경우 Compute Engine은 인스턴스를 다시 시작합니다.
    • false: 인스턴스가 비정상 종료되거나 종료되는 경우 Compute Engine은 인스턴스를 다시 시작하지 않습니다.

처음 인스턴스를 만들 때나 인스턴스를 만든 후setScheduling 메서드를 사용하여 인스턴스의 가용성 정책을 변경할 수 있습니다.

인스턴스를 만드는 동안 옵션 설정

Console

  1. GCP Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. 새 인스턴스 만들기 페이지에서 인스턴스의 속성을 입력합니다.
  4. 관리, 보안, 디스크, 네트워킹, 단독 테넌시 옵션을 펼칩니다.
  5. 가용성 정책에서 자동 다시 시작 옵션과 호스트 유지보수 시 옵션을 설정합니다.
  6. 만들기를 클릭하여 인스턴스를 만듭니다.

gcloud

gcloud compute에서 새 인스턴스의 가용성 정책을 지정하려면 --maintenance-policy 플래그를 사용하여 인스턴스를 마이그레이션 또는 종료할지 여부를 지정합니다. --no-restart-on-failure 플래그를 제공하는 경우를 제외하면 기본적으로 인스턴스는 다시 시작하도록 자동 설정됩니다.

gcloud compute instances create INSTANCE .. \
    [--maintenance-policy MAINTENANCE_POLICY] \
    [--no-restart-on-failure]

API

API에서 다음 URL로 POST 요청을 전송하여 프로젝트를 자신의 프로젝트 ID로, 영역을 인스턴스의 영역으로 바꿉니다.

https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances

요청 본문에 onHostMaintenanceautomaticRestart 매개변수를 포함합니다.

{
  "name": "example-instance",
  "description": "Front-end for real-time ingest; don't migrate.",
  ...
  // User options for influencing this Instance’s life cycle.
  "scheduling": {
    "onHostMaintenance": "migrate",
    "automaticRestart": "true" # specifies that Compute Engine should automatically restart your instance
  }
}

자세한 내용은 인스턴스 참조 문서를 확인하세요.

인스턴스 옵션 업데이트

Console

  1. Google Cloud Console의 VM 인스턴스 페이지로 이동합니다.

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

  2. 설정을 변경할 인스턴스를 클릭합니다. 인스턴스 세부정보 페이지가 표시됩니다.
  3. 인스턴스 세부정보 페이지에서 다음 단계를 완료합니다.
    1. 페이지 상단에서 수정 버튼을 클릭합니다.
    2. 가용성 정책에서 필요에 따라 정책을 업데이트합니다. 가용성 정책 섹션에서 자동 다시 시작 옵션과 호스트 유지보수 시 옵션을 설정할 수 있습니다.
    3. 저장을 클릭합니다.

gcloud

인스턴스의 가용성 정책을 업데이트하려면 instances set-scheduling 명령어를 사용합니다. 이때 위의 인스턴스 만들기 명령어에서 사용한 매개변수와 플래그를 지정합니다.

gcloud compute instances set-scheduling INSTANCE \
    [--maintenance-policy BEHAVIOR] \
    [--no-restart-on-failure | --restart-on-failure]

API

API에서 다음 URL로 요청을 전송하여 프로젝트를 자신의 고유 프로젝트 ID로, 영역을 인스턴스의 영역으로 바꿀 수 있습니다.

https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-f/instances/setScheduling

가용성 정책의 새 값을 요청 본문에 포함해야 합니다.

{
  "onHostMaintenance": "migrate"
  "automaticRestart": "true" # specifies that Compute Engine should automatically restart your instance
}

자세한 내용은 instances().setScheduling 참조 문서를 확인하세요.

가용성 정책 테스트

가용성 정책을 설정한 후에는 유지보수 이벤트를 시뮬레이션하여 이러한 가용성 정책이 애플리케이션에 미치는 영향을 테스트할 수 있습니다. 예를 들어 다음 상황 중 하나에서 인스턴스의 유지보수 이벤트를 시뮬레이션할 수 있습니다.

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

시뮬레이션된 유지보수 이벤트에는 특정 API 비율 제한이 적용됩니다.

gcloud 명령줄 도구나 API 요청을 사용하여 인스턴스에서 유지보수 이벤트를 시뮬레이션할 수 있습니다.

gcloud

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

gcloud compute instances simulate-maintenance-event [INSTANCE_NAME] \
    --zone [ZONE]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 유지보수 이벤트를 시뮬레이션할 인스턴스의 이름입니다. 인스턴스 이름을 여러 개 지정하여 동일한 영역에 있는 인스턴스 두 개 이상에서 유지보수 이벤트를 시뮬레이션할 수 있습니다.
  • [ZONE]은 인스턴스가 있는 영역입니다.

API

API에서 Compute Engine API의 compute.instances.simulateMaintenanceEvent 메서드로 요청을 보냅니다.

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

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 유지보수 이벤트를 시뮬레이션할 인스턴스의 이름입니다.
  • [ZONE]은 인스턴스가 있는 영역입니다.

    이 메서드에 대한 자세한 내용은 instances().simulateMaintenanceEvent 참조 문서를 확인하세요.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서