Internetverbindung für private VMs herstellen

Last reviewed 2024-05-10 UTC

In diesem Dokument werden Optionen zum Herstellen einer Verbindung zum und vom Internet mithilfe von Compute Engine-Ressourcen mit privaten IP-Adressen beschrieben. Das ist sowohl für Entwickler hilfreich, die Google Cloud-Dienste erstellen, als auch für Netzwerkadministratoren von Google Cloud-Umgebungen.

In dieser Anleitung wird davon ausgegangen, dass Sie mit dem Deployment von VPCs, mit Compute Engine sowie mit der grundlegenden TCP/IP-Netzwerkverwaltung vertraut sind.

Ziele

  • Erfahren Sie mehr über die Verbindungsmöglichkeiten zwischen privaten VMs außerhalb ihrer VPC.
  • Erstellen Sie eine Identity-Aware Proxy (IAP)-Instanz für TCP-Tunnel, die für interaktive Dienste wie SSH geeignet ist.
  • Erstellen Sie eine Cloud NAT-Instanz, damit VMs ausgehende Verbindungen zum Internet herstellen können.
  • Konfigurieren Sie einen HTTP-Load-Balancer, um eingehende Verbindungen vom Internet zu Ihren VMs zu unterstützen.

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:

Sie können mithilfe des Preisrechners der Google Cloud Platform eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen. Die Kosten für die Ausführung dieser Anleitung sollten laut unseren Berechnungen unter 5 US-Dollar pro Tag liegen.

Vorbereitung

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

Einführung

Private IP-Adressen bieten gegenüber öffentlichen (externen) IP-Adressen eine Reihe von Vorteilen wie etwa:

  • Reduzierte Angriffsfläche: Durch das Entfernen externer IP-Adressen von VMs wird es für Angreifer schwieriger, auf die VMs zuzugreifen und potenzielle Sicherheitslücken auszunutzen.
  • Erhöhte Flexibilität: Durch die Einführung einer Abstraktionsebene, z. B. eines Load-Balancers oder eines NAT-Dienstes, lassen sich Dienste im Vergleich zu statischen externen IP-Adressen zuverlässiger und flexibler liefern.

Diese Lösung beschreibt die in der folgenden Tabelle angegebenen drei Szenarien:

Interaktiv Abrufen Bereit
Von einem Remotehost wird mit IAP für TCP eine direkte SSH-Verbindung zu einer VM initiiert.

Beispiel: Remoteverwaltung mit SSH oder RDP

Von einer VM wird über Cloud NAT eine Verbindung zu einem externen Host im Internet initiiert.

Beispiel: Betriebssystemaktualisierungen, externe APIs

Von einem Remote-Host wird über einen globalen Google Cloud-Load-Balancer eine Verbindung zu einer VM initiiert.

Beispiel: Anwendungs-Front-Ends, WordPress

In manchen Umgebungen kommt möglicherweise nur eines dieser Szenarien vor. Häufig sind jedoch alle erforderlich, was auf der Google Cloud vollständig unterstützt wird.

In den folgenden Abschnitten wird eine Umgebung mit mehreren Regionen mit einem HTTP-Dienst mit Load-Balancing beschrieben, der von zwei VMs in zwei Regionen unterstützt wird. Diese VMs verwenden Cloud NAT für die ausgehende Kommunikation. Für die Verwaltung sind die VMs über eine SSH-Sitzung zugänglich, die über IAP getunnelt wird.

Das folgende Diagramm gibt einen Überblick über alle drei Anwendungsfälle sowie die relevanten Komponenten.

Architektur der Lösung, die den Datenfluss vom Client über den Load-Balancer zu VM-Instanzen sowie Cloud NAT für den Zugriff von den Instanzen auf das Internet und IAP für den direkten SSH-Zugriff von einem Client auf die Instanzen zeigt.

VM-Instanzen erstellen

Zu Beginn der Anleitung erstellen Sie insgesamt vier VM-Instanzen – zwei Instanzen pro Region in zwei verschiedenen Regionen. Sie weisen allen Instanzen dasselbe Tag zu. Es wird später von einer Firewallregel verwendet, damit eingehender Traffic die Instanzen erreichen kann.

Im folgenden Diagramm sehen Sie die von Ihnen erstellten und auf zwei Zonen verteilten VM-Instanzen und Instanzgruppen.

Architektur der Lösung, in der die vier VM-Instanzen in zwei Zonen hervorgehoben sind.

Das Startskript, das Sie jeder Instanz hinzufügen, installiert Apache und erstellt für jede Instanz eine eigene Startseite.

