Eigene Lizenz mit Knoten für einzelne Mandanten verwenden

Compute Engine bietet die Option "Bring Your Own License" (BYOL). Damit können Sie Ihre eigene Lizenz mit Knoten für einzelne Mandanten verwenden, um Lizenzanforderungen zu erfüllen, die die Nutzung physischer Hardware einschränken. Insbesondere können Sie mithilfe von Knoten für einzelne Mandanten ein benutzerdefiniertes Image in Compute Engine importieren, das Image zum Starten einer VM verwenden und direkte Neustarts aktivieren, sodass die VM wann immer möglich auf demselben physischen Server neu gestartet wird. Durch das Hosten Ihrer VMs auf Knoten für einzelne Mandanten sorgen Sie dafür, dass Ihre VMs auf Hardware ausgeführt werden, die ausschließlich Sie nutzen, und die Nutzung physischer Kerne gleichzeitig begrenzt wird. Compute Engine bietet außerdem Berichte zur Servernutzung, sodass Sie Informationen zur physischen Hardware im Hinblick auf die Lizenznutzung im Auge behalten können.

Einen Überblick über dieses Feature, einschließlich Anforderungen und Überlegungen zu Arbeitslasten, erhalten Sie auf der Übersichtsseite.

Vorbereitung

Unterstützte Betriebssysteme und Lizenzanforderungen prüfen

Prüfen Sie zuerst, ob Ihr Betriebssystem kompatibel ist, und lesen Sie den Abschnitt Lizenzierung und Aktivierung. Sie müssen darauf achten, dass Ihre Lizenzvereinbarungen die Verwendung von Software in der BYOL-Umgebung wie in dieser Dokumentation beschrieben zulassen. Außerdem müssen Sie Ihr Gast-Image gemäß Ihren Vereinbarungen für BYOL vorbereiten.

Wenn Sie Fragen haben oder weitere Unterstützung benötigen, wenden Sie sich an Ihren Lizenzierungs-Reseller (Fragen zur Lizenzierung) und den Google Cloud-Support (Fragen zu diesem Feature).

Unterstützte Regionen prüfen

Dieses Feature ist nur in bestimmten Regionen verfügbar. Eine vollständige Liste finden Sie unter Preise und Verfügbarkeit.

Arbeitslast prüfen

Bestimmte Arbeitslasten sind für dieses Feature besser geeignet als andere. Lesen Sie dazu die allgemeinen Empfehlungen unter Überlegungen zu Arbeitslasten.

Neues Projekt erstellen und Kontingent anfordern

Wenn Sie noch kein Projekt haben, erstellen Sie ein neues Projekt.

Das CPU-Kontingent für neue Projekte ist auf 100 CPUs beschränkt. Unter Umständen reicht dies für Ihre Anforderungen nicht aus. Wenn Sie ein größeres Kontingent für Ihr Projekt benötigen, können Sie in der Cloud Console über die Seite "Kontingente" eine Kontingentanpassung anfordern. Abhängig von der Konfiguration sind unter Umständen auch für andere Ressourcen wie IP-Adressen Kontingenterhöhungen erforderlich.

Cloud Build API aktivieren

Dieses Feature verwendet den Cloud Build-Dienst zum Importieren und Erstellen von Compute Engine-Images. Sie müssen daher die Cloud Build API aktivieren, damit Sie das Feature nutzen können.

Cloud Build API aufrufen

Compute Engine weist dem Cloud Build-Dienstkonto außerdem die folgenden Rollen zu, damit Images in Compute Engine importiert werden können:

  • roles/iam.serviceAccountTokenCreator
  • roles/compute.admin
  • roles/iam.serviceAccountUser

Stackdriver Logging für Audit-Logging aktivieren

Wenn Berichte über die Nutzung von physischen Servern für die Lizenzierung benötigt werden, aktivieren Sie die Stackdriver Logging API, bevor Sie VMs auf Knoten für einzelne Mandanten starten. Auf diese Weise können Sie Informationen zur Servernutzung mit BigQuery importieren und ansehen (dringend empfohlen).

Stackdriver Logging-API aktivieren

Wenn Sie Logging einrichten, können Sie auf BigQuery zurückgreifen, um relevante Informationen wie die Anzahl der genutzten physischen Kerne im Hinblick auf Ihre Lizenzierungsanforderungen zu erfassen. Weitere Informationen finden Sie unter Servernutzung ermitteln.

Virtuelle Laufwerksdatei erstellen

