Auf Standort-Google-APIs über Back-Ends zugreifen

In diesem Leitfaden wird beschrieben, wie Sie einen internen Anwendungs-Load-Balancer mit einem Private Service Connect-Back-End für den Zugriff auf eine standortbasierte Google API konfigurieren.

Weitere Informationen zu Back-Ends finden Sie unter Über Back-Ends.

Ein interner Application Load Balancer, der für Private Service Connect verwendet wird, kann von freigegebenen VPC-Netzwerken und verbundenen Netzwerken erreicht werden.

Rollen

Die Rolle "Compute-Load-Balancer-Administrator" (roles/compute.loadBalancerAdmin) enthält die zum Ausführen der in dieser Anleitung beschriebenen Aufgaben erforderlichen Berechtigungen.

Unterstützte Dienste

Siehe die Liste der unterstützten standortbezogenen Dienstendpunkte.

Hinweise

  • Aktivieren Sie die Compute Engine API in Ihrem Projekt.

  • Wenn Sie die Load-Balancing-Weiterleitungsregel bei Service Directory registrieren möchten, aktivieren Sie die Service Directory API in Ihrem Projekt. Zum Konfigurieren von Service Directory müssen Sie die Weiterleitungsregel über die Google Cloud CLI oder die API erstellen.

  • Erstellen Sie ein Nur-Proxy-Subnetz, falls Sie noch keines haben. Im VPC-Netzwerk und in der Region, in der Sie den internen Application Load Balancer erstellen möchten, muss es ein einzelnes Nur-Proxy-Subnetz geben. Dieses Subnetz wird von allen internen Application Load Balancer innerhalb dieses Netzwerks und dieser Region verwendet.

  • Erstellen Sie einen privaten Schlüssel und ein selbstverwaltetes Zertifikat für Ihre Domain, falls noch nicht geschehen. Weitere Informationen finden Sie unter Schritt 1 der Verwendung selbstverwalteter SSL-Zertifikate. Sie benötigen einen privaten Schlüssel und ein Zertifikat, um den Ziel-HTTPS-Proxy zu erstellen, wenn Sie den Load-Balancer konfigurieren.

Netzwerk-Endpunktgruppe erstellen

Erstellen Sie für jeden Dienst, den Sie mit dem Load-Balancer bereitstellen möchten, eine Private Service Connect-Netzwerk-Endpunktgruppe (NEG).

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerk-Endpunktgruppen auf.

    Zu den Netzwerk-Endpunktgruppen

  2. Klicken Sie auf NETZWERK-ENDPUNKTGRUPPE ERSTELLEN.

  3. Geben Sie einen Namen für die Netzwerk-Endpunktgruppe ein.

  4. Wählen Sie für den Typ der Netzwerk-Endpunktgruppe die Option Netzwerk-Endpunktgruppe (Private Service Connect) aus.

  5. Wählen Sie die Region für die Netzwerk-Endpunktgruppe aus.

  6. Wählen Sie den Zieldienst für die Netzwerk-Endpunktgruppe aus.

  7. Klicken Sie auf Erstellen.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=TARGET_SERVICE \
  --region=REGION

Dabei gilt:

  • NEG_NAME ist ein Name für die Netzwerk-Endpunktgruppe.

  • TARGET_SERVICE ist der Zieldienst, zu dem Sie eine Verbindung herstellen möchten. Siehe die Liste der unterstützten standortbezogenen Dienstendpunkte.

  • REGION ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Die Region muss mit der Region des Dienstes übereinstimmen, zu dem Sie eine Verbindung herstellen möchten.

Load-Balancer konfigurieren

Alle Load-Balancer-Komponenten müssen in derselben Region wie die Netzwerk-Endpunktgruppe von Private Service Connect erstellt werden.

Console

Load-Balancer-Typ auswählen

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

    Load-Balancing aufrufen

  2. Klicken Sie in der Karte Application Load Balancer (HTTP/S) auf Konfiguration starten.

  3. Wählen Sie Nur zwischen meinen VMs aus. Diese Einstellung bedeutet, dass der Load-Balancer intern ist.

  4. Klicken Sie auf Weiter.

Grundlegende Konfiguration

  1. Geben Sie im Feld Name eine Bezeichnung für den Load-Balancer ein.
  2. Wählen Sie eine Region für den Load-Balancer aus.
  3. Wählen Sie ein Netzwerk für den Load-Balancer aus.

    Das Netzwerk muss ein Nur-Proxy-Subnetz in der Region enthalten, in der Sie die NEG und den Load-Balancer erstellen. Wenn Sie kein Subnetz haben, können Sie auf Subnetz reservieren klicken, um eines zu erstellen.

  4. Lassen Sie das Fenster geöffnet, um fortzufahren.

Backend-Konfiguration

Die Netzwerk-Endpunktgruppe von Private Service Connect ist eine Art Load-Balancer-Backend. Sie erstellen einen Backend-Dienst für jedes Backend, das Sie konfigurieren möchten.

  1. Klicken Sie auf Backend-Konfiguration.
  2. Erstellen Sie für jede Private Service Connect-Netzwerk-Endpunktgruppe, die Sie konfigurieren möchten, einen Backend-Dienst.

    1. Wählen Sie im Menü Backend-Dienst erstellen oder auswählen die Option Backend-Dienst erstellen aus.
    2. Geben Sie im Feld Name eine Bezeichnung für den Backend-Dienst ein.
    3. Setzen Sie den Backend-Typ auf Private Service Connect-Netzwerk-Endpunktgruppe.
    4. Wählen Sie HTTPS als Protokoll aus.

      Die Einstellung Benannter Port wird für diese Load-Balancer-Konfiguration nicht verwendet. Behalten Sie die Standardeinstellung für den benannten Port bei.

    5. Klicken Sie unter Backends auf das Menü Neues Backend und wählen Sie die Netzwerk-Endpunktgruppe von Private Service Connect aus.

      Wenn Sie eine neue Private Service Connect-Netzwerk-Endpunktgruppe erstellen müssen, klicken Sie auf Private Service Connect-Netzwerk-Endpunktgruppe erstellen.

Routingregeln

Die Gruppe von Regeln zum Weiterleiten eingehender HTTPS-Anfragen an bestimmte Backend-Dienste oder Backend-Buckets wird als URL-Zuordnung bezeichnet. Weitere Informationen zu URL-Zuordnungen finden Sie unter Übersicht über URL-Zuordnungen.

Wenn Sie nur einen Backend-Dienst für den Load-Balancer konfigurieren, reicht die Standardroutingregel aus und Sie können mit der Frontend-Konfiguration fortfahren.

  1. Wenn Sie mehr als einen Backend-Dienst haben, klicken Sie auf Routingregeln.
  2. Wählen Sie Einfache Host- und Pfadregel aus.
  3. For each backend, do the following:
    1. Fügen Sie die Host- und Pfadregel hinzu.
    2. Geben Sie unter Host den Hostnamen ein, der zum Senden von Anfragen an diesen Dienst verwendet wird, z. B. cloudkms.example.com.
    3. Geben Sie unter Pfade den Pfad ein, z. B. /*.
    4. Wählen Sie bei Backends den Backend-Dienst aus.

Frontend-Konfiguration

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Klicken Sie auf Frontend-IP und Port hinzufügen.
  3. Geben Sie im Feld Name eine Bezeichnung für den Load-Balancer ein.
  4. Wählen Sie im Feld Protokoll die Option HTTPS (einschließlich HTTP/2) aus.
  5. Wählen Sie ein Subnetzwerk für den Load-Balancer aus.
  6. Achten Sie darauf, dass der Port auf 443 festgelegt ist, um HTTPS-Traffic zuzulassen.
  7. Wählen Sie aus dem Menü als IP-Adresse eine IP-Adresse aus.

    Wenn Sie eine neue IP-Adresse reservieren möchten, klicken Sie auf IP-Adresse erstellen.

  8. Klicken Sie auf die Drop-down-Liste Zertifikat.

    1. Wenn Sie bereits eine selbstverwaltete SSL-Zertifikatsressource haben, die Sie verwenden möchten, wählen Sie diese aus dem Menü aus.
    2. Wählen Sie andernfalls Neues Zertifikat erstellen aus.
    3. Geben Sie einen Namen für die Zertifikatsressource ein.
    4. Laden Sie in den entsprechenden Feldern Ihre PEM-formatierten Dateien hoch:
      • Zertifikat
      • Privater Schlüssel
    5. Klicken Sie auf Erstellen.
  9. Klicken Sie auf Fertig.

Überprüfen und abschließen

  1. Klicken Sie auf Prüfen und abschließen, um die Konfiguration zu prüfen.
  2. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie für jede von Ihnen erstellte Netzwerk-Endpunktgruppe einen Backend-Dienst.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --protocol=HTTPS \
     --region=REGION
    

    Dabei gilt:

    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • REGION ist die Region, in der der Backend-Dienst erstellt werden soll.
  2. Fügen Sie für jeden von Ihnen erstellten Backend-Dienst die entsprechende NEG zum Backend-Dienst hinzu.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
     --network-endpoint-group=NEG_NAME \
     --region=REGION
    

    Dabei gilt:

    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.
    • REGION ist die Region für das Backend.
  3. Erstellen Sie eine URL-Zuordnung für den Load-Balancer.

    Eine URL-Zuordnung muss auf einen Standard-Backend-Dienst verweisen. Wenn Sie Ihren Load-Balancer mit einem Backend-Dienst konfigurieren, legen Sie diesen Backend-Dienst als Standard fest. Wenn Sie Ihren Load Balancer so konfigurieren, dass er mehrere Backend-Dienste verwendet, die durch Hostregeln und Pfad-Matcher referenziert werden, die Sie im nächsten Schritt erstellen, wählen Sie einen der Backend-Dienste als Standard-URL-Map aus.

    gcloud compute url-maps create URL_MAP_NAME \
     --default-service=DEFAULT_BACKEND_SERVICE_NAME \
     --region=REGION
    

    Dabei gilt:

    • URL_MAP_NAME ist ein Name für die URL-Zuordnung.

    • DEFAULT_BACKEND_SERVICE_NAME ist der Name des Load-Balancers. Die Standardeinstellung wird verwendet, wenn keine Hostregel mit dem angeforderten Hostnamen übereinstimmt.

    • REGION ist die Region, in der die URL-Zuordnung erstellt werden soll.

  4. Fügen Sie der URL-Zuordnung zusätzliche Backend-Dienste hinzu.

    Wenn Ihre URL-Zuordnung auf zwei oder mehr Backend-Dienste verweisen muss, führen Sie die folgenden Schritte aus. Wenn Ihre URL-Zuordnung nur auf einen Backend-Dienst verweist, überspringen Sie diesen Schritt.

    1. Fügen Sie für jeden Backend-Dienst einen Pfad-Matcher hinzu. Sie müssen für jeden Backend-Dienst einen Pfad-Matcher erstellen.
    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
     --path-matcher-name=PATH_MATCHER \
     --default-service=BACKEND_SERVICE_NAME \
     --region=REGION
    

    Dabei gilt:

    • URL_MAP_NAME ist der Name der URL-Zuordnung.
    • PATH_MATCHER ist ein Name für den Pfad-Matcher.
    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • REGION ist die Region der URL-Zuordnung.
    1. Fügen Sie für jeden Hostnamen eine Hostregel hinzu.

      Jede Hostregel kann nur auf einen Pfad-Matcher verweisen, aber zwei oder mehr Hostregeln können auf denselben Pfad-Matcher verweisen.

      gcloud compute url-maps add-host-rule URL_MAP_NAME \
      --hosts=HOST \
      --path-matcher-name=PATH_MATCHER \
      --region=REGION
      

      Dabei gilt:

      • URL_MAP_NAME ist der Name der URL-Zuordnung.
      • HOST ist der Hostname, an den Anfragen für diesen Dienst gesendet werden. Beispiel: cloudkms.example.com.
      • PATH_MATCHER ist der Name des Pfad-Matchers.
      • REGION ist die Region der URL-Zuordnung.
  5. Erstellen Sie den Ziel-HTTPS-Proxy.

    Erstellen Sie eine regionale SSL-Zertifikatressource mit dem gcloud compute ssl-certificates create-Befehl. Von Google verwaltete Zertifikate werden nicht von internen Anwendungs-Load-Balancern unterstützt.

    gcloud compute ssl-certificates create CERTIFICATE \
     --certificate=LB_CERT \
     --private-key=LB_PRIVATE_KEY \
     --region=REGION
    

    Ersetzen Sie Folgendes:

    • CERTIFICATE ist ein Name für das Zertifikat.

    • LB_CERT ist der Pfad zur Zertifikatsdatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.

    • LB_PRIVATE_KEY ist der Pfad zur privaten Schlüsseldatei im PEM-Format für Ihr selbstverwaltetes Zertifikat.

    • REGION ist die Region für das Zertifikat.

    Verwenden Sie die regionale SSL-Zertifikatsressource, um einen Ziel-HTTPS-Proxy mit dem gcloud compute target-https-proxies create-Befehl zu erstellen.

    gcloud compute target-https-proxies create PROXY_NAME \
       --url-map=URL_MAP_NAME \
       --region=REGION \
       --ssl-certificates=CERTIFICATE
    

    Dabei gilt:

    • PROXY_NAME ist ein Name für den Ziel-HTTPS-Proxy.
    • URL_MAP_NAME ist der Name der URL-Zuordnung.
    • REGION ist die Region für die Zertifikatsressource.
    • CERTIFICATE ist der Name der Zertifikatsressource.
  6. Reservieren Sie eine regionale interne IPv4-Adresse für die Weiterleitungsregel.

    gcloud compute addresses create ADDRESS_NAME \
     --ip-version=IPV4 \
     --region=REGION \
     --subnet=SUBNETWORK
    

    Dabei gilt:

    • ADDRESS_NAME ist der Name der IP-Adressressource.
    • REGION ist die Region, in der die IP-Adresse erstellt werden soll.
    • SUBNET ist das Subnetz, in dem die IP-Adresse erstellt werden soll.

    Führen Sie diesen Befehl aus, um die reservierte IP-Adresse aufzurufen. Nachdem Sie den Load-Balancer erstellt haben, können Sie die Konfiguration anhand der IP-Adresse prüfen.

    gcloud compute addresses describe ADDRESS_NAME \
     --format="get(address)" --region=REGION
    
  7. Erstellen Sie die Weiterleitungsregel.

    Erstellen Sie die Weiterleitungsregel mit dem gcloud compute forwarding-rules create-Befehl.

    gcloud compute forwarding-rules create FWD_RULE \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network=NETWORK \
     --address=ADDRESS_NAME \
     --ports=443 \
     --region=REGION \
     --target-https-proxy=PROXY_NAME \
     --target-https-proxy-region=PROXY_REGION \
     [--service-directory-registration=SD_SERVICE_NAME]
    

    Dabei gilt:

    • FWD_RULE ist ein Name für die Weiterleitungsregel.

    • NETWORK ist die Region, in der die Weiterleitungsregel erstellt werden soll.

    • ADDRESS_NAME ist die reservierte IP-Adresse.

    • REGION ist die Region für die Weiterleitungsregel.

    • PROXY_NAME ist der Name des HTTPS-Ziel-Proxys.

    • PROXY_REGION ist die Region des HTTPS-Ziel-Proxys.

    • SD_SERVICE_NAME ist der URI des Service Directory-Dienstes, bei dem Sie den Load-Balancer registrieren möchten. Verwenden Sie dazu dieses Format: projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. Die Angabe von --service-directory-registration ist optional.

DNS-Einträge konfigurieren

Konfigurieren Sie DNS-Einträge für jeden Host, den Sie der URL-Zuordnung hinzugefügt haben, und verweisen Sie auf die IP-Adresse der Weiterleitungsregel. Wenn Sie DNS mit Cloud DNS verwalten, finden Sie weitere Informationen unter DNS-Eintrag hinzufügen. Konfigurieren Sie andernfalls DNS-Einträge auf Ihrem DNS-Server.

Angenommen, Sie haben ein Backend mit Folgendem konfiguriert:

  • Einer Private Service Connect-NEG, die den Zieldienst asia-east1-cloudkms.googleapis.com verwendet.

  • Einen internen Application Load Balancer, der diese Private Service Connect-NEG als Backend verwendet.

  • Einer URL-Zuordnung, die eine Hostregel für cloudkms.example.com definiert.

Damit diese Konfiguration ordnungsgemäß funktioniert, erstellen Sie einen DNS-Eintrag, der cloudkms.example.com auf die IP-Adresse der Weiterleitungsregel verweist.

Alle an cloudkms.example.com gesendeten Anfragen werden an den Load-Balancer gesendet, der die Anfrage an asia-east1-cloudkms.googleapis.com weiterleitet.

Konfiguration prüfen

  1. Erstellen Sie die VM-Instanz:

    gcloud compute instances create VM_NAME \
       --network=NETWORK \
       --image-project=debian-cloud --image-family=debian-9 \
       --zone=ZONE
    

    Dabei gilt:

    • VM_NAME ist ein Name für die virtuelle Maschine.

    • NETWORK ist das Netzwerk für die VM.

    • ZONE ist die Zone für die VM.

  2. Stellen Sie eine Verbindung zur VM her.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Prüfen Sie die Konfiguration mit curl. Mit diesem Befehl wird der Header Host festgelegt und die DNS-Auflösung durch Angabe einer benutzerdefinierten IP-Adresse umgangen. Sie können den Port weglassen, wenn Sie den Standardport für das Protokoll verwenden, z. B. Port 443 für HTTPS.

    Bei Bedarf können Sie die Zertifikatsprüfung mit dem -k-Flag überspringen. Sie müssen die Validierung möglicherweise überspringen, wenn Sie ein selbst signiertes Zertifikat zur Konfiguration des HTTPS-Ziel-Proxys verwendet haben oder wenn die VM nicht über das Zertifikat der Zertifizierungsstelle verfügt, die Ihr Zertifikat signiert hat.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
       -H 'Host: HOST' \
       --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Dabei gilt:

    • HOST ist der Hostname, der in der URL-Zuordnung konfiguriert ist.

    • RESOURCE_URI ist der Rest des URI der Ressource, die Sie zur Prüfung verwenden möchten. Beispiel: Wenn der Load-Balancer Anfragen an einen standortbezogenen Cloud Key Management Service-Endpunkt weiterleitet, können Sie v1/projects/<var>PROJECT_ID</var>/locations verwenden.

    • FWD_RULE_IP_ADDRESS ist die IP-Adresse, die der reservierten IP-Adressressource ADDRESS_NAME zugewiesen ist und in der Konfiguration der Weiterleitungsregel verwendet wird.

Zugriff auf das Backend über lokale Hosts

Wenn Ihr lokales Netzwerk mit einem VPC-Netzwerk verbunden ist, können Sie Traffic an das Private Service Connect-Backend senden.

  • Ihr lokales Netzwerk muss über Cloud VPN-Tunnel oder VLAN-Anhänge in derselben Region wie der interne Application Load Balancer mit dem VPC-Netzwerk verbunden sein, das Ihren internen Application Load Balancer enthält.

  • Das lokale Netzwerk muss geeignete Routen zu Ihrem internen Application Load Balancer haben. Achten Sie darauf dass jeder Cloud Router, der die BGP-Sitzung für den Cloud-VPN-Tunnel oder den VLAN-Anhang verwaltet, so konfiguriert wurde, dass er den primären IP-Adressbereich des von Ihrer Weiterleitungsregel zum internen Application Load Balancer verwendeten Subnetzes bekannt gibt. Cloud Router bieten standardmäßig Subnetzrouten an.

  • Sie müssen lokale Systeme so konfigurieren, dass die Hostnamen in der URL-Zuordnung Ihres internen Application Load Balancer in die IP-Adresse der Weiterleitungsregel des internen Application Load Balancer aufgelöst werden. Sie können die DNS-Einträge auf lokalen Nameservern erstellen oder Cloud DNS verwenden.

    Wenn Sie die DNS-Einträge mit den von Cloud DNS verwalteten privaten Zonen erstellt haben, führen Sie folgende Schritte aus:

    • Erstellen Sie eine Serverrichtlinie für eingehenden Traffic in dem VPC-Netzwerk, zu dem Ihr lokales Netzwerk eine Verbindung herstellt.

    • Identifizieren Sie die Weiterleitungs-Einstiegspunkte für eingehenden Traffic in den Regionen, in denen sich Ihre Cloud VPN-Tunnel und VLAN-Anhänge befinden, in dem VPC-Netzwerk, mit dem sich Ihr lokales Netzwerk verbindet.

    • Konfigurieren Sie lokale DNS-Nameserver so, dass DNS-Anfragen für die Hostnamen in der URL-Zuordnung an einen Cloud DNS-Weiterleitungspunkt für eingehenden Traffic geleitet werden.

Abbildung 7. Durch die Konfiguration von Private Service Connect, Cloud Router und lokalen Hosts können Sie über regionale Back-Ends eine Verbindung zu Google APIs und Google-Diensten herstellen.