Nicht verwaltete Instanzgruppen erstellen

Eine nicht verwaltete Instanzgruppe ist eine Sammlung virtueller Maschinen (VMs), die sich in einer einzelnen Zone, einem VPC-Netzwerk und einem Subnetz befinden. Eine nicht verwaltete Instanzgruppe ist nützlich zum Gruppieren von VMs, die individuelle Konfigurationseinstellungen oder eine Feinabstimmung erfordern.

Für VMs, die konsistente Konfigurationseinstellungen erfordern, können Sie eine verwaltete Instanzgruppe (Managed Instance Group, MIG) mit einer Instanzvorlage verwenden. Verwenden Sie nach Möglichkeit verwaltete Instanzgruppen statt nicht verwalteter. Informationen zum Erstellen einer verwalteten Instanzgruppe finden Sie unter Verwaltete Instanzgruppen erstellen.

Sie können jeden der Instanzgruppentypen als Back-End zu einem Google Cloud-Load-Balancer hinzufügen. Weitere Informationen finden Sie unter Cloud Load Balancing. Die Anzahl der VMs pro Instanzgruppe, die von Cloud Load Balancing unterstützt wird, finden Sie unter VMs pro Instanzgruppe.

Unter Instanzgruppen finden Sie weitere Informationen dazu.

Vorbereitung

Mit nicht verwalteten Instanzgruppen arbeiten

Gruppen erstellen

Im Unterschied zu verwalteten Instanzgruppen sind nicht verwaltete Instanzgruppen nur Sammlungen einzelner VMs, für die keine gemeinsame Instanzvorlage verwendet wird. Sie erstellen einfach eine Gruppe und fügen dieser einzelne VMs hinzu.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie auf Instanzgruppe erstellen.
  3. Klicken Sie auf Neue nicht verwaltete Instanzgruppe.
  4. Geben Sie einen Namen für die nicht verwaltete Instanzgruppe ein.
  5. Wählen Sie unter Standort eine Region und eine Zone aus.
  6. Wählen Sie ein Netzwerk und ein Subnetzwerk aus.
  7. Wählen Sie unter VM-Instanzen die VMs aus, die dieser Gruppe hinzugefügt werden sollen.
  8. Klicken Sie auf Erstellen.

gcloud

Erstellen Sie eine neue nicht verwaltete Instanzgruppe mit dem Befehl instance-groups unmanaged create:

gcloud compute instance-groups unmanaged create instance-group-name \
    --zone=zone

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, die Sie erstellen möchten.
  • zone: die Zone, in der Sie die Gruppe erstellen möchten.

API

Damit Sie mit der API eine nicht verwaltete Instanzgruppe erstellen können, senden Sie eine POST-Anfrage mit der Methode instanceGroups.insert:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

{
   "name": "instance-group-name"
}

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, die Sie erstellen möchten.
  • zone: die Zone, in der Sie die Gruppe erstellen möchten.
  • project-id: die Projekt-ID für das Projekt mit der Gruppe.

Wenn Sie eine neue nicht verwaltete Instanzgruppe mit dem gcloud-Befehlszeilentool oder der API erstellen, werden der Gruppe keine VMs automatisch hinzugefügt. Sie können VMs manuell zur nicht verwalteten Instanzgruppe hinzufügen.

Gruppen auflisten und beschreiben

Rufen Sie eine Liste vorhandener nicht verwalteter Instanzgruppen ab.

Console

In der Cloud Console werden auf der Seite Instanzgruppen vorhandene nicht verwaltete und verwaltete Instanzgruppen aufgeführt.

Zur Seite "Instanzgruppen"

gcloud

Listen Sie alle nicht verwalteten Instanzgruppen in Ihrem Projekt im gcloud-Befehlszeilentool mit instance-groups unmanaged list auf:

gcloud compute instance-groups unmanaged list

Weitere Informationen zu einer bestimmten nicht verwalteten Instanzgruppe erhalten Sie mit dem Befehl instance-groups unmanaged describe:

gcloud compute instance-groups unmanaged describe instance-group-name \
   --zone=zone

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der zu beschreibenden Gruppe.
  • zone: die Zone der Gruppe.