Zum Importieren des Images in Compute Engine muss eine virtuelle Laufwerksdatei (VMDK, VHD) vorhanden sein. Sie können ein Betriebssystem auf einer VM über ein Installations-Image wie iso, img, DVD, USB usw. nicht direkt installieren. Ein direktes Betriebssystem-Upgrade auf einer Compute Engine-VM ist ebenfalls nicht möglich.

Die Schritte zum Erstellen einer virtuellen Laufwerksdatei unterscheiden sich je nach Umgebung. Informationen finden Sie in der entsprechenden Dokumentation für Ihr Betriebssystem.

Virtuelle Laufwerksdatei importieren

Damit Sie eine VM mit Ihrer eigenen Lizenz starten können, müssen Sie ein virtuelles Laufwerk mit dem von Ihnen gewünschten Betriebssystem importieren. Verwenden Sie das gcloud-Befehlszeilentool, um die entsprechende Datei zu importieren. Das gcloud-Tool unterstützt den Import von VHD- oder VMDK-Dateien aus einem Cloud Storage-Bucket oder von einer lokalen Workstation. Wenn das virtuelle Laufwerk auf Ihrem lokalen Computer gehostet wird, lädt der Importprozess die Datei zuerst in einen Cloud Storage-Bucket hoch, bevor das Image in Compute Engine importiert wird.

Laden Sie vor dem Import des Laufwerks Ihrer virtuellen Maschine unser Precheck-Tool auf der virtuellen Maschine herunter und führen Sie es dort aus. Dieses Precheck-Tool verifiziert, dass es bei der Migration zu Google Cloud zu keinen Inkompatibilitäten kommt.

Eine umfassende Beschreibung des Tools zum Importieren von Images finden Sie unter Virtuelle Laufwerke importieren.

Führen Sie danach den folgenden gcloud-Befehl aus, um das virtuelle Laufwerk zu importieren:

gcloud compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --os [OS]

Dabei gilt:

  • [IMAGE_NAME] ist der Name für dieses Image.
  • [SOURCE_FILE] ist eine virtuelle Laufwerksdatei, die entweder lokal gehostet oder in Cloud Storage gespeichert ist. Wenn das virtuelle Laufwerk eine lokale Datei ist, können Sie einen absoluten oder relativen Pfad verwenden. Ist die virtuelle Laufwerksdatei bereits in Cloud Storage gespeichert, muss sie sich in einem Storage-Bucket in dem Projekt befinden, das für den Importprozess verwendet wird. Außerdem müssen Sie den vollständigen Pfad der Datei im Format gs://[BUCKET_NAME]/[OBJECT_NAME] angeben.

  • [OS] ist das Windows-Betriebssystem von SOURCE_FILE. Die folgenden Windows-Betriebssysteme werden unterstützt:

    • windows-2008r2-byol
    • windows-2012-byol
    • windows-2012r2-byol
    • windows-2016-byol
    • windows-2019-byol
    • windows-7-byol
    • windows-8-1-x64-byol
    • windows-10-byol

Beachten Sie, dass in Cloud Storage gespeicherte Dateien und in Compute Engine gespeicherte Images kostenpflichtig sind. Nachdem Sie bestätigt haben, dass das Image korrekt importiert wurde und ordnungsgemäß als Compute Engine-Instanz bootet, können Sie die virtuelle Laufwerksdatei aus Cloud Storage löschen.

Wenn für --source-file eine lokale Datei angegeben ist, kann der Uploadvorgang abhängig von der Größe des virtuellen Laufwerks und der Geschwindigkeit der Netzwerkverbindung mehrere Minuten dauern.

Nachdem das Image erstellt wurde, können Sie es an Nutzer außerhalb Ihres Projekts oder Ihrer Organisation über IAM-Rollen oder -Berechtigungen freigeben.

gcloud projects add-iam-policy-binding [PROJECT_ID] \
    --member user:[USER_EMAIL] \
    --role roles/compute.imageUser

In diesem Fall ist [PROJECT_ID] das Projekt, zu dem das Image gehört, für das Sie Zugriff gewähren möchten.

Anschließend können Nutzer auf dieses Image zugreifen. Dazu geben sie die ID des Projekts, in dem sich das Image befindet, in der Anfrage an. Beispiel:

gcloud compute instances create my-vm \
    --custom-cpu 4 \
    --custom-memory 8 \
    --image https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[IMAGE_NAME] \
    --zone us-central1-a \
    --node-affinity-file node-affinity-prod.json \
    --restart-on-failure \
    --maintenance-policy terminate

VM-Instanz mit eigener Lizenz starten

