Protokollweiterleitung verwenden

Google Compute Engine unterstützt die Protokollweiterleitung und damit die Erstellung von Weiterleitungsregelobjekten, die Pakete an eine nicht-NAT-codierte Zielinstanz senden können. Jede Zielinstanz enthält eine einzelne VM-Instanz, die Traffic von den entsprechenden Weiterleitungsregeln empfängt und verarbeitet.

Protokollweiterleitung kann in verschiedenen Szenarien verwendet werden, einschließlich der folgenden:

  • Virtuelles Hosting nach IP-Adressen

    Sie können mehrere Weiterleitungsregeln so einrichten, dass sie auf eine einzelne Zielinstanz verweisen, sodass Sie mehrere externe IP-Adressen mit einer einzigen VM-Instanz verwenden können. Sie können dies in Fällen verwenden, in denen Sie Daten von nur einer VM-Instanz, aber über verschiedene externe IP-Adressen bereitstellen möchten. Dies eignet sich insbesondere bei der Einrichtung des virtuellen SSL-Hostings.

  • Virtuelle private Netzwerke (VPN)

    Informationen hierzu unter:

  • Private VIPs

    Sie können die Protokollweiterleitung für private regionale Weiterleitungsregeln mit privaten Adressen (RFC 1918) verwenden. Verwenden Sie diese Funktion, um private Weiterleitungsregeln zu konfigurieren, die TCP- oder UDP-Traffic an eine Zielinstanz in derselben Region senden. Sie können private regionale Weiterleitungsregeln auch von Zielinstanzen auf Back-End-Dienste umstellen und umgekehrt.

  • Load-Balancing

    Weitere Informationen zum Weiterleiten von Traffic an einen Load-Balancer finden Sie unter Konzepte für Weiterleitungsregeln.

Beim virtuellen Hosting nach IP-Adressen, bei virtuellen privaten Netzwerken (VPN) und beim Load-Balancing unterstützt Google Compute Engine die Protokollweiterleitung für die folgenden Protokolle:

Bei privaten VIPs werden nur TCP und UDP unterstützt:

Die Gebühren für die Protokollweiterleitung sind identisch mit den Gebühren für den Lastenausgleichsdienst. Weitere Informationen finden Sie in der Preisliste.

Schnellstart

In dieser Kurzanleitung wird davon ausgegangen, dass Sie mit bash vertraut sind.

So erstellen Sie eine Weiterleitungsregel, die Traffic an eine einzelne Instanz sendet:

  1. Erstellen Sie eine Zielinstanz.

    Die Zielinstanz enthält eine einzelne VM-Instanz. Diese VM-Instanz kann bereits beim Erstellen der Zielinstanz vorhanden sein oder später erstellt werden.

  2. Erstellen Sie eine Weiterleitungsregel.

    Die Zielinstanz muss vorhanden sein, bevor Sie eine Weiterleitungsregel erstellen. Wenn eingehende Pakete mit der IP-Adresse, dem Protokoll und (sofern zutreffend) dem Portbereich übereinstimmen, die von der Weiterleitungsregel bereitgestellt werden, leitet die Weiterleitungsregel diesen Traffic an die Zielinstanz weiter.

Im weiteren Verlauf dieser Schnellstartanleitung werden die oben aufgeführten Schritte umfassend erläutert. Dabei geschieht Folgendes:

  1. Einrichten eines Apache-Servers auf einer VM-Instanz
  2. Erstellen einer Zielinstanz und entsprechender Weiterleitungsregeln
  3. Senden von Traffic an eine einzelne Zielinstanz

Am Ende dieser Anleitung sollten Sie wissen, wie die Protokollweiterleitung über mehrere Weiterleitungsregeln an eine einzelne Zielinstanz eingerichtet wird.

VM-Instanz einrichten und Apache installieren