API

Damit Sie Instanzgruppen mit der API auflisten können, senden Sie eine GET-Anfrage mit der Methode instanceGroups.list:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

Damit Sie über die API Informationen zu einer bestimmten nicht verwalteten Instanzgruppe abrufen können, senden Sie eine GET-Anfrage mit der Methode instanceGroups.get:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der zu beschreibenden Gruppe.
  • zone: die Zone der Gruppe.
  • project-id: die Projekt-ID für das Projekt mit der Gruppe.

Gruppen löschen

Im Unterschied zu einer verwalteten Instanzgruppe werden beim Löschen einer nicht verwalteten Instanzgruppe keine der VMs gelöscht, die sich in der Gruppe befinden. Durch das Löschen einer nicht verwalteten Instanzgruppe wird nur die logische Gruppierung von VMs aufgehoben.

Sie können eine Instanzgruppe nicht löschen, wenn sie das Back-End eines Google Cloud-Load-Balancers ist. Sie müssen zuerst das Back-End aus dem Back-End-Dienst entfernen.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Wählen Sie eine oder mehrere nicht verwaltete Instanzgruppen aus der Liste aus.
  3. Klicken Sie auf Löschen, um die Gruppen zu entfernen. Die Gruppen werden entfernt, aber die VMs in den Gruppen werden nicht gelöscht.

gcloud

Löschen Sie eine nicht verwaltete Instanzgruppe mit dem Befehl instance-groups unmanaged delete:

gcloud compute instance-groups unmanaged delete instance-group-name \
    --zone=zone

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, die Sie löschen möchten.
  • zone: die Zone der Gruppe.

API

Senden Sie zum Löschen einer nicht verwalteten Instanzgruppe mit der API eine DELETE-Anfrage mit der Methode instanceGroups.delete:

DELETE https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, die Sie löschen möchten.
  • zone: die Zone der Gruppe.
  • project-id: die Projekt-ID für das Projekt mit der Gruppe.

Gruppenmitgliedschaft

VMs hinzufügen

Nachdem Sie eine nicht verwaltete Instanzgruppe erstellt haben, können Sie der Gruppe VMs hinzufügen.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Spalte Name der Liste auf den Namen der Instanzgruppe, der Sie die VMs hinzufügen möchten. Es wird eine Seite mit den Eigenschaften der Instanzgruppe und einer Liste der VMs geöffnet, die bereits in der Gruppe enthalten sind.
  3. Klicken Sie auf Bearbeiten, um die nicht verwaltete Instanzgruppe zu bearbeiten.
  4. Wählen Sie unter VM-Instanzen eine oder mehrere vorhandene VMs aus, die der Gruppe hinzugefügt werden sollen. Sie können nur VMs, die sich in derselben Zone, demselben VPC-Netzwerk und demselben Subnetz befinden, als vorhandene VMs auswählen.
  5. Klicken Sie auf Speichern, um die neuen VMs zur Gruppe hinzuzufügen.

gcloud

Fügen Sie Instanzen zu einer nicht verwalteten Instanzgruppe mit dem Befehl instance-groups unmanaged add-instances hinzu:

gcloud compute instance-groups unmanaged add-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, der Sie VMs hinzufügen möchten.
  • zone: die Zone der Gruppe.
  • list-of-VM-names: eine durch Kommas getrennte Liste von VMs in derselben Zone, demselben VPC-Netzwerk und demselben Subnetz.

API

Damit Sie mit der API VMs zu einer nicht verwalteten Instanzgruppe hinzufügen können, senden Sie eine POST-Anfrage mit der Methode instanceGroups.addInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/addInstances

   {
      "instances": [
         {
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
         ....
         }
      ]
   }

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, der Sie VMs hinzufügen möchten.
  • zone: die Zone der Gruppe.
  • project-id: die Projekt-ID für das Projekt mit der Gruppe.
  • instance-1-name und instance-2-name: die Namen der VMs in derselben Zone, demselben VPC-Netzwerk und demselben Subnetz, die Sie der Gruppe hinzufügen möchten.

