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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
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.
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.
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
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:
Klicken Sie auf Instanz erstellen.
Legen Sie als Name
www-1
fest.Setzen Sie Zone auf us-central1-b.
Klicken Sie auf Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten.
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 edit.
- Wählen Sie unter Externe IP-Adresse die Option Keine aus.
- Geben Sie für HTTP-Traffic im Feld Netzwerk-Tags den Wert
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
Klicken Sie auf Erstellen.
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
Erstellen Sie
www-3
mit denselben Einstellungen, setzen Sie jedoch Zone aufeurope-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
Erstellen Sie
www-4
mit denselben Einstellungen, setzen Sie jedoch Zone aufeurope-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
Öffnen Sie Cloud Shell:
Erstellen Sie in
us-central1-b
eine Instanz mit dem Namenwww-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"
Erstellen Sie in
us-central1-b
eine Instanz mit dem Namenwww-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"
Erstellen Sie eine Instanz mit dem Namen
www-3
, diesmal ineurope-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"
Erstellen Sie eine Instanz mit dem Namen
www-4
und zwar ebenfalls ineurope-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
Öffnen Sie Cloud Shell:
Klonen Sie das Repository aus GitHub:
git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform
Wechseln Sie vom Arbeitsverzeichnis in das Repository-Verzeichnis:
cd iap
Ersetzen Sie
[YOUR-ORGANIZATION-NAME]
in der Dateiscripts/set_env_vars.sh
durch den Namen Ihrer Google Cloud-Organisation.Legen Sie Umgebungsvariablen fest:
source scripts/set_env_vars.sh
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:
- Sie stellen über den IAP-Tunnel eine Verbindung zu einer Compute Engine-Instanz her.
- 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.
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
Rufen Sie in der Google Cloud Console die Seite Firewall-Richtlinien auf.
Klicken Sie auf Firewallregel erstellen.
Legen Sie als Name
allow-ssh-from-iap
fest.Behalten Sie für VPC-Netzwerk die Option
default
bei.Wählen Sie unter Ziele Angegebene Ziel-Tags aus.
Legen Sie
http-tag
als Ziel-Tags fest.Belassen Sie Quellfilter auf IP-Bereiche.
Legen Sie für Quell-IP-Bereiche den Wert
35.235.240.0/20
fest.Legen Sie für Zulässige Protokolle und Ports
tcp:22
fest.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
Kopieren Sie die Terraform-Datei der Firewallregeln in das aktuelle Verzeichnis:
cp iap/vpc_firewall_rules.tf .
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.
Wechseln Sie in der Google Cloud Console zu Sicherheit > Identity-Aware Proxy:
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.
Klicken Sie auf den Tab SSH- und TCP-Ressourcen.
Wählen Sie die von Ihnen erstellten VMs aus:
Klicken Sie rechts auf Hauptkonto hinzufügen.
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.
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
Rufen Sie die Seite Cloud NAT auf:
Klicken Sie auf Erste Schritte oder NAT-Gateway erstellen.
Legen Sie Name des Gateways auf
nat-config
fest.Legen Sie VPC-Netzwerk auf
default
fest.Legen Sie Region auf
us-central1
fest.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.
- Legen Sie als Name
Klicken Sie auf Erstellen.
Wiederholen Sie den Vorgang, diesmal jedoch mit folgenden Werten:
- Name:
nat-router-europe-west1
- Region:
europe-west1
- Name:
gcloud
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
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
Kopieren Sie die NAT-Konfigurationsdatei für Terraform in das aktuelle Verzeichnis:
cp nat/vpc_nat_gateways.tf .
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.
- Warten Sie bis zu 3 Minuten, bis die NAT-Konfiguration für die VM angezeigt wird.
Stellen Sie in Cloud Shell über den erstellten Tunnel eine Verbindung zur Instanz her:
gcloud compute ssh www-1 --tunnel-through-iap
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:
- Setzen Sie die VM-Instanzen zurück, um den Apache-Webserver zu installieren.
- Sie erstellen eine Firewallregel, um den Zugriff von Load-Balancern zuzulassen.
- Sie weisen dem Load-Balancer statische, globale IPv4- und IPv6-Adressen zu.
- Sie erstellen eine Instanzgruppe für Ihre Instanzen.
- 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.
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
Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf:
Wählen Sie
www-1
,www-2
,www-3
undwww-4
aus.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.Bestätigen Sie das Zurücksetzen der vier Instanzen, indem Sie im Dialogfeld auf Zurücksetzen klicken.
gcloud
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
Rufen Sie in der Google Cloud Console die Seite Firewall-Richtlinien auf.
Klicken Sie auf Firewallregel erstellen.
Legen Sie als Name
allow-lb-and-healthcheck
fest.Behalten Sie für das VPC-Netzwerk
default
bei.Wählen Sie unter Ziele Angegebene Ziel-Tags aus.
Legen Sie
http-tag
als Ziel-Tags fest.Belassen Sie Quellfilter auf IP-Bereiche.
Legen Sie für Quell-IP-Bereiche die Werte
130.211.0.0/22
und35.191.0.0/16
fest.Legen Sie für Zulässige Protokolle und Ports
tcp:80
fest.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
Kopieren Sie die Konfigurationsdateien des Terraform-Load-Balancing in das aktuelle Verzeichnis:
cp lb/* .
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
Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf:
Klicken Sie auf Statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.
Legen Sie als Name
lb-ip-cr
fest.Behalten Sie für Typ die Einstellung Global bei.
Klicken Sie auf Reservieren.
Klicken Sie erneut auf Statische Adresse reservieren, um eine IPv6-Adresse zu reservieren.
Legen Sie als Name
lb-ipv6-cr
fest.Setzen Sie die IP-Version auf IPv6.
Behalten Sie für Typ die Einstellung Global bei.
Klicken Sie auf Reservieren.
gcloud
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
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
Rufen Sie in der Google Cloud Console die Seite Instanzgruppen auf:
Klicken Sie auf Instanzgruppe erstellen.
Klicken Sie links auf Neue nicht verwaltete Instanzgruppe.
Legen Sie als Name
us-resources-w
fest.Legen Sie Region auf
us-central1
fest.Legen Sie für Zone den Wert
us-central1-b
fest.Wählen Sie Netzwerk (Standardeinstellung) und Subnetzwerk (Standardeinstellung) aus.
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.
Wiederholen Sie diesen Vorgang, um eine zweite Instanzgruppe mit folgenden Werten zu erstellen:
- Name:
europe-resources-w
- Zone:
europe-west1-b
- Instanzen:
www-3
undwww-4
- Name:
Prüfen Sie auf der Seite Instanzgruppen ob Sie je zwei Instanzgruppen mit zwei Instanzen haben.
gcloud
Erstellen Sie die Instanzgruppe
us-resources-w
:gcloud compute instance-groups unmanaged create us-resources-w \ --zone us-central1-b
Fügen Sie die Instanzen
www-1
undwww-2
hinzu:gcloud compute instance-groups unmanaged add-instances us-resources-w \ --instances www-1,www-2 \ --zone us-central1-b
Erstellen Sie die Instanzgruppe
europe-resources-w
:gcloud compute instance-groups unmanaged create europe-resources-w \ --zone europe-west1-b
Fügen Sie die Instanzen
www-3
undwww-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
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf Load-Balancer erstellen.
- Wählen Sie unter Typ des Load Balancers die Option Application Load Balancer (HTTP/HTTPS) aus und klicken Sie auf Weiter.
- Wählen Sie für Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
- Wählen Sie unter Globale oder Einzelregion-Bereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
- Wählen Sie unter Generation des Load Balancers die Option Globaler externer Application Load Balancer aus und klicken Sie auf Weiter.
- Klicken Sie auf Konfigurieren.
Grundlegende Konfiguration
- Setzen Sie Name des Load-Balancers auf
web-map
.
Load-Balancer konfigurieren
- Klicken Sie im linken Bereich der Seite Globalen externen Anwendungs-Load-Balancer erstellen auf Backend-Konfiguration.
- 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.
- Legen Sie als Name
web-map-backend-service
fest. - Legen Sie das Protokoll fest. Behalten Sie für das HTTP-Protokoll die Standardwerte bei.
- Wählen Sie für den Back-End-Typ die Option Instanzgruppen aus.
- Legen Sie unter Back-Ends für Instanzgruppe
us-resources-w
fest. - Klicken Sie auf Back-End hinzufügen.
- 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.
- Prüfen Sie, ob die Portnummern für HTTP-Traffic zwischen dem Load-Balancer und den Instanzen auf
- Klicken Sie auf Fertig.
- Wählen Sie unter Systemdiagnose die Option Systemdiagnose erstellen oder Weitere Systemdiagnose erstellen aus.
- Legen Sie die folgenden Parameter für die Systemdiagnose fest:
- Name:
http-basic-check
- Protokoll:
HTTP
- Port:
80
- Name:
- Klicken Sie auf Erstellen.
gcloud
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
Erstellen Sie eine Systemdiagnose.
gcloud compute health-checks create http http-basic-check \ --port 80
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
aufHTTP
, da Sie über HTTP zu den Instanzen gelangen. Für die Systemdiagnose verwenden Sie die zuvor erstellte Systemdiagnosehttp-basic-check
.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
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
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
- Klicken Sie im linken Bereich der Seite Globalen externen Anwendungs-Load-Balancer erstellen auf Frontend-Konfiguration.
- Legen Sie als Name
http-cr-rule
fest. - Legen Sie für Protokoll den Wert
HTTP
fest. - Legen Sie
IPv4
als IP-Version fest. - Wählen Sie in der Liste IP-Adresse die zuvor erstellte IP-Adresse
lb-ip-cr
aus. - Prüfen Sie, ob der Port auf
80
gesetzt ist. - Klicken Sie auf Fertig.
- Klicken Sie auf Frontend-IP und Port hinzufügen.
- Legen Sie als Name
http-cr-ipv6-rule
fest. - Wählen Sie für Protokoll die Option HTTP aus.
- Legen Sie
IPv6
als IP-Version fest. - Wählen Sie in der Liste IP-Adresse die andere zuvor erstellte IP-Adresse
lb-ipv6-cr
aus. - Prüfen Sie, ob der Port auf
80
gesetzt ist. - Klicken Sie auf Erstellen.
- Klicken Sie auf Fertig.
- Klicken Sie im linken Bereich der Seite Globalen externen Application Load Balancer erstellen auf Prüfen und abschließen.
- Vergleichen Sie die Einstellungen mit denen, die Sie erstellen wollten.
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
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
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
Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf:
Wählen Sie den Load-Balancer mit dem Namen
web-map
aus, um Details zum soeben erstellten Load-Balancer aufzurufen.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.
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
Rufen Sie die IP-Adressen Ihrer globalen Weiterleitungsregeln ab und notieren Sie sie für den nächsten Schritt:
gcloud compute forwarding-rules list
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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Unter HTTPS-Load-Balancer erstellen erfahren Sie, wie Sie HTTPS- und HTTP2-Load-Balancer erstellen.
- Unter Privaten Cluster einrichten erfahren Sie, wie Sie einen privaten Google Kubernetes Engine-Cluster einrichten.
- Unter Cloud IAP für TCP-Weiterleitung verwenden werden weitere Anwendungsmöglichkeiten von Cloud IAP für TCP beschrieben, z. B. RDP oder die Remote-Ausführung von Befehlen.
- Unter Cloud NAT verwenden finden Sie Beispiele für Google Kubernetes Engine und erfahren, wie Sie Parameterdetails ändern können.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center