Als Erstes wird eine einzelne VM-Instanz erstellt, auf der Apache installiert ist.

  1. Erstellen Sie einige Startskripts für die neue Instanz.

    Je nach Betriebssystem sind unterschiedliche Startskripts möglich:

    • Wenn Sie auf der Instanz ein Debian-Image verwenden möchten, führen Sie den folgenden Befehl aus:

      me@local:~$ echo "sudo apt-get update && sudo apt-get -y install apache2 && mkdir -p /var/www1 &&
      mkdir -p /var/www2 && mkdir -p /var/www3 && hostname > /var/www/html/index.html &&
      echo w1 > /var/www1/index.html && echo w2 > /var/www2/index.html && echo w3 > /var/www3/index.html" > 
      $HOME/pf_startup.sh

    • Wenn Sie auf der Instanz ein CentOS-Image verwenden möchten, führen Sie den folgenden Befehl aus:

      me@local:~$ echo "sudo yum -y install httpd && sudo service httpd restart && mkdir -p /var/www1 &&
      mkdir -p /var/www2 && mkdir /var/www3 && hostname > /var/www/html/index.html &&
      echo w1 > /var/www1/index.html && echo w2 > /var/www2/index.html && echo w3 > /var/www3/index.html" > 
      $HOME/pf_startup.sh

  2. Erstellen Sie ein Tag für die zukünftige VM, damit später eine Firewall auf sie angewendet werden kann:

    me@local:~$ TAG="www-tag"
    
  3. Erstellen Sie eine neue VM-Instanz, die den Traffic für die Weiterleitungsregeln verarbeiten soll.

    gcloud compute instances create pf-instance \
        --image-project debian-cloud --image-family debian-9 --tags $TAG \
        --metadata-from-file startup-script=$HOME/pf_startup.sh
    
  4. Erstellen Sie eine Firewallregel, damit externer Traffic an diese VM-Instanz zugelassen wird:

    gcloud compute firewall-rules create www-firewall --target-tags $TAG --allow tcp
    

Damit haben Sie erfolgreich eine VM-Instanz erstellt. Jetzt können Sie die Konfiguration der Protokollweiterleitung einrichten.

Zielinstanz und entsprechende Weiterleitungsregeln erstellen

  1. Erstellen Sie eine Zielinstanz.

    Zielinstanzen enthalten eine einzelne VM-Instanz, die Traffic von einer Weiterleitungsregel empfängt und verarbeitet. Zielinstanzen haben keine NAT-Richtlinie, sodass Sie sie zur Einrichtung Ihrer eigenen VPN-Verbindungen direkt mit IPsec-Protokollen verwenden können.

    Sie müssen eine Zielinstanz erstellen, bevor Sie ein Weiterleitungsregelobjekt erstellen können, weil Weiterleitungsregeln auf eine vorhandene Zielressource verweisen müssen. Eine Weiterleitungsregel, die Traffic an eine nicht vorhandene Zielressource weiterleitet, kann nicht erstellt werden. Erstellen Sie für dieses Beispiel eine Zielinstanz:

    gcloud compute target-instances create pf-target-instance --instance pf-instance
    
  2. Erstellen Sie Weiterleitungsregelobjekte.

    Ein Weiterleitungsregelobjekt leitet Traffic, der mit dem IP-Protokoll und dem Port übereinstimmt, an eine angegebene Zielinstanz weiter. Weitere Einzelheiten finden Sie in der Dokumentation zu Weiterleitungsregeln.

    In diesem Beispiel werden über die folgenden Befehle drei Weiterleitungsregeln erstellt, und zwar jede mit einer sitzungsspezifischen IP-Adresse, die TCP-Traffic an die Zielinstanz weiterleitet. Wenn statische externe IP-Adressen vorhanden sind, können Sie sie optional mit diesen Weiterleitungsregeln verwenden. Geben Sie dafür das Flag --address IP-ADDRESS an.

    gcloud compute forwarding-rules create pf-rule1 --ip-protocol TCP \
        --ports 80 --target-instance pf-target-instance
    
    gcloud compute forwarding-rules create pf-rule2 --ip-protocol TCP \
        --ports 80 --target-instance pf-target-instance
    
    gcloud compute forwarding-rules create pf-rule3 --ip-protocol TCP \
        --ports 80 --target-instance pf-target-instance
    

