お客様所有ライセンスの使用


このドキュメントでは、Compute Engine での専用のハードウェア要件があるお客様所有ライセンスの使用(BYOL: Bring Your Own License)を Google Cloud がサポートする仕組みについて説明します。既存のライセンスを含むイメージを Google Cloud に移行する前に、ライセンスの利用規約をご確認ください。

専用のハードウェア要件を持つ既存の物理コアまたは物理プロセッサのライセンスを使用するには、お客様所有のメディアを移行し、ライセンスを遵守する単一テナントノードなどのハードウェア構成でそのメディアを実行する必要があります。既存のライセンスを含むイメージは、単一テナントノードをサポートするリージョンに移行できます。既存のライセンスを使用する場合、追加料金はかからないものの、契約に基づいてライセンスに対して支払う必要があります。

RHEL や SLES の Linux BYOS、Microsoft アプリケーションに関連するライセンスなどのライセンス シナリオでは、単一テナントノードは必要ありません。SharePoint Server や SQL Server などの Microsoft アプリケーションからライセンスを移行する場合は、Microsoft ライセンス モビリティを使用します。

単一テナントノードは、お客様の専用の物理サーバーで、お客様のプロジェクトの仮想マシン(VM)インスタンスのみをホスティングします。単一テナントノードは、物理サーバーとコアの数を最小限に抑えるなど、さまざまなワークロード要件を満たすように構成できます。使用許諾契約をご確認のうえ、お客様のワークロードに最適な構成オプションを選択してください。

お客様所有ライセンスの使用をサポートし、ライセンスに関連するコンプライアンス要件を管理するために、Google Cloud では、イメージのインポート、専用ハードウェア(単一テナントノード)での VM の管理、物理コアの使用量の最小化、レポート用の物理コアの使用状況の追跡を目的としたツールが用意されています。

既存のライセンスを持つイメージを Google Cloud に移行するには、次の操作を行います。

  1. ライセンス契約に従ってイメージを準備する。

  2. ライセンスを有効にする。

  3. 仮想ディスク ファイルをインポートし、それらのディスク ファイルからイメージを作成する。

  4. 単一テナントノード テンプレートを作成する。

  5. ノード テンプレートから単一テナントノード グループを作成する。

  6. インポートした仮想ディスク ファイルを使用して、ノードグループ内の VM をプロビジョニングする。

  7. VM のライセンス使用状況を追跡する。ライセンスの使用状況の報告に役立つツールとして、Google はライセンスの使用状況と物理コアおよびプロセッサの使用状況の両方を追跡できるツールを提供しています。

  8. ライセンスの使用状況をベンダーに報告する。

ライセンスに関してサポートが必要な場合やご質問がある場合は、ライセンスの販売元にお問い合わせください。既存のライセンスを含むイメージを Google Cloud に移行する方法についてサポートが必要な場合、またはご不明な点がある場合は、Google Cloud サポートにお問い合わせください。

準備

  • ノードグループのホスト メンテナンス ポリシーを確認する: BYOL の場合、ライセンスに使用する物理サーバーの数を最小限に抑えるための 2 つのホスト メンテナンス ポリシー用オプションがあります。これらのオプションは restart-in-placemigrate-within-node-group です。
  • 追加の CPU 割り当てをリクエストする: 新しいプロジェクトは 72 基の CPU 割り当てを受けられます。ノードグループをサポートするのに十分な CPU 割り当てがあることを確認します。たとえば、n1-node-96-624 ノードタイプには 96 基の CPU が含まれており、ノードグループでノードの最小数(2)を使用する場合、CPU 割り当ては 192 以上でなければなりません。設定とワークロードのニーズによっては、VM または IP アドレスの割り当て調整をリクエストする必要があります。
  • Cloud Build API を有効にする: OS イメージをインポートするには、Cloud Build API を有効にする必要があります。この API を有効にすると、Compute Engine がプロジェクトに適切な IAM ロールを付与し、プロジェクトにイメージをインポートできるようになります。プロジェクトに付与されているロールを一覧取得するには、gcloud projects get-iam-policy コマンドを使用します。プロジェクトにロールを付与する方法については、Compute Engine リソースへのアクセスの管理をご覧ください。
  • Cloud Logging API を有効にする: ライセンス契約で物理サーバーの使用状況を追跡する必要がある場合は、この API を有効にします。この API を有効にして、BigQuery を使用し、物理コア数などのサーバー使用状況に関する情報をインポートして表示することを強くおすすめします。物理コアの数を確認する方法については、単一テナントノードの使用状況の分析をご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、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 をプロビジョニングするには、お客様所有のメディアを使用する必要があります。プレミアム イメージに基づいたイメージは BYOL の対象ではありません。これは、プレミアム イメージには Google による従量課金制ライセンスが必要なためです。プレミアム イメージの詳細については、オペレーティング システムの詳細をご覧ください。

