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.

Vorbereitung

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 Back-End-Dienst erforderlich.

Ein Back-End-Dienst kann mehrere Back-Ends enthalten. Eine Instanzgruppe ist ein Back-End-Typ. Die Instanzen in der Instanzgruppe reagieren auf Traffic vom Load-Balancer. Der Back-End-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 einem Back-End-Dienst um eine verwaltete Instanzgruppe zu erweitern.

Console

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

    Zur Seite „Load-Balancing“

  2. Klicken Sie auf den Namen des Back-End-Dienstes, in den Sie in 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

Verwenden Sie den Befehl add-backend des gcloud-Befehlszeilentools:

    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.

API

Informationen zum Einsetzen eines Back-End-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 beim Netzwerk-Load-Balancing verwendet. Dabei werden Nutzeranfragen von einem Netzwerk-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 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

Verwenden Sie den Befehl set-target-pools des gcloud-Befehlszeilentools:

gcloud compute instance-groups managed set-target-pools [INSTANCE_GROUP] \
        --target-pools [TARGET_POOL,..] [--zone ZONE]

Dabei gilt:

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

API

Erstellen Sie in der API eine POST-Anfrage an den folgenden URI:

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instanceGroupManagers/[INSTANCE_GROUP]/setTargetPools

Dabei gilt:

  • [PROJECT_ID] ist die Projekt-ID für diese Anfrage.
  • [ZONE] ist die Zone der 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, auf dem der Dienst oder die Anwendung ausgeführt wird.

Benannte Ports werden von Cloud Load Balancing verwendet. Load-Balancer, die als Proxys fungieren, abonnieren in ihrer Back-End-Dienst-Konfiguration einen einzelnen benannten Port. Der Name des Ports wird basierend auf der Zuordnung des benannten 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 auf jedem Load-Balancer unterschiedliche Ports bereitstellt, sollten Sie nicht alle Portnummern zu einem einzigen benannten Port hinzufügen. Erstellen Sie stattdessen einen eindeutigen benannten Port und verknüpfen Sie diesen mit einem Satz von Ports, den jeder Back-End-Dienst bereitstellen soll.

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 gemeinsame Instanzgruppe verwenden, weisen Sie der Instanzgruppe die benannten Ports als [app1:81, app2:82, app3:83] zu.

Benannte Ports und Systemdiagnosen

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

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

Weitere Informationen finden Sie in der Dokumentation zur 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 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 auf Portnamenzuordnung festlegen, um die Optionen für benannte Ports einzublenden.
  5. Klicken Sie auf Element hinzufügen und geben Sie den gewünschten Portnamen sowie die Portnummern ein, die Sie mit dem Namen verknüpfen möchten. Wenn Sie weitere Einträge benötigen, klicken Sie noch einmal auf Element hinzufügen.
  6. Klicken Sie auf Speichern, um die Änderungen zu speichern und die benannten Ports auf die Instanzen in der verwalteten Instanzgruppe anzuwenden.

gcloud

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

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

API

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

Erstellen Sie eine Anfrage an die instanceGroups API. 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