Für das Verfahren werden sowohl die Google Cloud Console als auch gcloud-Befehle verwendet. Die gcloud-Befehle lassen sich am einfachsten in Cloud Shell ausführen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:

    ZUR SEITE "VM-INSTANZEN"

  2. Klicken Sie auf Instanz erstellen.

  3. Legen Sie als Name www-1 fest.

  4. Setzen Sie Zone auf us-central1-b.

  5. Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten.

  6. Klicken Sie auf Netzwerke und nehmen Sie die folgenden Einstellungen vor:

    • Geben Sie für HTTP-Traffic im Feld Netzwerk-Tags den Wert http-tag ein.
    • Klicken Sie unter Netzwerkschnittstellen auf die Schaltfläche .
    • Wählen Sie unter Externe IP-Adresse die Option Keine aus.
  7. Klicken Sie auf Verwaltung und legen Sie für das Startskript Folgendes fest:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 1</h1></body></html>' | sudo tee /var/www/html/index.html
    
  8. Klicken Sie auf Erstellen.

  9. Erstellen Sie www-2 mit denselben Einstellungen, legen Sie jedoch für das Startskript Folgendes fest:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 2<h1></body></html>' | sudo tee /var/www/html/index.html
    
  10. Erstellen Sie www-3 mit denselben Einstellungen, setzen Sie jedoch Zone auf europe-west1-b und legen Sie für das Startskript Folgendes fest:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 3</h1></body></html>' | sudo tee /var/www/html/index.html
    
  11. Erstellen Sie www-4 mit denselben Einstellungen, setzen Sie jedoch Zone auf europe-west1-b und legen Sie für das Startskript Folgendes fest:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 4</h1></body></html>' | sudo tee /var/www/html/index.html
    

gcloud

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. Erstellen Sie in us-central1-b eine Instanz mit dem Namen www-1 und einem einfachen Startskript:

    gcloud compute instances create www-1 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-1</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  3. Erstellen Sie in us-central1-b eine Instanz mit dem Namen www-2:

    gcloud compute instances create www-2 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-2</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  4. Erstellen Sie eine Instanz mit dem Namen www-3, diesmal in europe-west1-b:

    gcloud compute instances create www-3 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone europe-west1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-3</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  5. Erstellen Sie eine Instanz mit dem Namen www-4 und zwar ebenfalls in europe-west1-b:

    gcloud compute instances create www-4 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone europe-west1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-4</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    

Terraform

  1. Öffnen Sie Cloud Shell:

    Zu Cloud Shell

  2. Klonen Sie das Repository aus GitHub:

    git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform

  3. Wechseln Sie vom Arbeitsverzeichnis in das Repository-Verzeichnis:

    cd iap

  4. Installieren Sie Terraform.

  5. Ersetzen Sie [YOUR-ORGANIZATION-NAME] in der Datei scripts/set_env_vars.sh durch den Namen Ihrer Google Cloud-Organisation.

  6. Legen Sie Umgebungsvariablen fest:

    source scripts/set_env_vars.sh

  7. Wenden Sie die Terraform-Konfiguration an:

    terraform apply

IAP-Tunnel für die Interaktion mit Instanzen konfigurieren

Für die Anmeldung bei VM-Instanzen stellen Sie mit Tools wie SSH oder RDP eine Verbindung zu den Instanzen her. In der Konfiguration, die Sie in dieser Anleitung erstellen, können Sie keine direkte Verbindung zu Instanzen herstellen. Sie können jedoch die TCP-Weiterleitung in IAP verwenden, um den Remotezugriff für diese interaktiven Muster zu ermöglichen.

Für diese Anleitung verwenden Sie SSH.

In diesem Abschnitt tun Sie Folgendes:

  1. Sie stellen über den IAP-Tunnel eine Verbindung zu einer Compute Engine-Instanz her.
  2. Sie fügen einen zweiten Nutzer mit IAP-Tunnelberechtigung in IAM hinzu.

Das folgende Diagramm zeigt die Architektur, die Sie in diesem Abschnitt erstellen. Die grauen Bereiche werden in anderen Teilen dieser Anleitung erläutert.

Architektur der Lösung, die zeigt, dass IAP den SSH-Zugriff zwischen einem Client und den Instanzen ermöglicht.

IAP-Einschränkungen

  • Bandbreite: Das TCP-Weiterleitungsfeature von IAP ist nicht für die Massenübertragung von Daten vorgesehen. IAP behält sich das Recht vor, die Rate von Nutzern, die unserer Ansicht nach diesen Dienst missbrauchen, zu begrenzen.
  • Verbindungsdauer: IAP trennt keine aktiven Sitzungen, sofern es nicht zu Wartungszwecken erforderlich ist.
  • Protokoll: IAP für TCP-Weiterleitung unterstützt UDP nicht.

Firewallregeln zum Aktivieren des Tunnelings erstellen