VMs auflisten

Sie können eine Liste der Mitglieds-VMs in einer nicht verwalteten Instanzgruppe abrufen.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Liste in der Spalte Name auf den Namen der nicht verwalteten Instanzgruppe, die Sie aufrufen möchten. Es wird eine Seite mit der Liste der in der Gruppe enthaltenen Instanzen geöffnet.

gcloud

Listen Sie die VMs in einer nicht verwalteten Instanzgruppe mit dem Befehl instance-groups unmanaged list-instances auf:

gcloud compute instance-groups unmanaged list-instances instance-group-name \
   --zone=zone

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, deren Mitglieder Sie auflisten möchten.
  • zone: die Zone der Gruppe.

API

Damit Sie mit der API VMs in einer nicht verwalteten Instanzgruppe auflisten können, senden Sie eine POST-Anfrage mit der Methode instanceGroups.listInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/listInstances

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe, deren Mitglieder Sie auflisten möchten.
  • zone: die Zone der Gruppe.
  • project-id: die Projekt-ID für das Projekt mit der Gruppe.

VMs entfernen

Sie können VMs aus einer nicht verwalteten Instanzgruppe entfernen. Beim Entfernen einer VM aus der Instanzgruppe wird die VM nicht gelöscht.

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zur Seite "Instanzgruppen"

  2. Klicken Sie in der Liste in der Spalte Name auf den Namen der Instanzgruppe, aus der Sie VMs entfernen möchten. Es wird eine Seite mit den Eigenschaften der Instanzgruppe und einer Liste der in der Gruppe enthaltenen VMs geöffnet.
  3. Wählen Sie in der Liste eine oder mehrere VMs aus, die Sie aus der Gruppe entfernen möchten.
  4. Klicken Sie auf Aus Gruppe entfernen. VMs, die Sie aus einer nicht verwalteten Instanzgruppe entfernen, bleiben erhalten und werden weiterhin ausgeführt, bis Sie sie beenden oder löschen.

gcloud

Entfernen Sie mit dem Befehl instance-groups unmanaged remove-instances VMs aus einer nicht verwalteten Instanzgruppe:

gcloud compute instance-groups unmanaged remove-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe mit den zu entfernenden Instanzen.
  • zone: die Zone der Gruppe.
  • list-of-VM-names: eine durch Kommas getrennte Liste der VMs, die Sie aus der Gruppe entfernen möchten.

API

Damit Sie mit der API VMs aus einer nicht verwalteten Instanzgruppe entfernen können, senden Sie eine POST-Anfrage mit der Methode instanceGroups.removeInstances. So können Sie mehrere VMs gleichzeitig entfernen:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/removeInstances
{
    "instances": [
        {
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
        ....
        }
    ]
}

Ersetzen Sie Folgendes:

  • instance-group-name: der Name der Gruppe mit den zu entfernenden Instanzen.
  • zone: die Zone der Gruppe.
  • project-id: die Projekt-ID für das Projekt mit der Gruppe.
  • instance-1-name und instance-2-name: die Namen der VMs, deren Verknüpfung mit der Gruppe aufgehoben werden soll.

Mit benannten Ports arbeiten

Benannte Ports sind Schlüssel/Wert-Paare, die den Namen und die Nummer eines Ports repräsentieren. Der Portname steht für den Namen eines Dienstes oder einer Anwendung. Die Portnummer steht für den Port, an dem der Dienst oder die Anwendung ausgeführt wird.

Benannte Ports werden von Cloud Load Balancing verwendet. Load-Balancer, die als Proxys dienen, abonnieren in ihrer Back-End-Dienst-Konfiguration einen einzelnen benannten Port. Der Name des Ports wird anhand der Zuordnung benannter Ports für jedes Instanzgruppen-Back-End in eine Portnummer übersetzt.

Ein Back-End-Dienst kann beispielsweise einen Port mit dem Namen http-port abonnieren. Die Back-End-Instanzgruppe kann einen Port namens http-port:80 haben. Die Back-End-Instanzgruppe weist den Load-Balancer an, Traffic über ein Protokoll wie TCP an eine VM in der Gruppe an Port 80 zu senden. Das Protokoll wird im Back-End-Dienst des Load-Balancers definiert.