Das ist alles. Sie können jetzt Traffic an die Zielinstanz senden.

Traffic an die Instanz senden

  1. Rufen Sie die externen IP-Adressen der neuen Weiterleitungsregeln ab.

    Führen Sie gcloud compute forwarding-rules list aus, um die externen IP-Adressen der Weiterleitungsregeln abzurufen. In der folgenden Tabelle sind z. B. die sitzungsspezifischen IP-Adressen aufgeführt, die für die zuvor erstellten Weiterleitungsregeln zugeordnet wurden.

    Wenn Sie sich für die Verwendung reservierter IP-Adressen entschieden haben, werden diese hier anstelle der sitzungsspezifischen IP-Adressen aufgeführt.

    gcloud compute forwarding-rules list
    
    NAME     REGION      IP_ADDRESS     IP_PROTOCOL TARGET
    pf-rule1 us-central1 [ADDRESS_1]    TCP         us-central1-a/targetInstances/pf-target-instance
    pf-rule2 us-central1 [ADDRESS_2]    TCP         us-central1-a/targetInstances/pf-target-instance
    pf-rule3 us-central1 [ADDRESS_3]    TCP         us-central1-a/targetInstances/pf-target-instance

    Notieren Sie sich die IP-Adressen für den nächsten Schritt.

  2. Konfigurieren Sie die virtuellen Apache-Hosts für die VM-Instanzen, um unterschiedliche Informationen je nach Ziel-URL bereitzustellen.

    Stellen Sie zuerst eine SSH-Verbindung zur Instanz her:

    gcloud compute ssh pf-instance
    

    Bearbeiten Sie dann die Datei /etc/apache2/sites-enabled/000-default.conf und fügen Sie die folgenden Zeilen hinzu. Verwenden Sie für VirtualHost-Zeilen die IP-Adressen, die im vorherigen Schritt angezeigt wurden.

    <VirtualHost [ADDRESS_1]>
     DocumentRoot /var/www1
     <Directory /var/www1>
      Require all granted
     </Directory>
    </VirtualHost>
    <VirtualHost [ADDRESS_2]>
     DocumentRoot /var/www2
     <Directory /var/www2>
      Require all granted
     </Directory>
    </VirtualHost>
    <VirtualHost [ADDRESS_3]>
     DocumentRoot /var/www3
     <Directory /var/www3>
      Require all granted
     </Directory>
    </VirtualHost>
    

    Starten Sie zum Schluss Apache neu:

    user@myinst:~$ sudo /etc/init.d/apache2 restart
    
  3. Versuchen Sie, Traffic an die Instanz zu senden.

    Auf dem lokalen Computer wird jetzt eine Anfrage an die externen IP-Adressen gestellt, die von den erstellten Weiterleitungsregeln bereitgestellt wurden.

    Verwenden Sie curl, um Traffic an die IP-Adressen zu senden. In der Antwort wird je nach IP-Adresse w1, w2 oder w3 zurückgegeben.

    me@local:~$curl [ADDRESS_1]
    w1
    
    me@local:~$ curl [ADDRESS_2]
    w2
    
    me@local:~$ curl [ADDRESS_3]
    w3
    

    Geschafft! Sie haben Ihre erste Protokollweiterleitungskonfiguration eingerichtet.

Weiterleitungsregeln

Weiterleitungsregeln werden in Verbindung mit Zielpools und Zielinstanzen verwendet, um Lastenausgleichs- und Protokollweiterleitungsfunktionen zu unterstützen. Um Lastenausgleich und Protokollweiterleitung verwenden zu können, müssen Sie eine Weiterleitungsregel erstellen, die Traffic an bestimmte Zielpools (zum Lastenausgleich) oder Zielinstanzen (zur Protokollweiterleitung) leitet. Diese Funktionen können nicht ohne eine Weiterleitungsregel verwendet werden.

