Zugriff auf veröffentlichte Dienste über Back-Ends

In diesem Leitfaden wird beschrieben, wie Sie einen globalen externen Anwendungs-Load-Balancer mit einem Private Service Connect-Back-End konfigurieren, um auf einen Dienst zuzugreifen, der mit Private Service Connect veröffentlicht wird.

Abbildung 1. Wenn Sie ein Backend verwenden, das auf einem globalen externen Application Load Balancer basiert, können Dienstnutzer mit Internetzugriff Traffic an Dienste im VPC-Netzwerk des Diensterstellers senden (zum Vergrößern klicken).

Weitere Informationen finden Sie unter Private Service Connect-Back-Ends.

Rollen

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

Hinweis

  • Wenn Sie Ihren eigenen Dienst veröffentlichen möchten, lesen Sie die Informationen unter Dienste mit Private Service Connect veröffentlichen.

  • Wenn Sie eine Verbindung zu einem Dienst herstellen, der von einem Drittanbieter veröffentlicht wurde, bitten Sie den Dienstersteller um die folgenden Informationen:

    • Der URI des Dienstanhangs für den Dienst, zu dem Sie eine Verbindung herstellen möchten. Der Dienstanhang hat folgendes Format: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME.

    • Alle Anforderungen für die DNS-Namen, an die Sie Anfragen senden. Möglicherweise müssen Sie bestimmte DNS-Namen in der URL-Zuordnungskonfiguration oder der DNS-Konfiguration verwenden.

Netzwerk-Endpunktgruppe erstellen

Erstellen Sie eine Private Service Connect-NEG, die auf den Dienstanhang für den veröffentlichten Dienst verweist, auf den Sie zugreifen möchten. Wenn der veröffentlichte Dienst in mehreren Regionen bereitgestellt wird, erstellen Sie eine NEG pro Dienstanhang.

Jede Private Service Connect-NEG verwendet eine /32-IP-Adresse, damit der Load-Balancer mit ihr kommunizieren kann.

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 den Zieltyp Veröffentlichter Dienst aus.

  6. Geben Sie für Zieldienst den URI des Dienstanhangs ein.

  7. Wählen Sie das Netzwerk und das Subnetz aus, in dem die Netzwerk-Endpunktgruppe erstellt werden soll.

    Das Subnetz muss sich in derselben Region wie der veröffentlichte Dienst befinden.

  8. 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 \
    --network=NETWORK \
    --subnet=SUBNET

Dabei gilt:

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

  • TARGET_SERVICE ist der Dienstanhang, mit dem Sie eine Verbindung herstellen möchten.

  • REGION ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Die Region muss mit der Region des Zieldienstes übereinstimmen.

  • NETWORK ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Wenn nichts angegeben ist, wird das Standardnetzwerk verwendet.

  • SUBNET ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Das Subnetz muss sich in derselben Region wie der Zieldienst befinden. Ein Subnetz muss angegeben werden, wenn Sie das Netzwerk angeben. Wenn sowohl Netzwerk als auch Subnetz weggelassen werden, wird das Standardnetzwerk verwendet und das Standardsubnetz in der angegebenen REGION.

Externe IP-Adresse für den Load-Balancer reservieren

So reservieren Sie eine externe IP-Adresse für den Load-Balancer:

Console

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

    "IP-Adressen" aufrufen

  2. Um eine IPv4-Adresse zu reservieren, klicken Sie auf Statische Adresse reservieren.

  3. Weisen Sie der IP-Adressressource einen Namen zu.

  4. Legen Sie für die Netzwerkstufe Premium fest.

  5. Setzen Sie die IP-Version auf IPv4.

  6. Legen Sie für Typ Global fest.

  7. Klicken Sie auf Reservieren.

gcloud

  1. Reservieren Sie eine globale externe IPv4-Adresse für den Load-Balancer.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 --global
    

    Ersetzen Sie ADDRESS_NAME durch einen Namen für die IP-Adressressource

  2. Führen Sie diesen Befehl aus, um die reservierte IP-Adresse aufzurufen:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global
    

SSL-Zertifikatsressource erstellen

Zum Erstellen eines HTTPS-Load-Balancers müssen Sie dem Frontend des Load-Balancers eine SSL-Zertifikatsressource hinzufügen. Erstellen Sie eine SSL-Zertifikatsressource mit einem von Google verwalteten SSL-Zertifikat oder mit einem selbst verwalteten SSL-Zertifikat.

  • Von Google verwaltete Zertifikate. Es empfiehlt sich, die von Google verwalteten Zertifikate zu verwenden, da Google Cloud diese Zertifikate automatisch abruft, verwaltet und verlängert. Zum Erstellen eines von Google verwalteten Zertifikats benötigen Sie eine Domain und die zugehörigen DNS-Einträge, um das Zertifikat bereitzustellen. Wenn Sie noch keine Domain haben, können Sie eine von Google Domains erhalten. Weitere Informationen finden Sie unter Erste Schritte mit Google Domains. Außerdem müssen Sie den DNS-A-Eintrag der Domain so aktualisieren, dass er auf die IP-Adresse des Load-Balancers verweist, die im vorherigen Schritt erstellt wurde. Eine ausführliche Anleitung finden Sie unter Von Google verwaltete Zertifikate verwenden.

  • Selbstverwaltete Zertifikate. Selbstverwaltete SSL-Zertifikate sind Zertifikate, die Sie selbst beziehen, bereitstellen und verlängern. Selbstverwaltete Zertifikate können von einer Zertifizierungsstelle oder selbst signiert werden. Wenn sie von einer Zertifizierungsstelle signiert werden, müssen Sie eine Domain haben. Wenn Sie noch keine Domain haben, können Sie eine von Google Domains erhalten. Weitere Informationen finden Sie unter Erste Schritte mit Google Domains. Außerdem müssen Sie den DNS-A-Eintrag der Domain so aktualisieren, dass er auf die IP-Adresse des Load-Balancers verweist, die im vorherigen Schritt erstellt wurde. Eine ausführliche Anleitung finden Sie unter Von selbstverwaltete Zertifikate verwenden.

    Wenn Sie derzeit keine Domain einrichten möchten, können Sie ein selbst signiertes SSL-Zertifikat zu Testzwecken verwenden.

In dieser Anleitung wird davon ausgegangen, dass Sie bereits eine SSL-Zertifikatsressource erstellt haben.

Load-Balancer konfigurieren

Konfigurieren Sie einen globalen externen Application Load Balancer mit erweiterten Funktionen zur Trafficverwaltung (Load-Balancing-Schema auf EXTERNAL_MANAGED gesetzt), um eine Verbindung zu einem verwalteten Dienst herzustellen.

Wenn Sie eine Verbindung zu einem veröffentlichten Dienst herstellen, der in mehreren Regionen bereitgestellt wird, und Sie mehrere Private Service Connect-NEGs erstellt haben, um eine Verbindung zu jedem Dienstanhang herzustellen, können Sie alle NEGs zum Backend-Dienst hinzufügen.

Obwohl die Private Service Connect-NEG regional ist, sind alle anderen Load-Balancing-Komponenten in dieser Konfiguration global.

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 Anwendungs-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 einzelne Region-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. Geben Sie im Feld Name des Load Balancers einen Namen ein.
  2. Lassen Sie das Fenster geöffnet, um fortzufahren.

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. Achten Sie darauf, dass der Port auf 443 festgelegt ist, um HTTPS-Traffic zuzulassen.
  6. Wählen Sie unter IP-Adresse die reservierte IP-Adresse aus.

  7. Klicken Sie auf die Liste Zertifikat und wählen Sie das erstellte Zertifikat aus.

  8. Klicken Sie auf OK.

  9. Klicken Sie auf Fertig.

Backend-Konfiguration

Die Netzwerk-Endpunktgruppe von Private Service Connect ist eine Art Load-Balancer-Backend. Fügen Sie dem Backend-Dienst alle Private Service Connect NEGs für denselben verwalteten Dienst hinzu.

  1. Klicken Sie auf Backend-Konfiguration.
  2. Klicken Sie auf die Liste Backend-Dienste und Backend-Buckets und dann auf Backend-Dienst erstellen.
  3. Geben Sie im Feld Name eine Bezeichnung für den Backend-Dienst ein.
  4. Setzen Sie den Backend-Typ auf Private Service Connect-Netzwerk-Endpunktgruppe.
  5. Klicken Sie im Abschnitt Back-Ends auf die Liste Private Service Connect-Netzwerk-Endpunktgruppe und wählen Sie die von Ihnen erstellte Private Service Connect NEG aus. Klicken Sie auf Fertig.
  6. Wenn Sie mehrere Private Service Connect NEGs erstellt haben, klicken Sie auf Backend hinzufügen, um eine weitere NEG auszuwählen.

    Wiederholen Sie diesen Schritt, bis alle Backends für diesen verwalteten Dienst dem Backend-Dienst hinzugefügt wurden.

  7. Klicken Sie auf Erstellen.

Routingregeln

Da diese Konfiguration nur einen Backend-Dienst enthält, reicht die Standardroutingregel aus und Sie müssen keine Änderungen in diesem Abschnitt vornehmen.

Überprüfen und abschließen

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

gcloud

  1. Erstellen Sie einen Backend-Dienst für den verwalteten Dienst, zu dem Sie eine Verbindung herstellen möchten.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --global
    

    Ersetzen Sie BACKEND_SERVICE_NAME durch den Namen des Backend-Dienstes.

  2. Fügen Sie die Private Service Connect NEG hinzu, die auf den Zieldienst verweist.

    Wenn Sie für denselben Dienst mehrere NEGs erstellt haben, wiederholen Sie diesen Schritt, um dem Backend-Dienst alle NEGs hinzuzufügen.

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

    Dabei gilt:

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

    Eine URL-Zuordnung muss auf einen Standard-Backend-Dienst verweisen. Konfigurieren Sie den Backend-Dienst, den Sie als Standard-Backend-Dienst erstellt haben.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=BACKEND_SERVICE_NAME \
      --global
    

    Dabei gilt:

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

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

  4. Erstellen Sie den Ziel-HTTPS-Proxy.

    Verwenden Sie die von Ihnen erstellte SSL-Zertifikatsressource, um einen Ziel-HTTPS-Proxy zu erstellen.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --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.
    • CERTIFICATE ist der Name der Zertifikatsressource.
  5. Erstellen Sie die Weiterleitungsregel.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=ADDRESS_NAME \
        --target-https-proxy=PROXY_NAME \
        --ports=443 \
        --global
    

    Ersetzen Sie Folgendes:

    • FWD_RULE ist ein Name für die Weiterleitungsregel.

    • ADDRESS_NAME ist die IP-Adressressource, die Sie für die Weiterleitungsregel reserviert haben.

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

DNS-Einträge konfigurieren

Wenn Sie über einen DNS-Namen auf Ihr Private Service Connect-Backend zugreifen möchten, erstellen Sie DNS-Namen für jede externe Weiterleitungsregel. Der DNS-Eintrag muss einem Namen in der URL-Zuordnung entsprechen. Sofern die URL-Zuordnung die Namen nicht neu schreibt, muss der DNS-Eintrag auch den Namen entsprechen, die der Erstellerdienst erwartet.

Wenn Sie DNS mit Cloud DNS verwalten, finden Sie weitere Informationen unter DNS-Eintrag hinzufügen.

Konfiguration prüfen

  1. Erstellen Sie die VM-Instanz:

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-11 \
        --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.

    Sie können die Zertifikatsprüfung mit dem Flag -k ü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.

    • FWD_RULE_IP_ADDRESS ist die IP-Adresse, die der Weiterleitungsregel zugewiesen ist.

Fehlerbehebung

Die Backend-Erstellung war erfolgreich, aber die Verbindung wird nicht hergestellt.

Wenn Sie ein Backend für veröffentlichte Dienste erfolgreich erstellt haben, aber die Verbindung nicht hergestellt wird, prüfen Sie den Verbindungsstatus des Backends. Der Verbindungsstatus kann möglicherweise auf Schritte hinweisen, mit denen Sie das Problem beheben können.