Nachdem ein Image importiert wurde, können Sie eine VM-Instanz auf einem Knoten für einen einzelnen Mandanten mithilfe des importierten Images starten und das Feature für direkte Neustarts aktivieren. Dafür geben Sie das Attribut restart-node-on-minimal-servers an. Dieses Attribut sorgt dafür, dass die VM bei einem Wartungsereignis auf demselben physischen Server neu gestartet wird, sofern dies möglich ist. Wenn derselbe physische Server nicht verfügbar ist, wird ein neuer physischer Server erstellt und in die Knotengruppe aufgenommen. Compute Engine meldet dann die Server-ID des neuen Servers.

Für BYOL-Arbeitslasten, bei denen die Nutzung von physischen Kernen oder Sockets gemäß den Lizenzierungs- und Produktbedingungen keine Rolle spielt, können Sie Knoten für einzelne Mandanten auch ohne das Feature für einen direkten Neustart verwenden. Dadurch werden Ihre VM-Instanzen auf dedizierter Hardware ausgeführt, ohne dass die Anzahl der verwendeten zugrunde liegenden physischen Server minimiert wird.

Führen Sie zum Starten der VM-Instanz die folgenden Schritte aus, die weiter unten ausführlich beschrieben werden:

  1. Erstellen Sie eine Knotenvorlage und aktivieren Sie bei Bedarf direkte Neustarts über die Google Cloud Console, das gcloud-Befehlszeilentool oder die API.

  2. Erstellen Sie eine Knotengruppe mit der neuen Vorlage.

  3. Erstellen Sie abschließend in der Knotengruppe die VMs mit Ihrem importierten Image.

Sind VMs einmal für einen Knoten geplant, behalten sie über Neustarts und Wartungsereignisse hinweg dieselben physischen Affinitätslabels bei. Dies bedeutet, dass sich zwar der zugrunde liegende physische Server ändern kann, Sie aber mithilfe von Labelselektoren dafür sorgen können, dass bestimmte VMs immer auf demselben oder denselben Knoten ausgeführt werden (mit entsprechender Knotenaffinität) oder aber nie denselben Knoten gemeinsam nutzen (Knoten-Anti-Affinität).

Der Einfachheit halber wird allen Knoten für einzelne Mandanten, die mit der Option restart-node-on-minimal-servers konfiguriert sind, ein dem Knotennamen und Knotengruppennamen ähnliches, zusätzliches Affinitätslabel automatisch hinzugefügt. Sie können dieses Label in Ihre Affinitätsdatei aufnehmen, um dafür zu sorgen, dass Ihre VMs nur auf Knoten mit aktiviertem Feature restart-node-on-minimal-server gestartet werden. Das Label sieht ungefähr so aus:

  • Schlüssel: compute.googleapis.com/node-server-binding-type
  • Wert: restart-node-on-minimal-server