オンプレミス環境に、必要なカスタマイズ(ソフトウェア構成、ライセンスなど)が行われた仮想ディスク(ゴールデン ディスクまたはゴールデン イメージ)がある場合、仮想ディスクのインポート ツールを使用すると、次のことができます。

  1. カスタマイズした仮想ディスクをサポートされているオペレーティング システムでインポートし、それらのディスクに基づいてイメージを作成する。

  2. 適切なライセンス構成を行う。

  3. Google Cloud との互換性に必要なパッケージとドライバをインストールする。

VM の仮想ディスク ファイルをインポートする前に、VM 内から事前チェックツールをダウンロードして、実行し、ファイルに互換性の問題がないことを確認します。また、サードパーティのソフトウェアは Compute Engine ドライバのインストールと干渉する可能性があるため、イメージをインポートする前にサードパーティ ソフトウェアを削除することをおすすめします。

独自のライセンスで VM を起動するには、使用する OS で仮想ディスクをインポートします。Cloud Storage バケットとローカル ワークステーションから仮想ディスクをインポートできます。ローカル ワークステーションから仮想ディスク ファイルをインポートする際に、イメージ インポート ツールはイメージ ファイルを Cloud Storage にアップロードし、必要であれば新しい Cloud Storage バケットを作成します。次に、インポート ツールでファイルが Compute Engine にコピーされ、起動可能なイメージが仮想ディスク ファイルから作成されます。

Cloud Storage に保存されているファイルと Compute Engine のイメージには料金が発生します。イメージがインポートされ、VM として正常に起動することを確認したら、Cloud Storage から仮想ディスク ファイルを削除できます。

Console

  1. [イメージ] ページに移動します。

    [イメージ] に移動

  2. [イメージを作成] をクリックします。

  3. イメージの名前を指定します。

  4. [ソース] で、[仮想ディスク(VMDK、VHD)] を選択します。

  5. [Cloud Storage ファイル] で [参照] を選択し、インポートするイメージの Cloud Storage のロケーションを参照します。

  6. [仮想ディスクのオペレーティング システム] で、インポートするイメージのオペレーティング システムを選択します。

  7. 起動可能なイメージをインポートするために、[ゲスト パッケージをインストールする] が選択されていることを確認します。

  8. ライセンスキーのオプションを展開します。[OS ライセンス] で [所有ライセンスキーを使用する] を選択します。

  9. [作成] をクリックしてイメージをインポートします。

gcloud

gcloud compute images import を実行して仮想ディスク ファイルをインポートし、仮想ディスク ファイルからディスク イメージを作成します。

gcloud compute images import IMAGE_NAME \
    --source-file VMDK_NAME \
    --byol

次のように置き換えます。

  • IMAGE_NAME: 仮想ディスク ファイルから作成されたイメージに付ける名前。
  • VMDK_NAME: イメージのインポートと作成を行う仮想ディスクの名前。VMDK ファイルは次の場所からインポートできます。

    • ローカル ファイル: ローカル ファイルからインポートする場合は、ファイルへの絶対パスまたは相対パスを使用します。仮想ディスクのサイズとネットワーク接続の速度によっては、アップロードに数十分かかることがあります。
    • Cloud Storage: Cloud Storage からインポートする場合、Cloud Storage バケットが、仮想データのインポートに使用するプロジェクトに存在する必要があります。また、ディスクにアクセスするため、ファイルのフルパスを gs://BUCKET_NAME/OBJECT_NAME として指定する必要があります。BUCKET_NAME は Cloud Storage バケットの名前に置き換え、OBJECT_NAME は Cloud Storage オブジェクトの名前に置き換えます。

ライセンスの有効化

互換性のある OS をインポートしていることを確認したら、お客様所有のライセンスの使用や、Google が提供するゲスト OS イメージとライセンス インポート環境の使用が許可されていることを、ライセンス契約で確認する必要があります。また、ライセンス契約に沿って、ゲスト OS イメージをインポートする準備を行う必要があります。