Weiterleitungsregelressourcen sind in der Sammlung der Weiterleitungsregeln enthalten. Jede Weiterleitungsregel vergleicht eine bestimmte IP-Adresse, ein bestimmtes Protokoll und – optional – einen Portbereich mit einem einzelnen Zielpool oder einer einzelnen Zielinstanz. Wenn Traffic an eine externe IP-Adresse gesendet wird, die von einer Weiterleitungsregel bereitgestellt wird, leitet die Weiterleitungsregel diesen Traffic an den entsprechenden Zielpool oder die entsprechenden Zielinstanzen weiter. Sie können bis zu 50 Weiterleitungsregelobjekte pro Projekt erstellen.

Bei der Arbeit mit Weiterleitungsregeln müssen einige Punkte berücksichtigt werden:

  • Der Name einer Weiterleitungsregel muss in diesem Projekt eindeutig sein, 1 bis 63 Zeichen umfassen und mit dem regulären Ausdruck [a-z]([-a-z0-9]*[a-z0-9])? übereinstimmen. Dies bedeutet, dass das erste Zeichen ein Kleinbuchstabe sein muss. Alle folgenden Zeichen müssen Bindestriche, Kleinbuchstaben oder Ziffern sein, mit Ausnahme des letzten Zeichens, das kein Bindestrich sein darf.

  • Wenn Sie kein Weiterleitungsregelprotokoll angeben, wird das Standard-TCP verwendet. Bestimmte Protokolle können nur mit Zielpools oder Zielinstanzen verwendet werden:

    • Wenn Sie ESP, AH, SCTP oder ICMP verwenden, müssen Sie eine Zielinstanz angeben. Bei diesen Protokollen kann kein Zielpool angegeben werden.
    • Wenn Sie TCP oder UDP verwenden, können Sie entweder einen Zielpool oder eine Zielinstanz angeben.
  • Portbereiche können nur für die Protokolle TCP, UDP und SCTP angegeben werden.

Weiterleitungsregel hinzufügen

Um eine neue Weiterleitungsregel hinzuzufügen, können Sie den Befehl gcloud compute forwarding-rules create verwenden oder einen HTTP POST-Request an die Sammlung der Weiterleitungsregeln erstellen. Mit dem Befehlszeilentool gcloud wird eine Weiterleitungsregel für eine Zielinstanz beispielsweise wie folgt erstellt:

gcloud compute forwarding-rules create [FORWARDING_RULE] \
    --load-balancing-scheme internal | external \
    --region [REGION] \
    [--target-instance-zone [ZONE]] \
    --ip-protocol TCP --ports 80 \
    --target-instance [TARGET_INSTANCE]

Wenn Sie das Flag --target-instance-zone weglassen, werden Sie vom Befehlszeilentool gcloud zur Auswahl einer Zone aufgefordert, sofern Sie nicht die Eigenschaft compute/zone mit gcloud config set compute/zone festgelegt haben. Weitere Informationen finden Sie unter Standard-Properties festlegen.

Der Befehl gcloud compute forwarding-rules create unterstützt das Setzen einer Zielinstanz als Ziel, wenn das Lastenausgleichsschema intern ist.

Hier ist ein Beispiel für das Erstellen einer Weiterleitungsregel in Bezug auf einen Zielpool:

gcloud compute forwarding-rules create [FORWARDING_RULE] \
    --target-pool [TARGET_POOL] \
    [--region [REGION]]

Wenn Sie das Flag --region weglassen, werden Sie vom Befehlszeilentool gcloud zur Auswahl einer Region aufgefordert, sofern Sie nicht die Eigenschaft compute/region mit gcloud config set compute/region festgelegt haben. Weitere Informationen finden Sie unter Standard-Properties festlegen.

Eine vollständige Beschreibung der verfügbaren Flags finden Sie in der Dokumentation zum Befehl create für Weiterleitungsregeln. Sie können aber auch gcloud compute forwarding-rules create --help eingeben.

Stellen Sie eine HTTP POST-Anfrage an den folgenden URI, um eine Weiterleitungsregel mithilfe der API hinzuzufügen:

https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/forwardingRules

Der Anfragetext muss die folgenden Felder enthalten:

{
 "name": "example-forwarding-rule",
 "IPAddress": "`10.1.1.1",
 "IPProtocol": "TCP",
 "portRange": "80",
 "target": "zones/us-central1-f/targetInstances/example-target-instances"
}

Informationen dazu, wie Sie Weiterleitungsregeln auflisten, Daten zu einer bestimmten Weiterleitungsregel erhalten und Weiterleitungsregeln löschen, finden Sie auf den gcloud SDK- und API-Referenzseiten:

Zielinstanzen

Eine Zielinstanzressource enthält eine VM-Instanz, die Traffic von einer oder mehreren Weiterleitungsregeln verarbeitet. Sie eignet sich insbesondere zur Weiterleitung bestimmter Arten von Protokoll-Traffic, die von einer einzelnen Quelle verwaltet werden müssen, z. B. ESP und AH. Sie können aber auch eine Zielinstanz für TCP- und UDP-Protokolle verwenden. Auf Zielinstanzen wird keine NAT-Richtlinie angewendet, sodass sie für Traffic verwendet werden können, der nicht-NAT-codierten IPsec-Traffic für virtuelle private Netzwerke (VPN) erfordert.

Zielinstanzen müssen in derselben Region wie die Weiterleitungsregel gespeichert sein. Zielinstanzen müssen auch in der gleichen Zone wie die VM-Instanz betrieben werden. Wenn die Weiterleitungsregel z. B. in us-central1 und die gewünschte Instanz in us-central1-a gespeichert ist, muss die Zielinstanz in us-central1-a gespeichert sein. Wenn die Instanz in us-central1-b gespeichert wäre, müsste auch die Zielinstanz in us-central1-b gespeichert sein.

Zielinstanz hinzufügen

Um eine neue Zielinstanz hinzuzufügen, können Sie den Befehl gcloud compute target-instances verwenden. Sie können auch einen HTTP POST-Request an die targetInstances-Sammlung stellen. Es ist nicht möglich, Zielinstanzressourcen über die GCP Console zu erstellen. Ein Beispiel für das Erstellen einer Zielinstanz mithilfe des Befehlszeilentools gcloud lautet wie folgt:

gcloud compute target-instances create [TARGET_INSTANCE] --instance INSTANCE

Wenn Sie das Flag --zone weglassen, werden Sie vom Befehlszeilentool gcloud zur Auswahl einer Zone aufgefordert, sofern Sie nicht die Eigenschaft compute/zone mit gcloud config set compute/zone festgelegt haben. Weitere Informationen finden Sie unter Standard-Properties festlegen.

Eine vollständige Beschreibung der verfügbaren Flags finden Sie in der Dokumentation zum Befehl create. Sie können aber auch gcloud compute target-instances create --help eingeben.

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

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/targetInstances

Verwenden Sie dabei folgenden Anfragetext:

body = {
  "name": "example-target-instance",
  "instance": "zones/us-central1-f/instances/example-instance"
}

Informationen dazu, wie Sie Zielinstanzen auflisten, Daten zu einer bestimmten Zielinstanz erhalten und Zielinstanzen löschen, finden Sie auf den gcloud SDK- und API-Referenzseiten:

Protokollweiterleitung für private VIPs

Die Protokollweiterleitung kann für private regionale Weiterleitungsregeln mit privaten Adressen (RFC 1918) verwendet werden. Verwenden Sie diese Funktion, um private Weiterleitungsregeln zu konfigurieren, die TCP- oder UDP-Traffic an eine Zielinstanz in derselben Region senden. Sie können private regionale Weiterleitungsregeln auch leicht von Zielinstanzen auf Back-End-Dienste umstellen und umgekehrt.

Eine Zielinstanz enthält eine Back-End-Instanz, die den Traffic von einer oder mehreren Weiterleitungsregeln handhabt. Sie können nur jeweils eine private Weiterleitungsregel zum Verweisen auf eine Zielinstanz konfigurieren.