Damit Sie über SSH eine Verbindung zu den Instanzen herstellen können, müssen Sie einen entsprechenden Port der Firewall öffnen. IAP-Verbindungen stammen von einem bestimmten Satz von IP-Adressen (35.235.240.0/20). Daher können Sie die Regel auf diesen CIDR-Bereich beschränken.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Firewall-Richtlinien auf.

    ZUR SEITE "FIREWALL-RICHTLINIEN"

  2. Klicken Sie auf Firewallregel erstellen.

  3. Legen Sie als Name allow-ssh-from-iap fest.

  4. Behalten Sie für VPC-Netzwerk die Option default bei.

  5. Wählen Sie unter Ziele Angegebene Ziel-Tags aus.

  6. Legen Sie http-tag als Ziel-Tags fest.

  7. Belassen Sie Quellfilter auf IP-Bereiche.

  8. Legen Sie für Quell-IP-Bereiche den Wert 35.235.240.0/20 fest.

  9. Legen Sie für Zulässige Protokolle und Ports tcp:22 fest.

  10. Klicken Sie auf Erstellen.

    Es kann einen Moment dauern, bis die neue Firewallregel in der Konsole zu sehen ist.

gcloud

  • Erstellen Sie eine Firewallregel mit dem Namen allow-ssh-from-iap:

    gcloud compute firewall-rules create allow-ssh-from-iap \
        --source-ranges 35.235.240.0/20 \
        --target-tags http-tag \
        --allow tcp:22
    

Terraform

  1. Kopieren Sie die Terraform-Datei der Firewallregeln in das aktuelle Verzeichnis:

    cp iap/vpc_firewall_rules.tf .

  2. Wenden Sie die Terraform-Konfiguration an:

    terraform apply

Tunneling testen

  • Stellen Sie in Cloud Shell mit IAP eine Verbindung zur Instanz www-1 her:

    gcloud compute ssh www-1 \
        --zone us-central1-b \
        --tunnel-through-iap
    

Wenn die Verbindung erfolgreich ist, haben Sie eine SSH-Sitzung, die über IAP direkt zur privaten VM getunnelt wird.

Zusätzlichen Nutzern Zugriff gewähren

Wenn Sie eine Verbindung zu VM-Instanzen herstellen, verwendet IAP Ihre vorhandenen Projektrollen und -berechtigungen. Standardmäßig sind die Inhaber von Instanzen die einzigen Nutzer mit der Rolle Nutzer IAP-gesicherter Tunnel. Wenn Sie anderen Nutzern den Zugriff auf Ihre VMs über IAP-Tunnel ermöglichen möchten, weisen Sie die Rolle diesen Nutzern zu.

  1. Wechseln Sie in der Google Cloud Console zu Sicherheit > Identity-Aware Proxy:

    IAP-Option auf der Seite &quot;Sicherheit&quot; der Google Cloud Console.

    Wenn Sie darauf hingewiesen werden, dass Sie den OAuth-Zustimmungsbildschirm konfigurieren müssen, ignorieren Sie die Nachricht. Sie ist für IAP für TCP nicht relevant.

  2. Klicken Sie auf den Tab SSH- und TCP-Ressourcen.

  3. Wählen Sie die von Ihnen erstellten VMs aus:

    Konsole mit vier ausgewählten Instanzen.

  4. Klicken Sie rechts auf Hauptkonto hinzufügen.

  5. Fügen Sie die Nutzer hinzu, denen Sie Berechtigungen erteilen möchten. Wählen Sie die Rolle Nutzer IAP-gesicherter Tunnel aus und klicken Sie dann auf Speichern.

Fazit

Sie können jetzt mithilfe von SSH eine Verbindung zu Ihren Instanzen herstellen, um diese zu verwalten oder Fehler zu beheben.

Viele Anwendungen müssen ausgehende Verbindungen herstellen, um Patches oder Ressourcen herunterzuladen oder eine Verbindung zu Partnern herzustellen. Im nächsten Abschnitt konfigurieren Sie Cloud NAT, damit Ihre VMs diese Ressourcen erreichen können.

Cloud NAT zum Abrufen bereitstellen

Mit dem Cloud NAT-Dienst können Google Cloud-VM-Instanzen ohne externe IP-Adressen eine Verbindung zum Internet herstellen. Cloud NAT implementiert ausgehenden NAT-Traffic in Verbindung mit einer Standardroute, damit die Instanzen auf das Internet zugreifen können. Eingehender NAT-Traffic wird nicht implementiert. Hosts außerhalb Ihres VPC-Netzwerks können nur auf die von Ihren Instanzen initiierten Verbindungen reagieren und können keine eigenen Verbindungen zu Ihren Instanzen über Cloud NAT initiieren. NAT wird nicht für Traffic innerhalb von Google Cloud verwendet.

Cloud NAT ist eine regionale Ressource. Sie können sie so konfigurieren, dass Traffic aus allen primären und sekundären IP-Adressbereichen von Subnetzen in einer Region oder nur aus bestimmten Bereichen zugelassen wird.

In diesem Abschnitt konfigurieren Sie in jeder der zuvor verwendeten Regionen ein Cloud NAT-Gateway. Das folgende Diagramm zeigt die Architektur, die Sie in diesem Abschnitt erstellen. Die grauen Bereiche werden in anderen Teilen dieser Anleitung erläutert.

Architektur der Lösung, die Cloud NAT-Instanzen zwischen den Instanzen und dem Internet zeigt.

NAT-Konfiguration mit Cloud Router erstellen

Sie müssen die Cloud Router-Instanz in derselben Region wie die Instanzen erstellen, die Cloud NAT verwenden. Cloud NAT wird nur zum Platzieren von NAT-Informationen auf den VMs verwendet. Es wird nicht in das eigentliche Cloud NAT-Gateway eingebunden.

Diese Konfiguration ermöglicht allen Instanzen in der Region, Cloud NAT für alle primären und Alias-IP-Bereiche zu verwenden. Außerdem werden die externen IP-Adressen für das NAT-Gateway automatisch zugeordnet. Weitere Informationen finden Sie in der Dokumentation zu gcloud compute routers.

Console

  1. Rufen Sie die Seite Cloud NAT auf:

    ZUR SEITE "CLOUD NAT"

  2. Klicken Sie auf Erste Schritte oder NAT-Gateway erstellen.

  3. Legen Sie Name des Gateways auf nat-config fest.

  4. Legen Sie VPC-Netzwerk auf default fest.

  5. Legen Sie Region auf us-central1 fest.

  6. Wählen Sie unter Cloud Router die Option Neuen Router erstellen aus und führen Sie dann die folgenden Schritte aus:

    • Legen Sie als Name nat-router-us-central1 fest.
    • Klicken Sie auf Erstellen.
  7. Klicken Sie auf Erstellen.

  8. Wiederholen Sie den Vorgang, diesmal jedoch mit folgenden Werten:

    • Name: nat-router-europe-west1
    • Region: europe-west1

gcloud

  1. Erstellen Sie in jeder Region Cloud Router-Instanzen:

    gcloud compute routers create nat-router-us-central1 \
        --network default \
        --region us-central1
    
    gcloud compute routers create nat-router-europe-west1 \
        --network default \
        --region europe-west1
    
  2. Konfigurieren Sie die Router für Cloud NAT:

    gcloud compute routers nats create nat-config \
        --router-region us-central1 \
        --router nat-router-us-central1 \
        --nat-all-subnet-ip-ranges \
         --auto-allocate-nat-external-ips
    
    gcloud compute routers nats create nat-config \
        --router-region europe-west1 \
        --router nat-router-europe-west1 \
        --nat-all-subnet-ip-ranges \
        --auto-allocate-nat-external-ips
    

Terraform

  1. Kopieren Sie die NAT-Konfigurationsdatei für Terraform in das aktuelle Verzeichnis:

    cp nat/vpc_nat_gateways.tf .

  2. Wenden Sie die Terraform-Konfiguration an:

    terraform apply

Cloud NAT-Konfiguration testen

Sie können jetzt testen, ob Sie ausgehende Anfragen von Ihren VM-Instanzen an das Internet senden können.

  1. Warten Sie bis zu 3 Minuten, bis die NAT-Konfiguration für die VM angezeigt wird.
  2. Stellen Sie in Cloud Shell über den erstellten Tunnel eine Verbindung zur Instanz her:

    gcloud compute ssh www-1 --tunnel-through-iap
    
  3. Wenn Sie bei der Instanz angemeldet sind, stellen Sie mit dem Befehl curl eine ausgehende Anfrage:

    curl example.com
    

    Die folgende Ausgabe wird angezeigt:

    <html>
    <head>
    <title>Example Domain</title>
    ...
    ...
    ...
    </head>
    
    <body>
    <div>
        <h1>Example Domain</h1>
        <p>This domain is established to be used for illustrative examples in documents.
            You may use this domain in examples without prior coordination or asking for
            permission.
        </p>
        <p><a href="http://www.iana.org/domains/example">More information...</a></p>
    </div>
    </body>
    </html>
    
    

Wenn der Befehl erfolgreich ausgeführt wurde, können die VMs über Cloud NAT eine Verbindung zum Internet herstellen.

Fazit

Ihre Anwendungen können nun ausgehende Verbindungen herstellen, um Patches oder Ressourcen herunterzuladen oder eine Verbindung zu Partnern herzustellen.

Im nächsten Abschnitt fügen Sie Ihrer Bereitstellung einen Load-Balancer hinzu und konfigurieren ihn so, dass Remote-Clients Anfragen an Ihre Server initiieren können.

HTTP-Dienst mit Load-Balancing für die Bereitstellung erstellen

Die Nutzung von Cloud Load Balancing bietet zahlreiche Vorteile für Ihre Anwendung. Dadurch ist ein nahtloses, skalierbares Load-Balancing von über einer Million Abfragen pro Sekunde möglich. Sie können damit auch den SSL-Overhead der VMs reduzieren, Abfragen an die hinsichtlich des Standorts und der Verfügbarkeit beste Region für Ihre Nutzer weiterleiten und moderne Protokolle wie HTTP/2 und QUIC unterstützen.

Im Rahmen dieser Anleitung profitieren Sie von einer weiteren wichtigen Funktion: globalen Anycast-IP-Verbindungsproxys. Dieses Feature stellt eine einzelne öffentliche IP-Adresse bereit, die am global verteilten Netzwerkrand von Google beendet wird. Clients können dann eine Verbindung zu Ressourcen herstellen, die auf privaten IP-Adressen an einem beliebigen Ort in Google Cloud gehostet werden. Diese Konfiguration schützt Instanzen vor DDoS-Angriffen und direkten Angriffen. Außerdem werden damit für zusätzliche Sicherheit Features wie Google Cloud Armor unterstützt.