ライセンスを有効にするには、起動スクリプトを複数のアクティベーション キー(MAK)とともに使用するか、組織の Microsoft Key Management Service へのアクセスを構成します。Compute Engine のライセンス サーバーに対して、既存のライセンスを持つイメージを有効にすることはできません。

イメージをインポートしてライセンスを有効にしたら、インポートしたイメージに基づいて単一テナントノードに VM をプロビジョニングします。

単一テナントノード テンプレートを作成する

イメージをインポートしたら、単一テナントノード テンプレートを作成します。このノード テンプレートを使用して、イメージを実行する単一テナントノード グループを作成します。

ノード テンプレートのページには、テンプレートのリージョンとゾーンは表示されませんが、ノード テンプレートを作成したリージョン内のゾーンにノードグループを作成する必要があります。テンプレートを作成するには、最初にノードグループを作成する必要がありますが、必要な操作はリージョンとゾーンの選択だけです。その後、テンプレートを作成できます。必要であれば、ノードグループの作成を終了することもできます。

テンプレートの作成時に、単一テナントノードのテンプレートでノード アフィニティ ラベルを設定します。

Console

  1. [単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループを作成] をクリックします。

  3. ノードグループの名前を入力します。

  4. ノードグループのリージョンゾーンを選択します。

    使用したリージョンとゾーンをメモします。後でこのノード テンプレートからノードグループを作成するときに、ノードグループがノード テンプレートを作成したリージョン内のゾーンに存在している必要があります。

  5. [ノード テンプレートのプロパティ] で [ノード テンプレートを作成] を選択します。

  6. [ノード テンプレートの作成] ダイアログで、名前ノードタイプローカル SSDGPU アクセラレータを指定します。

  7. [CPU のオーバーコミット] で、CPU のオーバーコミットを有効にするかどうかを選択します。

  8. 省略可: [アフィニティのラベル] で [アフィニティ ラベルを追加] をクリックし、Key-Value ペアをノードのアフィニティ ラベルとして追加します。

  9. [作成] をクリックして、ノード テンプレートの作成を完了します。

  10. ノードグループの作成を取り消すには、[キャンセル] をクリックします。

gcloud

gcloud compute sole-tenancy node-templates create を使用して、単一テナントノード テンプレートを作成します。

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type NODE_TYPE \
    --region REGION

次のように置き換えます。

  • TEMPLATE_NAME: 作成するノード テンプレートの名前。
  • NODE_TYPE: ノードグループ内のノードの単一テナントノードのタイプ。ノードグループ内のノードはすべて同一で、ノード テンプレートで指定したパラメータから作成されます。
  • REGION: ノード テンプレートを作成するリージョン。

REST

nodeTemplates.insert を使用して、単一テナントノード テンプレートを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/nodeTemplates

{
   "name": "TEMPLATE_NAME",
   "nodeType": "NODE_TYPE"
   "nodeAffinityLabels": {
      "KEY": "VALUE"
   }
}

次のように置き換えます。

  • PROJECT_ID: プロジェクトの ID。
  • REGION: ノード テンプレートを作成するリージョン。
  • TEMPLATE_NAME: 作成するノード テンプレートの名前。
  • NODE_TYPE: ノードグループ内のノードの単一テナントノードのタイプ。ノードグループ内のノードはすべて同一で、ノード テンプレートで指定したパラメータから作成されます。
  • "KEY": "VALUE": Key-Value ペアとして表示されるアフィニティ ラベルのカンマ区切りのリスト。ノード テンプレートの作成時には、そのノード テンプレートにのみアフィニティ ラベルを指定できます。

単一テナントノード グループを作成する

ノード テンプレートからノードグループを作成するには、ノード テンプレートがノード テンプレートを作成したリージョン内のゾーンに存在する必要があります。単一テナントノード グループは、単一テナントノード テンプレートで指定されたプロパティを継承します。単一テナントノード グループには、指定しなければならない追加の値があります。BYOL の場合は、ライセンス要件に応じて次のホスト メンテナンス ポリシーを検討してください。

  • 物理コアごとにライセンスを割り当てる場合は、restart-in-place または migrate-within-node-group ホスト メンテナンス ポリシーを使用して、使用する物理サーバーの数を最小限に抑えます。
  • ライセンスがユーザーまたはデバイス(通常は仮想デスクトップ ライセンスに使用されるモデル)に基づいて割り当てられる場合は、default ホスト メンテナンス ポリシーを使用します。これらのライセンスは物理コアごとに割り当てられないため、物理サーバーの使用を制限するために特別なホスト メンテナンス ポリシーは必要ありません。