Private Weiterleitungsregel mit einer Zielinstanz (zum Vergrößern klicken)
Private Weiterleitungsregel mit einer Zielinstanz (zum Vergrößern klicken)

Verwenden Sie unter folgenden Umständen die Protokollweiterleitung mit privaten Weiterleitungsregeln:

  • Sie möchten eine einzelne Back-End-Instanz für Ihren Dienst erstellen und Systemdiagnosen und andere Aspekte selbst verwalten.
  • Sie möchten die private IP-Adresse einer Weiterleitungsregel beibehalten und die Zielinstanz ändern, auf die die Weiterleitungsregel verweist.
  • Sie möchten das Deployment dadurch stabil halten, dass Sie problemlos von einer einzelnen Instanz (Zielinstanz) zu mehreren Back-End-Instanzen (Back-End-Dienst) wechseln können, ohne die IP-Adresse der privaten Weiterleitungsregel zu ändern.

Übergang zwischen einer Zielinstanz und einem Back-End-Dienst

Sie können eine private Weiterleitungsregel so aktualisieren, dass der bisher an eine Zielinstanz mit einer einzelnen VM-Instanz geleitete Traffic an einen Back-End-Dienst geleitet wird oder umgekehrt. Wenn Sie eine private Weiterleitungsregel auf diese Weise aktualisieren, wird die IP-Adresse der Weiterleitungsregel beibehalten. Bestehende Verbindungen werden möglicherweise während dieses Übergangs unterbrochen, da die Änderung den Lastenausgleich für Back-End-Dienstinstanzen aktiviert oder deaktiviert.

Übergang von einem Back-End-Dienst zu einer Zielinstanz (zum Vergrößern klicken)
Übergang von einem Back-End-Dienst zu einer Zielinstanz (zum Vergrößern klicken)

Der Wechsel zwischen einer Zielinstanz und einem Back-End-Dienst ist nur mit privaten Weiterleitungsregeln möglich. Die Protokollweiterleitung mit externen Weiterleitungsregeln leistet dies nicht.

Ziel einer privaten Weiterleitungsregel aktualisieren

Wenn es sich bei Ihrer Weiterleitungsregel um eine private Weiterleitungsregel handelt, können Sie von einem Verweis auf eine Zielinstanz zu einem Verweis auf einen Back-End-Dienst wechseln:

    gcloud compute forwarding-rules set-target my-forwarding-rule
        --backend-service my-backend-service

Sie können dann zu einer Zielinstanz zurückkehren:

    gcloud compute forwarding-rules set-target my-forwarding-rule
        --target-instance my-target-instance

Fehlerbehebung bei der Protokollweiterleitung für private Weiterleitungsregeln

Beschränkung auf die Region

Die Protokollweiterleitung für private Weiterleitungsregeln ist ein regionales Produkt. Alle Clients und Zielinstanz-VMs müssen sich in derselben Region befinden.

Fehlermeldung: "An internal target instance can only be the target of one forwarding rule" (Eine interne Zielinstanz kann nur das Ziel einer Weiterleitungsregel sein)

Wenn die Fehlermeldung An internal target instance can only be the target of one forwarding rule (Eine interne Zielinstanz kann nur das Ziel einer Weiterleitungsregel sein) angezeigt wird, versuchen Sie gegebenenfalls, zwei Weiterleitungsregeln mit derselben Zielinstanz zu konfigurieren. Es können nicht mehrere Weiterleitungsregeln auf dieselbe Zielinstanz verweisen.

Einschränkungen

  • Wenn Sie Zielinstanzen mit privaten Weiterleitungsregeln verwenden, werden nur die Protokolle TCP und UDP unterstützt.

Limits

  • Sie können pro Netzwerk 100 private Weiterleitungsregeln konfigurieren, die auf Zielinstanzen verweisen.

  • Sie können 5 Ports pro private Weiterleitungsregel haben.

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

Feedback geben zu...

Compute Engine-Dokumentation