Console

  1. Erstellen Sie eine Knotenvorlage mit der Neustartoption "Mindestanzahl von Servern".

    1. Rufen Sie die Seite "Knotenvorlage erstellen" auf.

      Zur Seite "Knotenvorlage erstellen"

    2. Geben Sie einen Namen für die Vorlage ein.
    3. Geben Sie die Region an, in der Sie die Knotengruppe ausführen möchten.
    4. Geben Sie den gewünschten Knotentyp für die Knotengruppen an. Sie können alternativ auch Kleinster verfügbarer Knoten angeben. Dadurch können Knotengruppen mit jedem verfügbaren Knotentyp ausgeführt werden.
    5. Geben Sie bei Bedarf Knotenaffinitätslabels für Ihre Instanzen an. Sie können beispielsweise die Labels workload=front-end und environment=prod angeben.
    6. Maximieren Sie Erweiterte Konfiguration für Knotenneustart.
    7. Wählen Sie Mindestanzahl von Servern aus.
    8. Erstellen Sie die Knotenvorlage.
  2. Stellen Sie eine Knotengruppe mithilfe der Knotenvorlage bereit.

    1. Rufen Sie die Seite "Knotengruppe erstellen" auf.

      Zur Seite "Knotengruppe erstellen"

    2. Geben Sie einen Namen für die Gruppe ein.
    3. Geben Sie die Zone an, in der Sie die Knotengruppe ausführen möchten. Es ist notwendig, dass sich in derselben Region eine Knotenvorlage befindet.
    4. Geben Sie die zu verwendende Knotenvorlage an.
    5. Geben Sie die Anzahl der in der Gruppe auszuführenden Knoten an. Diese Anzahl können Sie später ändern.
    6. Klicken Sie auf Erstellen, um die Erstellung der Knotengruppe abzuschließen.
  3. Erstellen Sie eine Instanz, die in der Knotengruppe oder auf bestimmten Knoten ausgeführt wird. Wenn Sie oben bestimmte Labels für Knotenaffinitäten angegeben haben, können Sie ganz normal eine Instanz erstellen und die Knotenaffinität in den Einstellungen für einzelne Mandanten angeben. Erstellen Sie in diesem Beispiel die Instanzen direkt auf der Detailseite der Knotengruppe.

    1. Rufen Sie dafür die Seite "Knoten für einzelne Mandanten" auf.

      Zur Seite "Knoten für einzelne Mandanten"

    2. Klicken Sie auf den Namen der Knotengruppe, in der Sie eine Instanz erstellen möchten.
    3. Klicken Sie dann auf Instanz erstellen, damit Sie in dieser Knotengruppe eine Instanz erstellen können. Wenn Sie möchten, dass die Instanz auf einem bestimmten Knoten in der Gruppe ausgeführt wird, klicken Sie auf den Namen eines einzelnen Knotens in der Gruppe, um weitere Details zu diesem Knoten aufzurufen. Klicken Sie dann auf Instanz erstellen, damit Sie die Instanz auf dem bestimmten Knoten erstellen können.
    4. Konfigurieren Sie nun die Einstellungen für die Instanz. Da Sie die Knotengruppe bzw. einen bestimmten Knoten bereits ausgewählt haben, sind die Knotenaffinitätslabels für Region, Zone und Standard bereits angegeben.
    5. Wählen Sie den Tab Verwaltung aus.
    6. Wählen Sie unter Verfügbarkeitsrichtlinie > Bei Hostwartung die Option Beenden aus.

    7. Wählen Sie unter Automatischer Neustart die Option An (empfohlen) aus.

    8. Klicken Sie dann auf Erstellen, um die Erstellung der Instanz abzuschließen.

gcloud

  1. Erstellen Sie eine Knotenvorlage und legen Sie das Flag restart-node-on-minimal-servers fest. Wählen Sie bei Bedarf Knotenaffinitätslabels für Ihre Instanzen aus. Beispiel:

    gcloud compute sole-tenancy node-templates create my-node-template \
        --node-type n1-node-96-624 \
        --region us-east1 \
        --node-affinity-labels workload=front-end,environment=prod \
        --server-binding restart-node-on-minimal-servers
    
  2. Stellen Sie eine Knotengruppe mithilfe der Knotenvorlage bereit. Mit dem folgenden Befehl wird beispielsweise eine Gruppe von zwei Instanzen mithilfe der Knotenvorlage erstellt, die Sie im vorherigen Schritt erstellt haben:

     gcloud compute sole-tenancy node-groups create my-node-group \
         --node-template my-node-template \
         --target-size 2 \
         --zone us-east1-b
    
  3. Erstellen Sie eine Knotenaffinitätsdatei, die die entsprechenden Affinitätslabels der Knotengruppe enthält. Damit wird Ihre VM nur auf Knoten erstellt, die all diese Labels enthalten. Beispiel:

     // CREATE AFFINITY LABEL FILE
     cat > node-affinity-prod.json
     [{
       "key" : "workload",
       "operator" : "IN",
       "values" : ["front-end"]
       },
       {
       "key" : "environment",
       "operator" : "IN",
        "values" : ["prod"]
      },
      {
        "key" : "compute.googleapis.com/node-server-binding-type",
        "operator" : "IN",
        "values" : "restart-node-on-minimal-server"
      }]
    
  4. Starten Sie eine VM-Instanz und geben Sie die Affinitätslabeldatei an. Mit der folgenden Anfrage wird beispielsweise eine VM mit 4 CPUs und einem Arbeitsspeicher von 8 GB unter Verwendung des importierten Images in der Zone us-east1-b erstellt. Darüber hinaus werden das Flag --restart-on-failure- und die Wartungsrichtlinie terminate festgelegt. Dies ist derzeit die einzige zulässige Richtlinie für VMs mit eigener Lizenz.

     gcloud compute instances create my-vm \
         --custom-cpu 4 --custom-memory 8 \
         --image my-imported-image \
         --zone us-east1-b \
         --node-affinity-file node-affinity-prod.json \
         --restart-on-failure --maintenance-policy terminate
    