Console

  1. [単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループを作成] をクリックします。

  3. [ノードグループのプロパティ] に、ノードグループの名前を入力します。

  4. ノードグループのリージョンゾーンを選択します。

    そのリージョンまたはゾーンで利用可能なテンプレートがある場合、[続行] をクリックすると、[ノード テンプレートのプロパティ] にテンプレートのリストが表示されます。

  5. [続行] をクリックします。

  6. [ノード テンプレートのプロパティ] で、ノードグループの基にするノード テンプレートを選択します。ノードグループは、ノード テンプレートを作成したリージョン内のゾーンに存在する必要があるため、ノードグループのテンプレートを選択する場合は、ノードグループを作成するゾーンを含むリージョンからテンプレートを選択します。ノード テンプレートが存在しない場合は、テンプレートを作成できます。

  7. [続行] をクリックします。

  8. [自動スケーリングを構成] で、[自動スケーリング モード] を次のいずれかの値に設定します。詳細については、ノードグループの自動スケーリングをご覧ください。

    • オン: ノードグループに対するノードの追加または削除を自動的に行います。
    • スケールアウトのみ: 追加の容量が必要な場合に、ノードグループにノードを追加します。
    • オフ: ノードグループのサイズを手動で管理します。
  9. ノードグループの最小ノード数を指定します。ノードグループ オートスケーラーを有効にする場合は、ノードグループのサイズの範囲(ノードの最小数と最大数)を指定するか、グループのノード数を指定します。どちらの値も、後から手動で変更できます。

  10. [続行] をクリックします。

  11. 省略可: [メンテナンス設定の構成] で、[メンテナンス ポリシー] に次のいずれかの値を設定します。メンテナンス ポリシーを使用すると、ホスト メンテナンス イベント中のノードグループ上の VM の動作を構成できます。詳細については、ホスト メンテナンス ポリシーをご覧ください。

    • デフォルト
    • 再起動
    • ノードグループ内で移行
  12. [作成] をクリックします。

gcloud

gcloud compute sole-tenancy node-groups create コマンドを使用して、単一テナントノード グループを作成します。

gcloud 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: ノードグループのメンテナンス ポリシー。メンテナンス ポリシーに次のいずれかの値を設定します。値が設定されていない場合、メンテナンス ポリシーに default が使用されます。

    • default
    • migrate-within-node-group
    • restart-in-place

REST

nodeGroups.insert を使用して、単一テナントノード グループを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/nodeGroups?initialNodeCount=GROUP_SIZE

{
  "nodeTemplate": "/regions/REGION/nodeTemplates/TEMPLATE_NAME",
  "name": "GROUP_NAME",
  "maintenancePolicy": "MAINTENANCE_POLICY"
}

次のように置き換えます。

  • PROJECT_ID: ノードグループを作成するプロジェクトの ID。
  • ZONE: ノードグループを作成するゾーン。ノード テンプレートと同じリージョンに存在する必要があります。
  • GROUP_SIZE: ノードグループの初期サイズ。ノードグループ オートスケーラーでは、単一テナントノードのサイズが自動的に管理されます。サイズを手動で管理することもできます。
  • REGION: ノード テンプレートを含むリージョン。
  • TEMPLATE_NAME: ノードグループの作成に使用するノード テンプレートの名前。
  • GROUP_NAME: 作成する単一テナントノード グループの名前。
  • MAINTENANCE_POLICY: ノードグループのメンテナンス ポリシー。メンテナンス ポリシーに次のいずれかの値を設定します。値が設定されていない場合、メンテナンス ポリシーに DEFAULT が使用されます。

    • DEFAULT
    • RESTART_IN_PLACE
    • MIGRATE_WITHIN_NODE_GROUP

単一テナント VM のプロビジョニング

ノードグループの VM をプロビジョニングし、ホスト メンテナンス ポリシーに設定します。次の要件に注意してください。

  • restart-in-place ホストメンテナンス ポリシーを使用してノードグループにプロビジョニングするには、VM がホスト メンテナンス オプションで TERMINATE 値になっていることを確認します。
  • migrate-within-node-group メンテナンス ポリシーを使用してノードグループにプロビジョニングするには、VM が node-group-name アフィニティ ラベルの単一ノードグループをターゲットとし、VM が node-name アフィニティ ラベルの単一ノードグループをターゲットとしないことを確認します。どのタイプのホスト メンテナンス オプションも有効ですが、MIGRATE を使用することをおすすめします。

Console

テンプレートでノード アフィニティ ラベルを使用した場合は、マネージド インスタンス グループ(MIG)を使用して、[単一テナントノード] でノードのアフィニティ ラベルを指定し、複数の VM を作成できます。また、ノードグループの詳細ページから個々の VM を作成することもできます。

  1. [単一テナントノード] ページに移動します。

    [単一テナントノード] ページに移動

  2. VM をプロビジョニングするノードグループの名前をクリックします。

  3. 次のいずれかの方法で、単一テナントノードに VM を作成します。

    • 単一テナントノード グループ内の任意の場所に VM を作成するには、[インスタンスを作成] をクリックします。
    • 特定の単一テナントノードに VM を作成するには、単一テナントノード グループの [名前] > 単一テナントノードの [名前] > [インスタンスを作成] の順にクリックします。
  4. 単一テナント VM を構成します。ノードグループまたは特定のノードを選択しているため、リージョンゾーンノードのアフィニティ ラベル はテンプレートで指定されている値になります。

  5. [マシン ファミリー]、[シリーズ]、[マシンタイプ] を指定して、[マシンの構成] を選択します。単一テナントノードのタイプに対応する [シリーズ] を選択します。

  6. 以前にインポートした仮想ディスク イメージである、単一テナント VM のブートディスクを選択します。

  7. [管理] タブを選択します。

    • [可用性ポリシー] > [ホスト メンテナンス時] で、VM の再起動動作を選択します。
    • [自動再起動] で [オン(推奨)] または [オフ] を選択します。
  8. [作成] をクリックします。

gcloud

gcloud compute instances create コマンドを使用して、単一テナントノード グループに単一テナント VM をプロビジョニングします。

gcloud compute instances create VM_NAME \
    --machine-type MACHINE_TYPE
    --image IMAGE_NAME \
    --zone ZONE \
    --node-group GROUP_NAME \
    RESTART_BEHAVIOR \
    --maintenance-policy MAINTENANCE_POLICY

次のように置き換えます。

  • VM_NAME: 作成する VM の名前。
  • MACHINE_TYPE: 新しい VM のマシンタイプ。
  • IMAGE_NAME: VM 作成に使用するイメージ。これはインポート プロセス中に作成されるイメージです。
  • ZONE: VM を作成するゾーン。
  • GROUP_NAME: VM をプロビジョニングするノードグループの名前。
  • RESTART_BEHAVIOR: この VM の再起動動作。再起動動作として次のいずれかの値を設定します。

    • --restart-on-failure
    • --no-restart-on-failure
  • MAINTENANCE_POLICY: メンテナンス イベント中の VM の動作。メンテナンス ポリシーに次のいずれかの値を設定します。

    • MIGRATE
    • TERMINATE

REST

instances.insert メソッドを使用して、単一テナントノード グループに単一テナント VM をプロビジョニングします。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "/zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "scheduling": {
    "nodeAffinities": [
      {
        "key": "node-group",
        "operator": "IN",
        "values": [
        "GROUP_NAME"
        ]
      }
    ],
    "onHostMaintenance": "MAINTENANCE_POLICY",
    "automaticRestart": "AUTOMATIC_RESTART"
  },
  "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 を作成するゾーン。
  • VM_NAME: 新しい VM の名前。
  • MACHINE_TYPE_ZONE: マシンタイプを含むゾーン。
  • MACHINE_TYPE: VM をプロビジョニングするマシンタイプ。
  • GROUP_NAME: VM をプロビジョニングするノードグループの名前。
  • MAINTENANCE_POLICY: メンテナンス イベント中の VM の動作。MIGRATE または TERMINATE に設定します。
  • AUTOMATIC_RESTART: Compute Engine が VM を停止したときに VM を自動的に再起動するかどうかを指定します。デフォルト値は true です。
  • NETWORK: VM を接続するネットワークの名前。
  • SUBNETWORK: VM を接続するサブネットワークの名前。
  • IMAGE_PROJECT: ソースイメージを含むイメージ プロジェクト。
  • IMAGE_FAMILY: ソースイメージのイメージ ファミリー。

次のステップ