Benannte Ports sind einfache Metadaten, die von Proxy-Load-Balancern verwendet werden. Sie steuern keine Netzwerk- oder Firewallressourcen in Compute Engine.

Mehrere Portnummern für einen benannten Port verwenden

Sie können jedem Dienstnamen mehrere Ports zuweisen. Sie können für jeden Port auch mehrere Dienstnamen zuweisen.

Beachten Sie die folgenden Aspekte:

  • Der Traffic wird auf alle Ports mit demselben Portnamen verteilt.
  • Ein Back-End-Dienst kann Traffic immer nur an einen benannten Port weiterleiten.
  • Wenn Sie für einen benannten Port mehrere Portnummern verwenden, müssen alle Ports für dieselbe Anwendung gelten.

    Beispiel: http:80,http:8080 funktioniert, aber http:80,http:443 funktioniert nicht, da Port 80 TLS im Allgemeinen nicht unterstützt.

Sie können in einer Instanzgruppe mehrere benannte Ports zuweisen. Nehmen Sie zur Veranschaulichung einmal an, Sie hätten einen Back-End-Dienst, der den benannten Port http-port abonniert und zwei Back-End-Instanzgruppen hat:

  • instance-group-a mit dem benannten Port http-port:80
  • instance-group-b mit dem benannten Port http-port:79

Dieser Back-End-Dienst sendet Traffic für VMs in instance-group-a an Port 80 und für VMs in instance-group-b an Port 79.

Wenn Sie eine Instanzgruppe mehreren Back-End-Diensten (für mehrere Load-Balancer) hinzufügen und die Instanzgruppe für verschiedene Ports auf jedem Load-Balancer bereitgestellt wird, dürfen Sie einem einzelnen benannten Port nicht alle Portnummern hinzufügen. Erstellen Sie stattdessen einen eindeutigen benannten Port und ordnen Sie ihn einer Reihe von Ports zu, die für jeden Back-End-Dienst bereitgestellt werden sollen.

Angenommen, Sie haben drei Anwendungen mit jeweils einem eigenen Load-Balancer. Jede Anwendung hat eine eigene Portnummer: 81 für app1, 82 für app2 und 83 für app3. Wenn alle drei Back-End-Dienste eine allgemeine Instanzgruppe verwenden, weisen Sie dieser Instanzgruppe die benannten Ports in Form von [app1:81, app2:82, app3:83] zu.

Benannte Ports und Systemdiagnosen

Damit ein benannter Port mit mehreren Portnummern für einen Back-End-Dienst mit einem externen HTTP(S)-Load-Balancer oder mit einem internen HTTP(S)-Load-Balancer funktioniert, muss die Systemdiagnose anstelle einer bestimmten Portnummer das Flag --use-serving-port haben. Diese Option ist in der Google Cloud Console nicht verfügbar. Sie müssen --use-serving-port mit gcloud oder mit der API festlegen.

Angenommen, Sie haben eine Anwendung, die mithilfe von Load-Balancing den Traffic an drei verschiedene Ports (81, 82, 83) für einen Back-End-Dienst mit einer einzigen Instanzgruppe verteilt. Sie können die Ports dieser Instanzgruppen in Form von [app:81, 82, 83] zuweisen. Die Systemdiagnose muss in diesem Szenario das Flag --use-serving-port haben.

Weitere Informationen finden Sie in der Dokumentation zum Load-Balancing-Systemdiagnose.

Benannte Ports und Firewallregeln

Google Cloud-Firewallregeln werden von benannten Ports nicht erstellt oder geändert. Damit Sie Traffic zu Back-End-VMs zulassen können, müssen Sie dennoch die erforderlichen Firewallregeln erstellen.

Benannte Ports und Back-End-Dienste

Zusätzlich zur Konfiguration der Instanzgruppe müssen Sie auch den Back-End-Dienst konfigurieren. Angenommen, Sie legen den benannten Port für eine Instanzgruppe mit dem Namen my-service-name und dem Port 8888 fest:

gcloud compute instance-groups set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

Dann müssen Sie in der Konfiguration des Backend-Dienstes auf den benannten Port verweisen, wobei --port-name im Back-End-Dienst auf my-service-name gesetzt ist:

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

Benannte Ports erstellen

Console

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

  2. Klicken Sie in der Liste in der Spalte Name auf den Namen der Instanzgruppe, in der Sie benannte Ports festlegen möchten. Ihnen wird eine Seite mit den Attributen der Instanzgruppe angezeigt.
  3. Klicken Sie auf Bearbeiten, um die nicht verwaltete Instanzgruppe zu bearbeiten.
  4. Klicken Sie im Abschnitt Portnamenzuordnung (optional) auf Element hinzufügen. Geben Sie einen Portnamen und die zugehörige Nummer ein. Fügen Sie bei Bedarf andere benannte Ports hinzu oder entfernen Sie welche.
  5. Klicken Sie auf Speichern, um die Liste der benannten Ports für die nicht verwaltete Instanzgruppe zu aktualisieren.

gcloud

Um benannte Ports einer nicht verwalteten Instanzgruppe hinzuzufügen, verwenden Sie den Befehl instance-groups unmanaged set-named-ports.

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=port-name:port-number,...

Um benannte Ports in einer nicht verwalteten Instanzgruppe aufzulisten, verwenden Sie den Befehl instance-groups unmanaged get-named-ports:

Richten Sie mit dem Befehl set-named-ports einen oder mehrere benannte Ports ein:

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports PORT_NAME:PORT,PORT_NAME:PORT

Beispiel:

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports name1:80,name2:8080

Sie können für jeden Namen oder Port mehrere Einträge erstellen, wenn Sie einem Dienstnamen mehrere Ports oder einem Dienst mehrere Namen zuweisen möchten. Beispiel: Wenn die Ports 10, 20 und 80 für dieselbe Anwendung bestimmt sind, können Sie name1 allen diesen Ports zuweisen. Zusätzlich könnten Sie zwei Namen, name2 und name3, dem Port 8080 zuweisen. Schließlich könnten Sie den Port 9000 wie im folgenden Beispiel name4 zuweisen:

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

Wenn Sie mit dem gcloud-Befehlszeilentool alle benannten Ports aus einer nicht verwalteten Instanzgruppe entfernen möchten, verwenden Sie instance-groups unmanaged set-named-ports mit einer leeren Liste benannter Ports:

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=""

Ersetzen Sie in allen obigen Beispielen Folgendes, sofern vorhanden:

  • instance-group-name: der Name der Instanzgruppe.
  • zone: die Zone der Gruppe.
  • port-name und port-number: Der Portname und die Portnummer stellen eine Zuordnung von einem ausgewählten Namen zu einer Portnummer dar. Sie können mehrere durch Kommas getrennte Zuordnungen angeben. Zum Beispiel ist port-one:80,port-two:8080 eine gültige Liste benannter Ports.

API

  1. Beschreiben Sie die Instanzgruppe und notieren Sie sich den fingerprint (Fingerabdruck).

  2. Damit Sie mit der API benannte Ports hinzufügen können, senden Sie eine POST-Anfrage mit der Methode instanceGroups.setNamedPorts. Wenn Sie alle benannten Ports entfernen möchten, geben Sie für namedPorts eine leere Liste an.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/setNamedPorts
    
    {
        "fingerprint": "fingerprint",
        "namedPorts": [
            {
            "name": "port-name",
            "port": port-number
            },
            {
            "name": "port-name",
            "port": port-number
            },
            ....
        ]
    }
    

    Ersetzen Sie Folgendes:

    • instance-group-name: der Name der Instanzgruppe.
    • zone: die Zone der Gruppe.
    • project-id: die Projekt-ID für das Projekt mit der Gruppe.
    • port-name und port-number: Der Portname und die Portnummer stellen eine Zuordnung von einem ausgewählten Namen zu einer Portnummer dar.
    • fingerprint: Dies ist der Fingerabdruck aus dem vorherigen Schritt.

Nächste Schritte