API

  1. Erstellen Sie eine Knotenvorlage und legen Sie das Attribut RESTART_NODE_ON_MINIMAL_SERVERS fest. Wählen Sie außerdem Knotenaffinitätslabels für Ihre Instanzen aus. Beispiel:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/[REGION]/nodeTemplates
    
    {
       "name": "[TEMPLATE_NAME]",
       "nodeType": "[NODE_TYPE]"
       "nodeAffinityLabels": {
          "[KEY]": "[VALUE]"
       },
       "serverBinding":
       {
         "type": "RESTART_NODE_ON_MINIMAL_SERVERS"
       }
    }
    

    Dabei gilt:

    • [PROJECT_ID] ist die Projekt-ID.
    • [TEMPLATE_NAME] ist der Name der neuen Knotenvorlage.
    • [NODE_TYPE] ist der Knotentyp, den Sie für diese Vorlage verwenden möchten. Sie können beispielsweise den Knotentyp n1-node-96-624 angeben, um einen Knoten mit 96 vCPUs und einem Arbeitsspeicher von 624 GB zu erstellen.
    • [KEY]:[VALUE] ist eine durch Kommas getrennte Liste von Affinitätslabels.
    • [REGION] ist die Region, in der diese Vorlage verwendet werden soll.
  2. Nachdem Sie die Knotenvorlage erstellt haben, erstellen Sie eine Knotengruppe. Verwenden Sie die Methode compute.nodeGroups.insert:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/nodeGroups?initialNodeCount=[TARGET_SIZE]
    
    {
     "nodeTemplate": "regions/[REGION]/nodeTemplates/[TEMPLATE_NAME]",
     "name": "[GROUP_NAME]"
    }
    

    Dabei gilt:

    • [PROJECT_ID] ist die Projekt-ID.
    • [ZONE] ist die Zone, in der sich diese Knotengruppe befindet. Diese Zone muss sich in derselben Region befinden wie die von Ihnen verwendete Knotenvorlage.
    • [TARGET_SIZE] ist die Anzahl der Knoten, die Sie in der Gruppe erstellen möchten.
    • [REGION] ist die Region der Knotenvorlage.
    • [TEMPLATE_NAME] ist der Name der neuen Knotenvorlage.
    • [GROUP_NAME] ist der Name der neuen Knotengruppe.
    • [TEMPLATE_NAME] ist der Name der Knotenvorlage, die Sie zum Erstellen dieser Gruppe verwenden möchten.
  3. Nachdem Sie die Knotengruppe erstellt haben, können Sie in der Knotengruppe mit der Methode compute.instances.insert Instanzen erstellen. Geben Sie einen Eintrag nodeAffinities an, der auf den Namen der Knotengruppe verweist. Sie können beispielsweise eine Instanz mit einem benutzerdefinierten Maschinentyp erstellen:

    POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
    
    {
     "machineType": "zones/[ZONE]/machineTypes/custom-[VCPUS]-[MEMORY]",
     "name": "[INSTANCE_NAME]",
     "scheduling": {
      "nodeAffinities": [
       {
        "key": "compute.googleapis.com/node-server-binding-type",
        "operator": "IN",
        "values": [
         "restart-node-on-minimal-server"
        ]
       }
      ]
     },
     "networkInterfaces": [
      {
       "network": "global/networks/[NETWORK]",
       "subnetwork": "regions/[REGION]/subnetworks/[SUBNETWORK]"
      }
     ],
     "disks": [
      {
       "boot": true,
       "initializeParams": {
        "sourceImage": "projects/[IMAGE_PROJECT]/global/images/family/[IMAGE_FAMILY]"
       }
      }
     ]
    }
    

    Dabei gilt:

    • [PROJECT_ID] ist die Projekt-ID.
    • [INSTANCE_NAME] ist der Name der neuen Instanz.
    • [ZONE] ist die Zone, in der sich die Knotengruppe befindet.
    • [REGION] ist die Region der Knotenvorlage und des Subnetzwerks.
    • [IMAGE_FAMILY] ist eine der verfügbaren Image-Familien.
    • [IMAGE_PROJECT] ist das Image-Projekt, zu dem diese Image-Familie gehört.
    • [GROUP_NAME] ist der Name der Knotengruppe, in der diese Instanz erstellt werden soll.
    • [VCPUS] ist die Anzahl der vCPUs, die Sie für diese Instanz verwenden möchten.
    • [MEMORY] ist die Größe des Arbeitsspeichers für die Instanz in MB, beispielsweise 5376MB.
    • [NETWORK] ist der Name des Netzwerks, mit dem Sie die Instanz verbinden möchten.
    • [SUBNETWORK] ist der Name des Subnetzwerks, mit dem Sie die Instanz verbinden möchten.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation