Edge-Netzwerkdienste mit Netzwerk-Endpunktgruppen mit Hybridkonnektivität einrichten
Google bietet verschiedene Edge-Netzwerkdienste an, mit denen die Funktionen und Sicherheit von Diensten außerhalb von Google Cloud (lokale und Multi-Cloud-Dienste) erweitert werden können, z. B. in einem lokalen Rechenzentrum oder in einer anderen öffentlichen Cloud.
Mit diesen Edge-Netzwerkdiensten können Sie:
Externen Kundentraffic weltweit mit einer einzigen Anycast-VIP akzeptieren und weiterleiten
Serverlast durch Beenden von TLS-Traffic am Netzwerkrand mit einem externen Application Load Balancer und mit von Google verwalteten SSL-Zertifikaten reduzieren
Mit Google Cloud Armor vorkonfigurierte WAF-Regeln (Web Application Firewall) konfigurieren und Zulassungslisten und Sperrlisten auf eingehenden Traffic anwenden
Nutzerzugriff auf Anwendungen und Ressourcen mit Identity-Aware Proxy (IAP) steuern
Inhaltsübermittlung und Latenz für Endnutzer mit Cloud CDN optimieren
Damit die entsprechenden Möglichkeiten für Ihre privaten, lokalen oder Multi-Cloud-Diensten verfügbar sind, erstellen Sie einen externen Application Load Balancer, um Traffic aus dem öffentlichen Internet empfangen zu können. Der externe Application Load Balancer leitet den Traffic an einen mittleren Proxy weiter, der von Cloud Service Mesh konfiguriert wird. Dieser mittlere Proxy leitet den Traffic über Cloud VPN oder Cloud Interconnect an Ihre lokale Umgebung oder Nicht-Google Cloud-Umgebung weiter.
In dieser Anleitung führen Sie ein End-to-End-Beispiel aus, in dem Google Cloud Armor am Rand von Google verwendet wird, um Clients selektiv den privaten Zugriff auf einen lokalen Dienst zu ermöglichen. Die Clients erhalten Zugriff über ihre IP-Adresse.
Sie führen dabei die folgenden Aufgaben aus:
- Envoy als mittleren Proxy in einer verwalteten Instanzgruppe (Managed Instance Group, MIG) bereitstellen. Dieser Envoy-Proxy wird automatisch mit Cloud Service Mesh verbunden.
- Simulierte private, lokale VM-Instanz erstellen. In einem praktischen Beispiel ist vermutlich bereits eine lokale VM vorhanden.
- Cloud Service Mesh so konfigurieren, dass alle Anfragen, die den mittleren Proxy erreichen, an die simulierte lokale VM weitergeleitet werden.
- Erstellen Sie einen externen Application Load Balancer, um Traffic aus dem öffentlichen Internet zu empfangen und an den mittleren Proxy weiterzuleiten.
- Hängen Sie eine Google Cloud Armor-Sicherheitsrichtlinie an den externen Application Load Balancer an.
Wenn Sie diese Aufgaben ausgeführt haben, können Sie optional zusätzliche Edge-Dienste und erweiterte Features zur Trafficverwaltung prüfen.
Vorbereitung
Führen Sie, bevor Sie den mittleren Proxy einrichten, die folgenden Aufgaben aus:
Lesen Sie den Abschnitt Einrichtung von Cloud Service Mesh mit Envoy vorbereiten und führen Sie alle erforderlichen Aufgaben aus. Dazu gehören das Gewähren der erforderlichen Berechtigungen und Rollen sowie das Aktivieren der Cloud Service Mesh API.
Sorgen Sie dafür, dass Ihre privaten lokalen Endpunkte über Ihr Google Cloud-Virtual Private Cloud-Netzwerk (VPC) über Cloud VPN oder Cloud Interconnect erreichbar sind. Das in dieser Anleitung verwendete Beispiel leitet den Traffic nur an einen Endpunkt innerhalb von Google Cloud weiter. Daher müssen Sie keine Hybridkonnektivität konfigurieren, um fortzufahren. In einer realen Bereitstellungsszenario wäre die Konfiguration von Hybridkonnektivität erforderlich.
Achten Sie darauf, dass die CIDR-Bereiche Ihres VPC-Subnetzes nicht mit Ihren Remote-CIDR-Bereichen in Konflikt stehen. Bei Überschneidung von IP-Adressen haben Subnetzrouten Vorrang vor Remote-Verbindungen.
Erteilen Sie für diese Demo die erforderlichen Berechtigungen zum Erstellen und Aktualisieren von Google Cloud Armor-Sicherheitsrichtlinien. Die Berechtigungen können variieren, wenn Sie einen anderen Dienst wie Cloud CDN verwenden.
Mittleren Proxy auf Compute Engine-VMs bereitstellen
In diesem Abschnitt wird gezeigt, wie Sie Envoy als mittleren Proxy in Compute Engine bereitstellen, um Traffic vom externen Load-Balancer empfangen und an Ihr Remote-Ziel weiterleiten zu können.
Instanzvorlage für den mittleren Proxy erstellen
Eine Instanzvorlage legt die Konfiguration für VMs in einer verwalteten Instanzgruppe fest.
Verwenden Sie die folgende Vorlage, um VM-Instanzen mit einem Envoy-Proxy zu erstellen, der mit Cloud Service Mesh verbunden ist:
gcloud compute instance-templates create td-middle-proxy \ --service-proxy=enabled \ --tags=allow-hc
Informationen zum Anpassen der Envoy-Bereitstellung, z. B. durch Angabe des Netzwerknamens, Festlegen eines Logpfads oder Aktivieren von Tracing, finden Sie im Leitfaden für die automatische Bereitstellungsoption für Envoy.
MIG für den mittleren Proxy erstellen
Erstellen Sie eine MIG anhand der Vorlage. In diesem Beispiel können Sie die Instanzgruppengröße von 1 übernehmen, um eine einzelne Instanz bereitzustellen. Für eine Produktionsbereitstellung aktivieren Sie Autoscaling, etwa anhand der CPU-Auslastung. So vermeiden Sie einen Engpass, wenn Ihr mittlerer Proxy sehr viel Traffic bewältigen muss.
gcloud compute instance-groups managed create td-middle-proxy-us-central1-a \ --zone=us-central1-a \ --template=td-middle-proxy \ --size=1
Identifizieren und speichern Sie für zukünftige Konfigurationen und Überprüfungen die interne IP-Adresse der Instanz in
MIDDLE_PROXY_IP
:MIDDLE_PROXY_IP=$(gcloud compute instances list \ --filter="name~'td-middle-proxy-us-central1-a-.*'" \ --zones=us-central1-a \ --format="value(networkInterfaces.networkIP)")
In diesem Beispiel erstellen wir die MIG, die VM-Instanzen enthält, auf denen Envoy in us-central1-a
ausgeführt wird. Später in dieser Anleitung erstellen Sie einen externen Load-Balancer, um den öffentlichen Internettraffic von Ihren Clients zu verarbeiten.
Da der externe Load-Balancer den Traffic automatisch an die Region weiterleiten kann, die Ihren Clients und der MIG in dieser Region am nächsten ist, sollten Sie gegebenenfalls mehrere MIGs erstellen. Eine vollständige Liste der verfügbaren Regionen und Zonen von Google Cloud finden Sie unter Regionen und Zonen.
Simulierten lokalen Dienst bereitstellen
In diesem Abschnitt wird gezeigt, wie Sie eine Netzwerk-Endpunktgruppe (NEG) mit Hybridkonnektivität bereitstellen. In einer Produktionsbereitstellung enthält diese NEG einen Endpunkt (IP:port
), der auf Ihren lokalen Server aufgelöst wird. In diesem Beispiel erstellen Sie eine Compute Engine-VM, die auf einem IP:port
erreichbar ist. Diese VM dient als simulierter lokaler Server.
Simulierte lokale VM erstellen
Stellen Sie eine einzelne VM-Instanz zum Simulieren eines privaten lokalen Servers bereit:
gcloud compute instances create on-prem-vm \ --zone=us-central1-a \ --metadata startup-script='#! /bin/bash ## Installs apache and a custom homepage sudo su - apt-get update apt-get install -y apache2 cat <<EOF > /var/www/html/index.html <html><body><h1>Hello world from on-premises!</h1></body></html> EOF'
Ermitteln und speichern Sie die interne IP-Adresse für zukünftige Konfigurationen und Prüfungen. Der Server auf dieser VM überwacht eingehende Anfragen auf Port
80
.ON_PREM_IP=$(gcloud compute instances describe on-prem-vm \ --zone=us-central1-a \ --format="value(networkInterfaces.networkIP)" | sed "s/['\[\]]*//g")
NEG erstellen
Erstellen Sie die NEG für diese Demoeinrichtung, indem Sie den Netzwerk-Endpunkttyp non-gcp-private-ip-port
angeben. Fügen Sie dieser NEG die IP-Adresse und den Port für Ihre simulierte lokale VM als Endpunkt hinzu. Gemäß dem vorherigen Schritt wird die IP-Adresse in der Umgebungsvariable ON_PREM_IP
gespeichert.
Erstellen Sie die NEG:
gcloud compute network-endpoint-groups create td-on-prem-neg \ --network-endpoint-type=non-gcp-private-ip-port \ --zone=us-central1-a
Fügen Sie den
IP:port
Ihrer neuen NEG hinzu:gcloud compute network-endpoint-groups update td-on-prem-neg \ --zone=us-central1-a \ --add-endpoint="ip=$ON_PREM_IP,port=80"
Cloud Service Mesh mit Cloud Load Balancing-Komponenten konfigurieren
In diesem Abschnitt wird gezeigt, wie Sie Cloud Service Mesh konfigurieren und den mittleren Proxy aktivieren, um Traffic an Ihren privaten lokalen Dienst weiterzuleiten. Sie konfigurieren dabei die folgenden Komponenten:
Systemdiagnose Diese Systemdiagnose unterscheidet sich leicht von den Systemdiagnosen, die für andere NEG-Typen konfiguriert sind.
Back-End-Dienst Weitere Informationen finden Sie in der Übersicht zu Back-End-Diensten.
Eine Routingregelzuordnung: Zu diesem Schritt gehört das Erstellen einer Weiterleitungsregel, eines Zielproxys und einer URL-Zuordnung. Weitere Informationen finden Sie unter Routingregelzuordnungen.
Systemdiagnose erstellen
Mit Systemdiagnosen wird geprüft, ob Ihre Endpunkte fehlerfrei sind und Anfragen empfangen können. Die Systemdiagnose für diesen NEG-Typ basiert auf dem Mechanismus für verteilte Systemdiagnosen von Envoy.
Andere NEG-Typen verwenden das zentralisierte Systemdiagnosesystem von Google Cloud:
gcloud compute health-checks create http td-on-prem-health-check
Back-End-Dienst erstellen
Erstellen Sie einen Back-End-Dienst mit dem Load Balancing-Schema
INTERNAL_SELF_MANAGED
zur Verwendung mit Cloud Service Mesh. Geben Sie beim Erstellen dieses Back-End-Dienstes die zuvor angelegte Systemdiagnose an:gcloud compute backend-services create td-on-prem-backend-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --health-checks=td-on-prem-health-check
Fügen Sie die zuvor erstellte NEG als Back-End dieses Back-End-Dienstes hinzu:
gcloud compute backend-services add-backend td-on-prem-backend-service \ --global \ --network-endpoint-group=td-on-prem-neg \ --network-endpoint-group-zone=us-central1-a \ --balancing-mode=RATE \ --max-rate-per-endpoint=5
Routingregelzuordnung erstellen
Die Zuordnung von Routingregeln definiert, wie Cloud Service Mesh den Traffic an Ihren Back-End-Dienst weiterleitet.
Erstellen Sie eine URL-Zuordnung, die den zuvor definierten Back-End-Dienst verwendet:
gcloud compute url-maps create td-hybrid-url-map \ --default-service=td-on-prem-backend-service
Erstellen Sie eine Datei mit dem Namen
target_proxy.yaml
und mit folgendem Inhalt:name: td-hybrid-proxy proxyBind: true urlMap: global/urlMaps/td-hybrid-url-map
Verwenden Sie den Befehl
import
, um den Ziel-HTTP-Proxy zu erstellen. Weitere Informationen finden Sie unter Zielproxys für Cloud Service Mesh:gcloud compute target-http-proxies import td-hybrid-proxy \ --source=target_proxy.yaml
Erstellen Sie eine Weiterleitungsregel, die auf diesen Ziel-HTTP-Proxy verweist. Legen Sie für die IP-Adresse der Weiterleitungsregel den Wert
0.0.0.0
fest. Wenn die IP-Adresse der Regel auf0.0.0.0
eingestellt ist, wird der Traffic basierend auf dem eingehenden Port, dem HTTP-Hostnamen und den Pfadinformationen weitergeleitet, die in der URL-Zuordnung konfiguriert sind. Die in der HTTP-Anfrage angegebene IP-Adresse wird ignoriert.gcloud compute forwarding-rules create td-hybrid-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=0.0.0.0 \ --target-http-proxy=td-hybrid-proxy \ --ports=8080 \ --network=default
Weiterleitung von Anfragen an den simulierten lokalen Dienst durch den mittleren Proxy prüfen
Cloud Service Mesh ist jetzt so konfiguriert, dass der Traffic über den mittleren Proxy zu Ihrem simulierten privaten lokalen Dienst weitergeleitet wird. Sie können diese Konfiguration prüfen. Dazu erstellen Sie eine Testclient-VM, melden sich bei dieser VM an und senden eine Anfrage an den mittleren Proxy, der Envoy ausführt. Nachdem Sie die Konfiguration überprüft haben, löschen Sie die Testclient-VM.
Rufen Sie die IP-Adresse des mittleren Proxys ab. Sie benötigen diese Information nur für den Schritt zur Bestätigung:
gcloud compute instances list
Notieren Sie sich die IP-Adresse der Instanz in der MIG
td-middle-proxy-us-central1-a
.Erstellen Sie eine Testclientinstanz:
gcloud compute instances create test-client \ --zone=us-central1-a
Melden Sie sich mit
ssh
beim Testclient an:gcloud compute ssh test-client --zone=us-central1-a
Senden Sie eine Anfrage an die VM des mittleren Proxys. Ersetzen Sie dabei die IP-Adresse, die Sie zuvor für
MIDDLE_PROXY_IP
abgerufen haben:curl $MIDDLE_PROXY_IP:8080
Es sollte folgende Ausgabe angezeigt werden:
Hello world from on-premises!
Beenden Sie die Testclient-VM. Nach dem Beenden können Sie die VM löschen:
gcloud compute instances delete test-client \ --zone=us-central1-a
Externen Application Load Balancer bereitstellen
In diesem Abschnitt stellen Sie einen externen Application Load Balancer bereit, der eingehenden Traffic an den mittleren Proxy sendet. Diese Bereitstellung ist die Standardeinrichtung des externen Application Load Balancers.
Externe IP-Adresse reservieren
Erstellen Sie eine globale statische externe IP-Adresse (external-lb-vip
), an die externe Clients Traffic senden. Sie erhalten diese externe IP-Adresse während des Bestätigungsschritts weiter unten in dieser Anleitung.
gcloud compute addresses create external-lb-vip \ --ip-version=IPV4 \ --global
Externen HTTP-Load-Balancer einrichten
Konfigurieren Sie den externen Load-Balancer, um Traffic von Internetkunden an Ihren bereits konfigurierten mittleren Proxy weiterzuleiten.
Erstellen Sie eine Systemdiagnose, mit der ermittelt wird, ob die MIG, die den mittleren Proxy ausführt, fehlerfrei ist und Traffic empfangen kann:
gcloud compute health-checks create tcp tcp-basic-check \ --port=8080
Erstellen Sie eine Firewallregel, um Systemdiagnosen zuzulassen. Hier können Sie das Tag
allow-hc
wiederverwenden, um die Firewallregel auf die VMs des mittleren Proxys anzuwenden:gcloud compute firewall-rules create fw-allow-health-checks \ --network=default \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-hc \ --rules=tcp
Erstellen Sie einen Backend-Dienst.
gcloud compute backend-services create td-middle-proxy-backend-service \ --protocol=HTTP \ --health-checks=tcp-basic-check \ --global
Fügen Sie diesem Back-End-Dienst die MIG des mittleren Proxys als Back-End hinzu:
gcloud compute backend-services add-backend td-middle-proxy-backend-service \ --instance-group=td-middle-proxy-us-central1-a \ --instance-group-zone=us-central1-a \ --global
Erstellen Sie eine URL-Zuordnung, die alle eingehenden Anfragen an den mittleren Proxy als Standard-Back-End-Dienst weiterleitet:
gcloud compute url-maps create lb-map-http \ --default-service=td-middle-proxy-backend-service
Erstellen Sie einen Ziel-HTTP-Proxy, damit Anfragen an die Weiterleitungsregel-VIP (virtuelle IP-Adresse) des externen Load-Balancers entsprechend der URL-Zuordnung verarbeitet werden:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=lb-map-http
Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Ziel-HTTP-Proxy weiterzuleiten:
gcloud compute forwarding-rules create http-forwarding-rule \ --address=external-lb-vip\ --global \ --load-balancing-scheme=EXTERNAL \ --target-http-proxy=http-lb-proxy \ --ports=80
Benannten Port der MIG festlegen
Legen Sie einen benannten Port für die Instanzgruppe fest, damit der mittlere Proxy HTTP-Traffic vom externen Load-Balancer empfangen kann:
gcloud compute instance-groups managed set-named-ports td-middle-proxy-us-central1-a \ --named-ports=http:8080 \ --zone=us-central1-a
Konfiguration des externen Application Load Balancers überprüfen
In diesem Schritt prüfen Sie, ob der externe Load-Balancer korrekt eingerichtet ist.
Sie müssen dazu eine Anfrage an die VIP des Load-Balancers senden können und daraufhin eine Antwort von der simulierten lokalen VM erhalten:
PUBLIC_VIP=gcloud compute addresses describe external-lb-vip \ --format="get(address)" \ --global
Senden Sie eine
curl
-Anfrage an die externe IP-Adresse (PUBLIC_VIP
) und prüfen Sie, ob die NachrichtHello world
bei Ihnen eingeht:curl $PUBLIC_VIP
Die folgende Ausgabe wird angezeigt:
Hello world from on-premises!
Google Cloud Armor aktivieren
Konfigurieren Sie Google Cloud Armor-Sicherheitsrichtlinien so, dass nur der Zugriff auf Ihren Dienst von CLIENT_IP_RANGE
zugelassen wird. Das sollte die externe IP-Adresse des Clientgeräts einschließen, mit dem Sie testen möchten. Beispiel: "192.0.2.0/24"
.
Diese Richtlinien werden auf den Back-End-Dienst des externen Load Balancers angewendet. In diesem Beispiel verweist td-hybrid-backend-service
auf den mittleren Proxy. Weitere Informationen zu den Berechtigungen, die zum Festlegen dieser Regeln erforderlich sind, finden Sie unter Google Cloud Armor-Sicherheitsrichtlinien konfigurieren.
Erstellen Sie die Google Cloud Armor-Sicherheitsrichtlinie:
gcloud compute security-policies create external-clients-policy \ --description="policy for external clients"
Ändern Sie die Standardregel der Sicherheitsrichtlinie, um den gesamten Traffic abzulehnen:
gcloud compute security-policies rules update 2147483647 \ --security-policy=external-clients-policy \ --action="deny-404"
Fügen Sie eine Regel mit höherer Priorität hinzu, um Traffic von einem bestimmten IP-Bereich zuzulassen:
gcloud compute security-policies rules create 1000 \ --security-policy=external-clients-policy \ --description="allow traffic from CLIENT_IP_RANGE" \ --src-ip-ranges="CLIENT_IP_RANGE" \ --action="allow"
Hängen Sie die Google Cloud Armor-Sicherheitsrichtlinien an Ihren Back-End-Dienst an:
gcloud compute backend-services update td-middle-proxy-backend-service \ --security-policy=external-clients-policy
Endgültige Bestätigung
Senden Sie eine
curl
-Anfrage an die öffentliche virtuelle IP-Adresse des externen Application Load Balancers. Wenn die IP-Adresse Ihres Clientgeräts im zulässigenCLIENT_IP_RANGE
liegt, den Sie zuvor angegeben haben, sollten Sie die erwartete Antwort erhalten.curl $PUBLIC_VIP
Die folgende Ausgabe wird angezeigt:
Hello world from on-premises!
Senden Sie die gleiche
curl
-Anfrage von einem anderen Clientgerät, dessen IP-Adresse außerhalb vonCLIENT_IP_RANGE
liegt, oder aktualisieren Sie Ihre Sicherheitsrichtlinienregel und entfernen Sie daraus die Client-IP-Adresse. Es sollte nun der Fehler404 Not Found
angezeigt werden.
Fehlerbehebung
In der folgenden Anleitung wird beschrieben, wie Sie Probleme mit Ihrer Konfiguration beheben.
Mein lokaler Dienst ist nicht über die globale IP-Adresse des externen Application Load Balancers erreichbar
Wenn der lokale Dienst auf den Google Cloud-VMs, auf denen Envoy ausgeführt wird, erreichbar ist, führen Sie die unten aufgeführten Schritte zur Fehlerbehebung aus:
Achten Sie darauf, dass die Google Cloud-Envoy-MIG als fehlerfrei gemeldet wird. Klicken Sie in der Google Cloud Console auf Netzwerkdienste > Load-Balancing und dann auf
url-map lb-map-http
, um Details dazu aufzurufen. 1/1 der Instanz intd-middle-proxy-us-central1-a
sollte als fehlerfrei angezeigt werden.Falls ein Fehler vorliegt, prüfen Sie, ob eine Firewallregel konfiguriert wurde, die eingehenden Traffic der Systemdiagnose zu den Google Cloud-VMs zulässt, auf denen Envoy ausgeführt wird:
gcloud compute firewall-rules describe fw-allow-health-check
Es sollte folgende Ausgabe angezeigt werden:
allowed: ‑ IPProtocol: tcp ... direction: INGRESS disabled: false ... ... sourceRanges: ‑ 130.211.0.0/22 ‑ 35.191.0.0/16 targetTags: ‑ allow-hc
Nächste Schritte
Komplexere Routingrichtlinien für Ihre lokalen oder Multi-Cloud-Dienste finden Sie unter Erweiterte Trafficverwaltung für Cloud Service Mesh.
Informationen zum Bereitstellen von Cloud Service Mesh finden Sie im Überblick über den Einrichtungsleitfaden.
In den folgenden Anleitungen finden Sie Informationen zum Aktivieren weiterer Edge-Netzwerkdienste: