Bring Your Own License(사용자 라이선스 사용)

이 페이지에서는 Google Cloud에 Bring Your Own License(사용자 라이선스 사용)를 제공하는 방법을 설명합니다. 기존 라이선스로 이미지를 가져오기 전에 Bring Your Own License(사용자 라이선스 사용) 개요를 읽어보세요.

Google Cloud에 전용 하드웨어 요구 사항이 있는 물리적 코어 또는 물리적 프로세서 라이선스를 가져오려면 단독 테넌트 노드를 사용하세요. 단독 테넌트 노드를 사용하면 VM이 프로젝트 전용 하드웨어에서 실행되며 물리적 코어 사용이 제한됩니다.

기존 라이선스로 이미지를 가져오려면 다음이 필요합니다.

  1. 가상 디스크 파일 가져오기 및 이미지 만들기
  2. 단독 테넌트 노드 템플릿 만들기
  3. 노드 템플릿을 기반으로 단독 테넌트 노드 그룹 만들기
  4. 가져온 가상 디스크 파일을 사용하여 노드 그룹에서 VM 프로비저닝하기

지원이 필요하거나 라이선스와 관련하여 궁금한 점이 있으면 라이선스 리셀러에게 문의하세요. Google Cloud에 대한 지원이 필요하거나 기존 라이선스로 이미지를 가져오는 것과 관련하여 궁금한 점이 있으면 Google Cloud 지원팀에 문의하세요.

시작하기 전에

  1. 추가 CPU 할당량 요청: 노드 그룹을 지원하기에 충분한 CPU 할당량이 있는지 확인합니다. 서로 다른 노드 유형에 대해 추가 할당량을 요청해야 합니다. 그리고 약정 사용 할인을 구매한 경우에는 약정 CPU에 대해 할당량 증가를 요청해야 합니다. 설정 및 워크로드의 필요에 따라 VM 또는 IP 주소의 할당량 조정을 요청해야 할 수도 있습니다.

  2. Cloud Build API 사용 설정: OS 이미지를 가져오려면 Cloud Build API를 사용 설정해야 합니다. 이 API를 사용 설정하면 Compute Engine이 프로젝트에 적절한 IAM 역할을 부여하여 이미지를 프로젝트로 가져올 수 있습니다. 프로젝트에 부여된 역할을 나열하려면 gcloud projects get-iam-policy 명령어를 사용합니다. 프로젝트에 역할을 부여하는 방법에 대한 자세한 내용은 Compute Engine 리소스에 대한 액세스 관리를 참조하세요.

  3. Cloud Logging API 사용 설정: 라이선스 계약에 따라 물리적 서버 사용량을 추적해야 하는 경우 이 API를 사용 설정합니다. 이 API를 사용 설정하면 Google이 권장하는 BigQuery를 사용하여 물리적 코어 수와 같은 서버 사용량 정보를 가져와 확인할 수 있습니다. 물리적 코어 수를 확인하는 방법에 대한 자세한 내용은 서버 사용량 확인을 참조하세요.

가상 디스크 파일 가져오기 및 이미지 만들기

VM용 가상 디스크 파일을 가져오기 전에 VM에서 사전 확인 도구를 다운로드하고 실행하여 파일에 비호환성이 없는지 확인합니다.

자체 라이선스로 VM을 시작하려면 사용하려는 OS에서 가상 디스크를 가져옵니다. gcloud 명령줄 도구로 파일을 가져올 수 있습니다. 명령줄 도구는 Cloud Storage 버킷 및 로컬 워크스테이션에서 가상 디스크 가져오기를 지원합니다.

가상 디스크 파일을 가져올 때 이미지 가져오기 도구는 이미지 파일을 Cloud Storage에 업로드하고 필요한 경우 새 Cloud Storage 버킷을 만듭니다. 그런 다음 가져오기 도구가 파일을 Compute Engine에 복사하고 가상 디스크 파일에서 이미지를 만듭니다.

로컬 워크스테이션에서 가상 디스크 파일을 호스팅하는 경우 이미지 가져오기 도구가 Cloud Storage 버킷에 파일을 업로드한 다음 이미지를 Compute Engine으로 가져옵니다.

이미지 가져오기 도구에 대한 자세한 설명은 가상 디스크 가져오기를 참조하세요.

gcloud

  1. 다음 명령어를 실행하여 가상 디스크 파일을 가져오고 이미지를 만듭니다.

    gcloud compute images import image-name  --source-file file-name  --os os
    

    다음을 바꿉니다.

    • image-name: 이미지에 지정할 이름입니다.

    • file-name: 로컬로 호스팅되거나 Cloud Storage에 저장된 가상 디스크 파일입니다.

      • 가상 디스크가 로컬 파일인 경우: 절대 또는 상대 경로를 사용합니다. 이 경우 가상 디스크의 크기와 네트워크 연결 속도에 따라 업로드 작업을 실행하는 데 수십 분이 걸릴 수 있습니다.

      • Cloud Storage에 저장된 가상 디스크 파일의 경우: gs://bucket-name/object-name 형식으로 파일의 전체 경로를 지정하고, 가져오기 프로세스에 사용된 프로젝트의 스토리지 버킷에 있어야 합니다.

    • os: source-file의 운영체제이며, 다음 중 하나여야 합니다.

      • rhel-6-byol
      • rhel-7-byol
      • rhel-8-byol
      • sles-12-byol
      • sles-15-byol
      • windows-2012-byol
      • windows-2012r2-byol
      • windows-2016-byol
      • windows-2019-byol
      • windows-7-x64-byol
      • windows-7-x86-byol
      • windows-8-x64-byol
      • windows-8-x86-byol
      • windows-10-x64-byol
      • windows-10-x86-byol
  2. 이미지를 만든 후에는 프로젝트 또는 조직 외부에 있는 사용자와 이미지를 공유할 수 있습니다.

    gcloud projects add-iam-policy-binding project-id  --member user:user-email  --role roles/compute.imageUser
    

    다음을 바꿉니다.

    • project-id: 액세스 권한을 부여할 이미지가 포함된 프로젝트의 프로젝트 ID입니다.
    • user-email: 이미지를 공유할 사용자의 이메일입니다.

    공유 이미지에 액세스하는 방법에 대한 자세한 내용은 공유 이미지 액세스를 참조하세요.

  3. Cloud Storage에 저장된 파일과 Compute Engine의 이미지에는 요금이 부과됩니다. 이미지를 VM으로 올바르게 가져오고 부팅하는지 확인한 후 Cloud Storage에서 가상 디스크 파일을 삭제할 수 있습니다.

단독 테넌트 노드 템플릿 만들기

노드 그룹을 기반으로 하는 노드 템플릿을 만듭니다.

gcloud

gcloud compute sole-tenancy node-templates create template-name --node-type node-type --region region --server-binding server-binding

다음을 바꿉니다.

  • template-name: 만들려는 노드 템플릿의 이름입니다.
  • 이 템플릿의 node-type 노드 유형입니다. 예를 들어 80개의 vCPU와 624GB 메모리가 있는 노드를 만들려면 n2-node-80-640 노드 유형을 선택합니다.

  • region: 노드 템플릿을 만들 리전입니다.

  • server-binding: 이 템플릿을 사용하는 노드의 서버 binding 정책입니다. 라이선스 유형에 따라 다음 중 하나로 설정합니다.

    • restart-node-on-any-server
    • restart-node-on-minimal-servers

API

POST https://www.googleapis.com/compute/beta/projects/project-id/regions/region/nodeTemplates

{
   "name": "template-name",
   "nodeType": "node-type"
   "nodeAffinityLabels": {
      "key": "value"
   },
   "serverBinding":
   {
     "type": "server-binding"
   }
}

다음을 바꿉니다.

  • project-id: 프로젝트의 ID입니다.
  • template-name: 만들려는 노드 템플릿의 이름입니다.
  • 이 템플릿의 node-type 노드 유형입니다. 예를 들어 80개의 vCPU와 624GB 메모리가 있는 노드를 만들려면 n2-node-80-640 노드 유형을 선택합니다.

  • key:value: 쉼표로 구분된 어피니티 라벨 목록입니다. 어피티니 라벨은 노드 템플릿을 만들 때만 설정됩니다.

  • region: 노드 템플릿을 만들 리전입니다.

  • server-binding: 이 템플릿을 사용하는 노드의 서버 binding 정책입니다. 라이선스 유형에 따라 다음 중 하나로 설정합니다.

    • RESTART_NODE_ON_ANY_SERVER
    • RESTART_NODE_ON_MINIMAL_SERVER

노드 템플릿에서 노드 그룹 만들기

이전에 만든 노드 템플릿에서 노드 그룹을 만들고 VM 유지보수 정책을 지정합니다.

gcloud

gcloud beta compute sole-tenancy node-groups create group-name  --node-template template-name  --target-size group-size  --zone zone  --maintenance-policy maintenance-policy

다음을 바꿉니다.

  • group-name: 만들려는 노드 그룹의 이름입니다.
  • template-name: 노드 그룹을 만들 노드 템플릿의 이름입니다.
  • group-size: 노드 그룹의 초기 크기입니다.
  • zone: 노드 그룹을 만들 영역입니다.
  • maintenance-policy: 노드 그룹의 유지보수 정책입니다. 다음 중 하나로 설정합니다.
    • migrate-within-node-group
    • restart-in-place
    • default

API

POST https://www.googleapis.com/compute/beta/projects/project-id/zones/zone/nodeGroups?initialNodeCount=target-size

{
  "nodeTemplate": "/regions/region/nodeTemplates/template-name",
  "name": "group-name",
  "maintenancePolicy": "maintenance-policy"
}

다음을 바꿉니다.

  • project-id: 노드 그룹을 만들 프로젝트의 ID입니다.
  • zone: 노드 그룹을 만들 영역입니다. 사용 중인 노드 템플릿과 동일한 리전에 있어야 합니다.
  • target-size: 그룹에서 만들려는 노드 수입니다.
  • region: 노드 템플릿이 있는 리전입니다.
  • template-name: 이 그룹을 만드는 데 사용할 노드 템플릿의 이름입니다.
  • group-name: 새 노드 그룹의 이름입니다.
  • maintenance-policy: 노드 그룹의 유지보수 정책입니다. 다음 중 하나로 설정합니다.
    • MIGRATE_WITHIN_NODE_GROUP
    • RESTART_IN_PLACE
    • DEFAULT

노드 그룹에 VM 프로비저닝하기

노드 그룹에서 VM을 프로비저닝하고 VM의 재시작 동작을 지정합니다. 이전에 노드 그룹에서 유지보수 이벤트 중에 동일한 노드 그룹 내에서 호스트 VM을 다시 시작하도록 지정한 경우 해당 노드 그룹에서 새 VM 인스턴스를 만들 때 새 VM이 다음 중 하나를 수행하도록 지정합니다.

  • 유지보수 이벤트로 인해 다시 시작한 후 이전합니다.
  • 동일한 호스트에서 종료했다가 다시 시작합니다. 동일한 호스트를 사용할 수 없는 경우 새 서버가 프로비저닝되고 이전 호스트의 물리적 ID가 재사용되지 않습니다.

gcloud

gcloud compute instances create vm-name  --custom-cpu num-cpus  --custom-memory gb-memory  --image image-name  --zone zone  --node-group group-name  restart-behavior  --maintenance-policy maintenance-policy

다음을 바꿉니다.

  • vm-name: 만들려는 VM의 이름입니다.
  • num-cpus: 새 VM의 CPU 수입니다.
  • gb-memory: 새 VM의 메모리 양(GB)입니다.
  • image-name: 이 VM을 만들 이미지의 이름입니다.
  • zone: VM을 만들 영역입니다.
  • group-name: VM을 프로비저닝할 노드 그룹의 이름입니다.
  • restart-behavior: 이 VM의 다시 시작 동작입니다. 다음 중 하나를 지정합니다.
    • --restart-on-failure
    • --no-restart-on-failure
  • maintenance-policy: 유지보수 이벤트 중의 VM 동작입니다. 시나리오에 따라 다음 중 하나를 지정합니다.
    • MIGRATE
    • TERMINATE

API

POST https://www.googleapis.com/compute/v1/projects/project-id/zones/vm-zone/instances

{
  "machineType": "/zones/machine-type-zone/machineTypes/custom-num-cpus-mb-memory",
  "name": "vm-name",
  "scheduling": {
    "nodeAffinities": [
      {
        "key": "node-group",
        "operator": "IN",
        "values": [
        "group-name"
        ]
      }
    ],
    "onHostMaintenance": "maintenance-policy",
    "automaticRestart": "restart-behavior"
  },
  "networkInterfaces": [
    {
     "network": "/global/networks/network",
     "subnetwork": "/regions/region/subnetworks/subnetwork"
    }
  ],
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "/projects/image-project/global/images/family/image-family"
       }
    }
  ]
}

다음을 바꿉니다.

  • project-id: VM을 만들 프로젝트의 ID입니다.
  • vm-zone: VM을 만들 영역입니다.
  • machine-type-zone: 머신 유형을 포함하는 영역입니다.
  • num-cpus: 새 VM의 CPU 수입니다.
  • mb-memory: 새 VM의 메모리 양(MB)입니다.
  • vm-name: 새 VM의 이름입니다.
  • group-name: 이 VM을 만들 노드 그룹의 이름입니다.
  • maintenance-policy: 이 VM의 유지보수 동작입니다. 시나리오에 따라 다음 중 하나로 설정합니다.
    • MIGRATE
    • TERMINATE
  • restart-behavior: 이 VM의 다시 시작 동작입니다. 기본값은 true입니다.
  • network: VM을 연결할 네트워크의 이름입니다.
  • subnetwork: VM을 연결할 서브네트워크의 이름입니다.
  • image-project: 소스 이미지가 포함된 이미지 프로젝트입니다.
  • image-family: 소스 이미지의 이미지 계열입니다.

다음 단계