In diesem Abschnitt der Anleitung führen Sie folgende Schritte aus:

  1. Setzen Sie die VM-Instanzen zurück, um den Apache-Webserver zu installieren.
  2. Sie erstellen eine Firewallregel, um den Zugriff von Load-Balancern zuzulassen.
  3. Sie weisen dem Load-Balancer statische, globale IPv4- und IPv6-Adressen zu.
  4. Sie erstellen eine Instanzgruppe für Ihre Instanzen.
  5. Sie beginnen mit dem Senden von Traffic an Ihre Instanzen.

Das folgende Diagramm zeigt die Architektur, die Sie in diesem Abschnitt erstellen. Die grauen Bereiche werden in anderen Teilen dieser Anleitung erläutert.

Architektur mit vier Instanzen in zwei Instanzgruppen

VM-Instanzen zurücksetzen

Wenn Sie die VM-Instanzen zuvor in dieser Anleitung erstellt haben, hatten sie keinen Zugriff auf das Internet, da keine externe IP-Adresse zugewiesen und Cloud NAT nicht konfiguriert wurde. Daher konnte das Startskript, mit dem Apache installiert wird, nicht erfolgreich abgeschlossen werden.

Am einfachsten führen Sie die Startskripts noch einmal aus, indem Sie diese Instanzen zurücksetzen, damit der Apache-Webserver im nächsten Abschnitt installiert und verwendet werden kann.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:

    Zu „VM-Instanzen“

  2. Wählen Sie www-1, www-2, www-3 und www-4 aus.

  3. Klicken Sie oben auf der Seite auf Zurücksetzen.

    Wenn die Schaltfläche Zurücksetzen nicht angezeigt wird, klicken Sie auf Weitere Aktionen und wählen Sie Zurücksetzen aus.

  4. Bestätigen Sie das Zurücksetzen der vier Instanzen, indem Sie im Dialogfeld auf Zurücksetzen klicken.

gcloud

  1. Setzen Sie die vier Instanzen zurück:

    gcloud compute instances reset www-1 \
        --zone us-central1-b
    
    gcloud compute instances reset www-2 \
        --zone us-central1-b
    
    gcloud compute instances reset www-3 \
        --zone europe-west1-b
    
    gcloud compute instances reset www-4 \
        --zone europe-west1-b
    

Firewall öffnen

Als Nächstes erstellen Sie eine Firewallregel, die Traffic von den Load-Balancern zu Ihren VM-Instanzen zulässt. Sie erlaubt Traffic aus dem Google Cloud-Adressbereich, der von Load-Balancern und für Systemdiagnosen verwendet wird. Die Firewallregel nutzt das zuvor erstellte Tag http-tag. Sie lässt zu, dass Traffic über den angegebenen Port an Instanzen weitergeleitet wird, die dieses Tag haben.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Firewall-Richtlinien auf.

    ZUR SEITE "FIREWALL-RICHTLINIEN"

  2. Klicken Sie auf Firewallregel erstellen.

  3. Legen Sie als Name allow-lb-and-healthcheck fest.

  4. Behalten Sie für das VPC-Netzwerk default bei.

  5. Wählen Sie unter Ziele Angegebene Ziel-Tags aus.

  6. Legen Sie http-tag als Ziel-Tags fest.

  7. Belassen Sie Quellfilter auf IP-Bereiche.

  8. Legen Sie für Quell-IP-Bereiche die Werte 130.211.0.0/22 und 35.191.0.0/16 fest.

  9. Legen Sie für Zulässige Protokolle und Ports tcp:80 fest.

  10. Klicken Sie auf Erstellen.

    Es kann einen Moment dauern, bis die neue Firewallregel in der Konsole zu sehen ist.

gcloud

  • Erstellen Sie eine Firewallregel mit dem Namen allow-lb-and-healthcheck:

    gcloud compute firewall-rules create allow-lb-and-healthcheck \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --target-tags http-tag \
         --allow tcp:80
    

Terraform

  1. Kopieren Sie die Konfigurationsdateien des Terraform-Load-Balancing in das aktuelle Verzeichnis:

    cp lb/* .

  2. Wenden Sie die Terraform-Konfiguration an:

    terraform apply

Load-Balancern externe IP-Adresse zuordnen

Wenn Sie Traffic zum Internet haben, müssen Sie dem Load-Balancer eine externe Adresse zuordnen. Sie können eine IPv4-Adresse, eine IPv6-Adresse oder beides zuweisen. In diesem Abschnitt reservieren Sie statische IPv4- und IPv6-Adressen, die dem DNS hinzugefügt werden können.

Für öffentliche IP-Adressen fallen keine zusätzlichen Gebühren an, da sie mit einem Load-Balancer verwendet werden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf:

    ZUR SEITE "EXTERNE IP-ADRESSEN"

  2. Klicken Sie auf Statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.

  3. Legen Sie als Name lb-ip-cr fest.

  4. Behalten Sie für Typ die Einstellung Global bei.

  5. Klicken Sie auf Reservieren.

  6. Klicken Sie erneut auf Statische Adresse reservieren, um eine IPv6-Adresse zu reservieren.

  7. Legen Sie als Name lb-ipv6-cr fest.

  8. Setzen Sie die IP-Version auf IPv6.

  9. Behalten Sie für Typ die Einstellung Global bei.

  10. Klicken Sie auf Reservieren.

gcloud

  1. Erstellen Sie eine statische IP-Adresse mit dem Namen lb-ip-cr für IPv4:

    gcloud compute addresses create lb-ip-cr \
        --ip-version=IPV4 \
        --global
    
  2. Erstellen Sie eine statische IP-Adresse mit dem Namen lb-ipv6-cr für IPv6:

    gcloud compute addresses create lb-ipv6-cr \
        --ip-version=IPV6 \
        --global
    

Instanzgruppen erstellen und Instanzen hinzufügen

Für Google Cloud-Load-Balancer sind Instanzgruppen erforderlich, die als Back-Ends für den Traffic fungieren. In dieser Anleitung verwenden Sie der Einfachheit halber nicht verwaltete Instanzgruppen. Sie können jedoch auch verwaltete Instanzgruppen verwenden, um Features wie Autoscaling, automatische Reparaturen, regionale Deployments (für mehrere Zonen) und automatische Aktualisierungen zu nutzen.

In diesem Abschnitt erstellen Sie für jede der von Ihnen verwendeten Zonen eine Instanzgruppe.

Console

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

    ZUR SEITE "INSTANZGRUPPEN"

  2. Klicken Sie auf Instanzgruppe erstellen.

  3. Klicken Sie links auf Neue nicht verwaltete Instanzgruppe.

  4. Legen Sie als Name us-resources-w fest.

  5. Legen Sie Region auf us-central1 fest.

  6. Legen Sie für Zone den Wert us-central1-b fest.

  7. Wählen Sie Netzwerk (Standardeinstellung) und Subnetzwerk (Standardeinstellung) aus.

  8. Führen Sie unter VM-Instanzen die folgenden Schritte aus:

    • Klicken Sie auf Instanz hinzufügen und wählen Sie dann www-1 aus.
    • Klicken Sie noch einmal auf Instanz hinzufügen und wählen Sie dann www-2 aus.
    • Klicken Sie auf Erstellen.
  9. Wiederholen Sie diesen Vorgang, um eine zweite Instanzgruppe mit folgenden Werten zu erstellen:

    • Name: europe-resources-w
    • Zone: europe-west1-b
    • Instanzen: www-3 und www-4
  10. Prüfen Sie auf der Seite Instanzgruppen ob Sie je zwei Instanzgruppen mit zwei Instanzen haben.

gcloud

  1. Erstellen Sie die Instanzgruppe us-resources-w:

    gcloud compute instance-groups unmanaged create us-resources-w \
        --zone us-central1-b
    
  2. Fügen Sie die Instanzen www-1 und www-2 hinzu:

    gcloud compute instance-groups unmanaged add-instances us-resources-w \
        --instances www-1,www-2 \
        --zone us-central1-b
    
  3. Erstellen Sie die Instanzgruppe europe-resources-w:

    gcloud compute instance-groups unmanaged create europe-resources-w \
        --zone europe-west1-b
    
  4. Fügen Sie die Instanzen www-3 und www-4 hinzu:

    gcloud compute instance-groups unmanaged add-instances europe-resources-w \
        --instances www-3,www-4 \
        --zone europe-west1-b
    

Load-Balancer-Dienst konfigurieren

Die Funktionalität des Lastenausgleichsmoduls erfordert, dass mehrere Dienste angeschlossen sind. In diesem Abschnitt richten Sie die Dienste ein und verbinden sie. Sie erstellen folgende Dienste:

  • Benannte Ports, die der Load-Balancer verwendet, um Traffic an Ihre Instanzgruppen zu leiten.
  • Eine Systemdiagnose, die prüft, ob Ihre Instanzen fehlerfrei sind. Der Load-Balancer sendet Traffic nur an fehlerfreie Instanzen.
  • Back-End-Dienste, die die Nutzung und Integrität der Instanzen überwachen. Backend-Dienste sind darüber informiert, ob die Instanzen der Instanzgruppe Traffic empfangen können. Wenn die Instanzen keinen Traffic empfangen können, leitet der Load-Balancer den Traffic um, sofern andere Instanzen ausreichend Kapazität haben. Ein Back-End definiert die Kapazität der enthaltenen Instanzgruppen (maximale CPU-Auslastung oder maximale Abfragen pro Sekunde).
  • Eine URL-Zuordnung, die die URL der Anfrage analysiert und Anfragen basierend auf dem Host und dem Pfad der Anfrage-URL an bestimmte Back-End-Dienste weiterleiten kann. In dieser Anleitung enthält die URL-Zuordnung nur die Standardzuordnung, da Sie keine inhaltsbasierte Weiterleitung verwenden.
  • Ein Zielproxy, der die Anfrage vom Nutzer empfängt und ihn an die URL-Zuordnung weiterleitet.
  • Zwei globale Weiterleitungsregeln, jeweils eine für IPv4 und IPv6, die die globalen externen IP-Adressressourcen beinhalten. Mit den globalen Weiterleitungsregeln werden die eingehenden Anfragen an den Zielproxy gesendet.

Load-Balancer erstellen

In diesem Abschnitt erstellen Sie den Load-Balancer und konfigurieren zum Verarbeiten des Traffics einen standardmäßigen Back-End-Dienst. Außerdem erstellen Sie eine Systemdiagnose.

Console

Konfiguration starten

  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.

    Load-Balancing aufrufen

  2. Klicken Sie auf Load-Balancer erstellen.
  3. Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
  4. Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
  5. Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
  6. Wählen Sie unter Generation des Load Balancers die Option Globaler externer Application Load Balancer aus und klicken Sie auf Weiter.
  7. Klicken Sie auf Konfigurieren.

Grundlegende Konfiguration

  1. Setzen Sie Name des Load-Balancers auf web-map.

Load-Balancer konfigurieren

  1. Klicken Sie im linken Bereich der Seite Globalen externen Anwendungs-Load-Balancer erstellen auf Backend-Konfiguration.
  2. Wählen Sie in der Liste Backend-Dienste und Backend-Buckets erstellen oder auswählen die Option Backend-Dienste und anschließend Backend-Dienst erstellen aus. Daraufhin sollten Sie das Dialogfeld Backend-Dienst erstellen sehen.
  3. Legen Sie als Name web-map-backend-service fest.
  4. Legen Sie das Protokoll fest. Behalten Sie für das HTTP-Protokoll die Standardwerte bei.
  5. Wählen Sie für den Back-End-Typ die Option Instanzgruppen aus.
  6. Legen Sie unter Back-Ends für Instanzgruppe us-resources-w fest.
  7. Klicken Sie auf Back-End hinzufügen.
  8. Wählen Sie die Instanzgruppe europe-resources-w aus und führen Sie dann die folgenden Schritte aus:
    • Prüfen Sie, ob die Portnummern für HTTP-Traffic zwischen dem Load-Balancer und den Instanzen auf 80 gesetzt sind.
    • Behalten Sie in den restlichen Feldern die Standardwerte bei.
  9. Klicken Sie auf Fertig.
  10. Wählen Sie unter Systemdiagnose die Option Systemdiagnose erstellen oder Weitere Systemdiagnose erstellen aus.
  11. Legen Sie die folgenden Parameter für die Systemdiagnose fest:
    • Name: http-basic-check
    • Protokoll: HTTP
    • Port: 80
  12. Klicken Sie auf Erstellen.

gcloud

  1. Legen Sie für alle Instanzgruppen einen HTTP-Dienst fest und ordnen Sie dem entsprechenden Port einen Portnamen zu:

    gcloud compute instance-groups unmanaged set-named-ports us-resources-w \
        --named-ports http:80 \
        --zone us-central1-b
    
    gcloud compute instance-groups unmanaged set-named-ports europe-resources-w \
        --named-ports http:80 \
        --zone europe-west1-b
    
  2. Erstellen Sie eine Systemdiagnose.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  3. Erstellen Sie einen Backend-Dienst.

    gcloud compute backend-services create web-map-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    

    Sie setzen das Flag --protocol auf HTTP, da Sie über HTTP zu den Instanzen gelangen. Für die Systemdiagnose verwenden Sie die zuvor erstellte Systemdiagnose http-basic-check.

  4. Fügen Sie die Instanzgruppen den Back-End-Diensten als Back-Ends hinzu.

    gcloud compute backend-services add-backend web-map-backend-service \
        --balancing-mode UTILIZATION \
        --max-utilization 0.8 \
        --capacity-scaler 1 \
        --instance-group us-resources-w \
        --instance-group-zone us-central1-b \
        --global
    
    gcloud compute backend-services add-backend web-map-backend-service \
        --balancing-mode UTILIZATION \
        --max-utilization 0.8 \
        --capacity-scaler 1 \
        --instance-group europe-resources-w \
        --instance-group-zone europe-west1-b \
        --global
    

Host- und Pfadregeln festlegen

Console

  • Klicken Sie im linken Bereich der Seite Globalen externen Anwendungs-Load-Balancer erstellen auf Host- und Pfadregeln.

    Für diese Anleitung brauchen Sie keine Host- oder Pfadregeln zu konfigurieren, da der gesamte Traffic der Standardregel unterliegt. Sie können somit die vorab ausgefüllten Standardwerte übernehmen.

gcloud

  1. Erstellen Sie eine Standard-URL-Zuordnung, die alle eingehenden Anfragen an alle Ihre Instanzen weiterleitet:

    gcloud compute url-maps create web-map \
        --default-service web-map-backend-service
    
  2. Erstellen Sie einen Ziel-HTTP-Proxy, um Anfragen an Ihre URL-Zuordnung weiterzuleiten:

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map web-map
    

Frontend konfigurieren und Einrichtung abschließen

Console

  1. Klicken Sie im linken Bereich der Seite Globalen externen Anwendungs-Load-Balancer erstellen auf Frontend-Konfiguration.
  2. Legen Sie als Name http-cr-rule fest.
  3. Legen Sie für Protokoll den Wert HTTP fest.
  4. Legen Sie IPv4 als IP-Version fest.
  5. Wählen Sie in der Liste IP-Adresse die zuvor erstellte IP-Adresse lb-ip-cr aus.
  6. Prüfen Sie, ob der Port auf 80 gesetzt ist.
  7. Klicken Sie auf Fertig.
  8. Klicken Sie auf Frontend-IP und Port hinzufügen.
  9. Legen Sie als Name http-cr-ipv6-rule fest.
  10. Wählen Sie für Protokoll die Option HTTP aus.
  11. Legen Sie IPv6 als IP-Version fest.
  12. Wählen Sie in der Liste IP-Adresse die andere zuvor erstellte IP-Adresse lb-ipv6-cr aus.
  13. Prüfen Sie, ob der Port auf 80 gesetzt ist.
  14. Klicken Sie auf Erstellen.
  15. Klicken Sie auf Fertig.
  16. Klicken Sie im linken Bereich der Seite Globalen externen Application Load Balancer erstellen auf Prüfen und abschließen.
  17. Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
  18. Wenn die Einstellungen korrekt sind, klicken Sie auf Erstellen.

    Sie werden zur Seite "Load-Balancing" zurückgeleitet. Nachdem der Load-Balancer erstellt wurde, weist ein grünes Häkchen darauf hin, dass er ausgeführt wird.

gcloud

  1. Rufen Sie die statischen IP-Adressen ab, die Sie für den Load-Balancer erstellt haben. Notieren Sie die Adressen, da Sie sie im nächsten Schritt benötigen.

    gcloud compute addresses list
    
  2. Erstellen Sie zwei globale Weiterleitungsregeln, eine für IPv4 und eine für IPv6, um eingehende Anfragen an den Proxy weiterzuleiten. Ersetzen Sie lb_ip_address im Befehl durch die von Ihnen erstellte statische IPv4-Adresse und lb_ipv6_address durch die von Ihnen erstellte IPv6-Adresse.

    gcloud compute forwarding-rules create http-cr-rule \
        --address lb_ip_address \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80
    
    gcloud compute forwarding-rules create http-cr-ipv6-rule \
        --address lb_ipv6_address \
        --global \
        --target-http-proxy http-lb-proxy \
       --ports 80
    

    Nachdem Sie die globalen Weiterleitungsregeln erstellt haben, kann es mehrere Minuten dauern, bis die Konfiguration verfügbar ist.

Konfiguration testen

In diesem Abschnitt senden Sie eine HTTP-Anfrage an Ihre Instanz, um zu überprüfen, ob die Load-Balancing-Konfiguration funktioniert.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf:

    ZUR SEITE "LOAD-BALANCING"

  2. Wählen Sie den Load-Balancer mit dem Namen web-map aus, um Details zum soeben erstellten Load-Balancer aufzurufen.

  3. Prüfen Sie im Abschnitt Back-End der Seite in der Spalte Fehlerfrei, ob die Instanzen fehlerfrei sind.

    Es kann etwas dauern, bis angezeigt wird, ob die Instanzen fehlerfrei sind.

  4. Wenn angegeben wird, dass die Instanzen fehlerfrei sind, kopieren Sie den Wert IP:Port im Abschnitt Frontend und fügen ihn in Ihrem Browser ein.

    Im Browser sehen Sie jetzt die Seite mit den Standardinhalten.

gcloud

  1. Rufen Sie die IP-Adressen Ihrer globalen Weiterleitungsregeln ab und notieren Sie sie für den nächsten Schritt:

    gcloud compute forwarding-rules list
    
  2. Verwenden Sie den Befehl curl, um die Antwort für verschiedene URLs Ihrer Dienste zu testen. Testen Sie IPv4 und IPv6. Bei IPv6 müssen Sie die Adresse in [] setzen, z. B. http://[2001:DB8::]/.

    curl http://ipv4-address
    
    curl -g -6 "http://[ipv6-address]/"
    

Fazit

Die VMs können jetzt Traffic zum Internet bereitstellen und Daten aus dem Internet abrufen. Sie können zu Verwaltungszwecken auch über SSH darauf zugreifen. All diese Funktionalität wird nur mit privaten IP-Adressen erreicht. Sie tragen dazu bei, sie vor direkten Angriffen zu schützen, da die IP-Adressen nicht über das Internet erreichbar sind.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

Projekt löschen

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte