Instanzgruppe einem Load-Balancer hinzufügen


Das Google Cloud-Load-Balancing verwendet zur Weiterleitung von Traffic sowohl verwaltete als auch nicht verwaltete Instanzgruppen. Je nach Typ des verwendeten Load-Balancers können Sie Instanzgruppen einem Zielpool oder Back-End-Dienst hinzufügen. Weitere Informationen zum Load-Balancing erhalten Sie unter Load-Balancer auswählen.

Weitere Informationen zu Instanzgruppen finden Sie in der Dokumentation zu Instanzgruppen.

Hinweise

  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich wie folgt bei Compute Engine authentifizieren.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

Beschränkungen

  • Wenn Sie Load-Balancing mit einer regionalen MIG verwenden möchten, gelten die folgenden Beschränkungen:
    • Sie können nicht den Balancing-Modus maxRate verwenden.
    • Wenn Sie ein HTTP(S)-Load-Balancing-Schema mit einer regionalen MIG verwenden, müssen Sie den Balancing-Modus maxRatePerInstance oder maxUtilization auswählen.

Verwaltete Instanzgruppe zu einem Back-End-Dienst hinzufügen

Zum Erstellen der meisten Arten von Load-Balancern ist ein Backend-Dienst erforderlich.

Ein Back-End-Dienst kann mehrere Back-Ends enthalten. Eine Instanzgruppe ist ein Backend-Typ. Die Instanzen in der Instanzgruppe reagieren auf Traffic vom Load-Balancer. Der Backend-Dienst wiederum weiß, welche Instanzen er verwenden kann und wie viel Traffic diese verarbeiten können und aktuell verarbeiten. Außerdem überwacht der Back-End-Dienst die Systemdiagnose und stellt keine neuen Verbindungen zu fehlerhaften Instanzen her.

Folgen Sie dieser Anleitung, um einen Backend-Dienst um eine verwaltete Instanzgruppe zu erweitern.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".

    Zur Seite „Load-Balancing“

  2. Klicken Sie auf den Namen des Backend-Dienstes, in den Sie die verwaltete Instanzgruppe einfügen möchten.
  3. Klicken Sie auf Bearbeiten.
  4. Klicken Sie auf Back-End hinzufügen.
  5. Wählen Sie die Instanzgruppe aus, die Sie einfügen möchten.
  6. Bearbeiten Sie alle optionalen Einstellungen, die Sie ändern möchten.
  7. Speichern Sie die Änderungen.

gcloud

Führen Sie den Befehl add-backend aus:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP \
        [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \
        --balancing-mode=BALANCING_MODE

Je nach Balancing-Modus der verwalteten Instanzgruppe sind zusätzliche Parameter erforderlich. Weitere Informationen finden Sie in der SDK-Dokumentation zum Befehl add-backend.

REST

Informationen zum Hinzufügen eines Backend-Dienstes mit der REST API finden Sie unter backendServices.

Verwaltete Instanzgruppe zu einem Zielpool hinzufügen

Ein Zielpool ist ein Objekt, das eine oder mehrere VM-Instanzen enthält. Ein Zielpool wird in externen Passthrough-Network Load Balancern verwendet. Dabei werden Nutzeranfragen von einem Load-Balancer an den hinzugefügten Zielpool weitergeleitet. Die Instanzen, die Teil dieses Zielpools sind, leiten diese Anfragen weiter und geben eine Antwort zurück. Sie können eine verwaltete Instanzgruppe einem Zielpool hinzufügen, sodass der Zielpool automatisch aktualisiert wird, wenn Instanzen in der Instanzgruppe hinzugefügt oder entfernt werden.

Bevor Sie eine verwaltete Instanzgruppe einem Zielpool hinzufügen können, muss der Zielpool vorhanden sein. Weitere Informationen finden Sie in der Dokumentation zum Hinzufügen eines Zielpools.

Folgen Sie dieser Anleitung, um einem Zielpool eine vorhandene verwaltete Instanzgruppe hinzuzufügen. Dadurch werden alle VM-Instanzen, die Teil der verwalteten Instanzgruppe sind, dem Zielpool hinzugefügt.

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Zielpools“ auf.

    Zur Seite "Zielpools"

  2. Klicken Sie auf den Zielpool, dem Sie die Instanzgruppe hinzufügen möchten.
  3. Klicken Sie auf Bearbeiten.
  4. Scrollen Sie nach unten zum Abschnitt VM-Instanzen und klicken Sie auf Instanzgruppen auswählen.
  5. Wählen Sie eine Instanzgruppe aus dem Drop-down-Menü aus.
  6. Speichern Sie die Änderungen.

gcloud

Führen Sie den Befehl set-target-pools aus:

gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \
        --target-pools TARGET_POOL,..

wobei

  • INSTANCE_GROUP ist der Name der Instanzgruppe.
  • TARGET_POOL,.. ist der Name von einem oder mehreren Zielpools, denen diese Instanzgruppe hinzugefügt werden soll.

REST

Rufen Sie die Methode setTargetPools für eine regionale MIG oder zonale MIG auf. Beispiel:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools

wobei

  • PROJECT_ID ist die Projekt-ID für diese Anfrage.
  • REGION ist die Region für die Instanzgruppe.
  • INSTANCE_GROUP ist der Name der Instanzgruppe.

Der Anfragetext muss eine Liste der URIs zu den Zielpools enthalten, zu denen Sie diese Gruppe hinzufügen möchten. Beispiel:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Benannte Ports verwalteten Instanzgruppen zuweisen

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 Backend-Dienst mit einem externen Application Load Balancer oder mit einem internen Application 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. Zum Festlegen von --use-serving-port müssen Sie die Google Cloud CLI oder die API verwenden.

Angenommen, Sie haben eine Anwendung, die mithilfe von Load-Balancing den Traffic an drei verschiedene Ports (81, 82, 83) für einen Backend-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 Google Cloud Console die Seite Instanzgruppen auf.

    Zu den Instanzgruppen

  2. Klicken Sie 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 verwaltete Instanzgruppe zu bearbeiten.
  4. Klicken Sie im Bereich Portzuordnung auf Port hinzufügen und geben Sie den gewünschten Portnamen sowie die Portnummern ein, die Sie mit dem Namen verknüpfen möchten. Klicken Sie noch einmal auf Port hinzufügen, wenn Sie weitere Einträge benötigen.
  5. Klicken Sie auf Speichern, um die Änderungen zu speichern und die benannten Ports auf die Instanzen in der verwalteten Instanzgruppe anzuwenden.

gcloud

Legen Sie für verwaltete Instanzgruppen mit dem Befehl instance-groups managed set-named-ports einen oder mehrere benannte Ports fest. Verwenden Sie für nicht verwaltete Gruppen den Befehl instance-groups set-named-ports.

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

Beispiel:

gcloud compute instance-groups managed 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 managed set-named-ports INSTANCE_GROUP \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

Die Portnamenzuordnung für eine verwaltete Instanzgruppe prüfen Sie mit dem Befehl get-named-ports:

gcloud compute instance-groups managed get-named-ports INSTANCE_GROUP
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

REST

Die API instanceGroupManagers bietet nicht die API-Methode setNamedPorts. Verwenden Sie für diese Aufgabe stattdessen die API instanceGroups.

Erstellen Sie eine Anfrage an die API instanceGroups. Geben Sie dabei den Namen der Instanzgruppe an. Ermitteln Sie den aktuellen Wert der Instanzgruppe für fingerprint durch Abrufen von Informationen über eine bestimmte Gruppe. Fügen Sie den fingerprint-Wert sowie eines oder mehrere namedPorts-Wertpaare in den Anfragetext ein:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroups/INSTANCE_GROUP/setNamedPorts

{
  "fingerprint": "42WmSpB8rSM=",
  "namedPorts": [
    {
       "name": "PORT_NAME",
       "port": PORT_NUMBER
    },
    {
       "name": "PORT_NAME",
       "port": PORT_NUMBER
    }
  ]
 }
 

Wenn z. B. die Ports 10, 20 und 80 für dieselbe Anwendung bestimmt sind, können Sie allen diesen Ports name1 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:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
   "fingerprint": "42WmSpB8rSM=",
   "namedPorts": [
      {
       "name": "name1",
       "port": 8080
      },
      {
       "name": "name2",
       "port": 9000
      }
   ]
}

Erstellen Sie mehrere Einträge für diesen Namen, wenn Sie einem Dienstnamen mehrere Ports zuweisen möchten. Weisen Sie beispielsweise name1 die Ports 10, 20 und 80 zu. Ordnen Sie außerdem name2 Port 8080 zu.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
   "fingerprint": "42WmSpB8rSM=",
   "namedPorts": [
      {
       "name": "name1",
       "port": 10
      },
      {
       "name": "name1",
       "port": 20
      }
      {
       "name": "name1",
       "port": 80
      }
      {
       "name": "name2",
       "port": 8080
      }
      {
       "name": "name3",
       "port": 80
      }
      {
       "name": "name4",
       "port": 8080
      }
   ]
}

Stellen Sie eine GET-Anfrage, die auf die Gruppe verweist, um eine Liste der benannten Ports zu erhalten, die bereits einer verwalteten Instanzgruppe zugewiesen sind:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP

Nächste Schritte