Cloud Run, Cloud Functions oder App Engine einrichten

Auf dieser Seite wird beschrieben, wie Sie einen externen Application Load Balancer erstellen, um Anfragen an serverlose Back-Ends weiterzuleiten. Der Begriff "serverlos" bezieht sich hier auf die folgenden serverlosen Computing-Produkte:

  • App Engine
  • Cloud Functions
  • Cloud Run

Durch die Einbindung externer Application Load Balancer in API Gateway können Ihre serverlosen Back-Ends alle Features von Cloud Load Balancing nutzen. Informationen zum Konfigurieren eines externen Application Load Balancers zum Weiterleiten von Traffic an ein API Gateway finden Sie unter Erste Schritte mit einem externen Application Load Balancer für API Gateway. Die Unterstützung für externe Application Load Balancer für API Gateway befindet sich in der Vorschau.

Serverlose NEGs bieten Ihnen die Möglichkeit, serverlose Google Cloud-Anwendungen mit externen Application Load Balancern zu verwenden. Nachdem Sie einen Load-Balancer mit dem serverlosen NEG-Backend konfiguriert haben, werden Anfragen an den Load-Balancer zum serverlosen Backend der Anwendung geleitet.

Weitere Informationen zu serverlosen NEGs finden Sie in der Übersicht zu serverlosen NEGs.

Hinweise

  1. App Engine-, Cloud Functions- oder Cloud Run-Dienst bereitstellen.
  2. Installieren Sie die Google Cloud CLI, falls noch nicht geschehen.
  3. Konfigurieren Sie Berechtigungen.
  4. Fügen Sie eine SSL-Zertifikatsressource hinzu.

App Engine-, Cloud Functions- oder Cloud Run-Dienst bereitstellen

Bei den Anleitungen auf dieser Seite wird davon ausgegangen, dass Sie bereits einen Cloud Run-, Cloud Functions- oder App Engine-Dienst ausführen.

Für das Beispiel auf dieser Seite wurde die Python-Kurzanleitung für Cloud Run verwendet, um einen Cloud Run-Dienst in der Region us-central1 bereitzustellen. Auf der restlichen Seite wird beschrieben, wie Sie einen externen Application Load Balancer einrichten, der ein serverloses NEG-Backend verwendet, um Anfragen an diesen Dienst weiterzuleiten.

Wenn Sie noch keine serverlose Anwendung bereitgestellt haben oder eine serverlose NEG mit einer Beispielanwendung ausprobieren möchten, nutzen Sie eine der folgenden Kurzanleitungen. Sie können eine serverlose Anwendung in jeder Region erstellen, aber Sie müssen später zum Erstellen der serverlosen NEG und des Load-Balancers dieselbe Region verwenden.

Cloud Run

Wenn Sie eine einfache Hello World-Anwendung erstellen möchten, verpacken Sie sie in ein Container-Image und stellen Sie das Container-Image dann für Cloud Run bereit. Weitere Informationen finden Sie unter Kurzanleitung: Erstellen und bereitstellen.

Wenn Sie bereits einen Beispielcontainer nach Container Registry hochgeladen haben, finden Sie weitere Informationen unter Kurzanleitung: Vorgefertigten Beispielcontainer bereitstellen.

Cloud Functions

Siehe Cloud Functions: Python-Kurzanleitung.

App Engine

Informationen finden Sie in den folgenden App Engine-Kurzanleitungen für Python 3:

Google Cloud CLI installieren

Installieren Sie die Google Cloud CLI. In der gcloud-Übersicht finden Sie Informationen zum Konzept und zur Installation des Tools.

Wenn Sie die gcloud CLI noch nicht ausgeführt haben, führen Sie zuerst gcloud init aus, um Ihr gcloud-Verzeichnis zu initialisieren.

Berechtigungen konfigurieren

Um dieser Anleitung zu folgen, müssen Sie in einem Projekt eine serverlose NEG und einen externen HTTP(S)-Load-Balancer erstellen. Sie sollten entweder Inhaber oder Bearbeiter des Projekts sein oder die folgenden IAM-Rollen für Compute Engine haben:

Aufgabe Erforderliche Rolle
Load-Balancer und Netzwerkkomponenten erstellen Netzwerkadministrator
NEGs erstellen und ändern Compute-Instanzadministrator
SSL-Zertifikate erstellen und ändern Sicherheitsadministrator

Externe IP-Adresse reservieren

Nachdem die Dienste nun ausgeführt werden, müssen Sie eine globale statische externe IP-Adresse einrichten, über die Ihre Kunden den Load-Balancer erreichen können.

Console

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

    Zu externen IP-Adressen

  2. Klicken Sie auf Externe statische IP-Adresse reservieren.

  3. Geben Sie für Name example-ip ein.

  4. Wählen Sie für Netzwerkdienststufe die Option Premium aus.

  5. Setzen Sie die IP-Version auf IPv4.

  6. Wählen Sie unter Typ die Option Global aus.

  7. Klicken Sie auf Reservieren.

gcloud

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Notieren Sie sich die reservierte IPv4-Adresse:

gcloud compute addresses describe example-ip \
    --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, von Google verwaltete 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, damit das Zertifikat bereitgestellt werden kann. 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 (example-ip) erstellt wurde. Eine ausführliche Anleitung finden Sie unter Von Google verwaltete SSL-Zertifikate verwenden.

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

In diesem Beispiel wird davon ausgegangen, dass Sie bereits eine SSL-Zertifikatsressource erstellt haben.

Wenn Sie diesen Prozess testen möchten, ohne eine SSL-Zertifikatsressource bzw. eine Domain (für von Google verwaltete Zertifikate erforderlich) zu erstellen, folgen Sie der Anleitung auf dieser Seite, um stattdessen einen HTTP-Load-Balancer einzurichten.

Load-Balancer erstellen

Im folgenden Diagramm verwendet der Load-Balancer ein serverloses NEG-Backend, um Anfragen zu einem serverlosen Cloud Run-Dienst zu leiten. Für dieses Beispiel wurde die Python-Kurzanleitung für Cloud Run verwendet, um einen Cloud Run-Dienst bereitzustellen.

Architektur des externen Application Load Balancers für eine Cloud Run-Anwendung
Architektur des externen Application Load Balancers für eine Cloud Run-Anwendung (zum Vergrößern klicken).

Da Systemdiagnosen für Backend-Dienste mit serverlosen NEG-Backends nicht unterstützt werden, müssen Sie keine Firewallregel erstellen, die Systemdiagnosen zulässt, wenn der Load-Balancer nur serverlose NEG-Backends hat.

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 unter Öffentlich oder intern die Option Öffentlich (extern) aus und klicken Sie auf Weiter.
  5. Wählen Sie für Globale oder einzelne Regionsbereitstellung die Option Am besten für globale Arbeitslasten aus und klicken Sie auf Weiter.
  6. Wählen Sie für die Load-Balancer-Generierung die Option Klassischer Application Load Balancer aus und klicken Sie auf Weiter.
  7. Klicken Sie auf Konfigurieren.

Grundlegende Konfiguration

  1. Geben Sie serverless-lb als Name für den Load-Balancer ein.
  2. Lassen Sie das Fenster geöffnet, um fortzufahren.

Frontend-Konfiguration

  1. Klicken Sie auf Front-End-Konfiguration.
  2. Geben Sie für Name einen Namen ein.
  3. Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie ein SSL-Zertifikat (gcloud compute ssl-certificates list).

    Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats, wie bereits beschrieben.

  4. Füllen Sie die folgenden Felder aus, um einen externen Application Load Balancer zu konfigurieren.

    Prüfen Sie, ob die folgenden Optionen mit diesen Werten konfiguriert sind:

    Attribut Wert (Wert eingeben bzw. Option auswählen)
    Protokoll HTTPS
    Netzwerkdienststufe Premium
    IP-Version IPv4
    IP-Adresse example-ip
    Port 443
    Zertifikat Wählen Sie ein vorhandenes Zertifikat aus oder erstellen Sie ein neues.

    Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie eine SSL-Zertifikatsressource, die im HTTPS-Proxy verwendet wird. Sie können eine SSL-Zertifikatsressource entweder mit einem von Google verwalteten SSL-Zertifikat oder mit einem selbst verwalteten SSL-Zertifikat erstellen.
    Zum Erstellen eines von Google verwalteten Zertifikats benötigen Sie eine Domain. Der A-Eintrag der Domain muss der IP-Adresse des Load-Balancers zugeordnet werden (in diesem Beispiel example-ip). Es empfiehlt sich, von Google verwaltete Zertifikate zu verwenden, da Google Cloud diese Zertifikate automatisch abruft, verwaltet und verlängert. Wenn Sie keine Domain haben, können Sie ein selbst signiertes SSL-Zertifikat zu Testzwecken verwenden.
    Optional: HTTP-zu-HTTPS-Weiterleitung aktivieren Verwenden Sie dieses Kästchen, um HTTP-zu-HTTPS-Weiterleitungen zu aktivieren.

    Wenn Sie dieses Kästchen aktivieren, wird ein zusätzlicher partieller HTTP-Load-Balancer erstellt, der dieselbe IP-Adresse wie Ihr HTTPS-Load-Balancer verwendet und HTTP-Anfragen an das HTTPS-Front-End des Load-Balancers weiterleitet.

    Dieses Kästchen kann nur angeklickt werden, wenn das HTTPS-Protokoll aktiviert und eine reservierte IP-Adresse verwendet wird.

  5. Klicken Sie auf Fertig.

Backend-Konfiguration

  1. Klicken Sie auf Backend-Konfiguration.
  2. Klicken Sie in der Liste Backend-Dienste und Backend-Buckets auf Backend-Dienst erstellen.
  3. Geben Sie für Name einen Namen ein.
  4. Wählen Sie unter Back-End-Typ die Option Endpunktgruppe für serverloses Netzwerk aus.
  5. Lassen Sie das Protokoll unverändert. Dieser Parameter wird ignoriert.
  6. Wählen Sie im Bereich Backends für Neues Backend die Option Endpunktgruppe für ein serverloses Netzwerk erstellen aus.
  7. Geben Sie für Name einen Namen ein.
  8. Klicken Sie auf Erstellen.
  9. Klicken Sie im Bereich Neues Backend auf Fertig.
  10. Wählen Sie Cloud CDN aktivieren aus.
  11. Optional: Ändern Sie die Einstellungen für den Cache-Modus und die TTL.
  12. Klicken Sie auf Erstellen.

Routingregeln

Routingregeln bestimmen, wie Ihr Traffic weitergeleitet wird. Um das Routing zu konfigurieren, richten Sie Hostregeln und Pfad-Matcher ein, die Konfigurationskomponenten der URL-Zuordnung eines externen Application Load Balancers sind.

  1. Klicken Sie auf Host- und Pfadregeln.

  2. Behalten Sie die Standardhosts und -pfade bei. In diesem Beispiel werden alle Anfragen an den Backend-Dienst gesendet, der im vorherigen Schritt erstellt wurde.

Konfiguration prüfen

  1. Klicken Sie auf Prüfen und abschließen.
  2. Überprüfen Sie alle Einstellungen.
  3. Optional: Klicken Sie auf Entsprechender Code, um die REST API-Anfrage aufzurufen, die zum Erstellen des Load-Balancers verwendet wird.
  4. Klicken Sie auf Erstellen.
  5. Warten Sie, bis der Load-Balancer erstellt ist.
  6. Klicken Sie auf den Namen des Load-Balancers (serverless-lb).
  7. Notieren Sie die IP-Adresse des Load-Balancers für die nächste Aufgabe. Sie wird als IP_ADDRESS bezeichnet.

gcloud

  1. Erstellen Sie eine serverlose NEG für die serverlose Anwendung. Weitere Optionen finden Sie im gcloud-Referenzhandbuch für gcloud compute network-endpoint-groups create.
  2. Erstellen Sie einen Back-End-Dienst.
       gcloud compute backend-services create BACKEND_SERVICE_NAME \
           --load-balancing-scheme=LOAD_BALANCING_SCHEME \
           --global \
           --enable-cdn \
           --cache-mode=CACHE_MODE \
           --custom-response-header='Cache-Status: {cdn_cache_status}' \
           --custom-response-header='Cache-ID: {cdn_cache_id}'
       

    Legen Sie den Cache-Modus fest. Ersetzen Sie dazu CACHE_MODE durch einen der folgenden Werte:

    • CACHE_All_STATIC (Standard): Statische Inhalte werden automatisch im Cache gespeichert.
    • USE_ORIGIN_HEADERS: Hiermit wird erzwungen, dass der Ursprung zum Speichern von Inhalten im Cache gültige Caching-Header festlegt.
    • FORCE_CACHE_ALL: Alle Inhalte werden im Cache gespeichert. Sämtliche Anweisungen private, no-store oder no-cache in Cache-Control-Antwortheadern werden ignoriert.

    Informationen zu den Cache-Anweisungen, die Cloud CDN versteht, und was von Cloud CDN nicht im Cache gespeichert wird, finden Sie unter Im Cache speicherbare Inhalte und Nicht im Cache speicherbare Inhalte.

  3. Fügen Sie dem Back-End-Dienst das serverlose NEG als Back-End hinzu.
       gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
           --global \
           --network-endpoint-group=SERVERLESS_NEG_NAME \
           --network-endpoint-group-region=us-central1
       
  4. Erstellen Sie eine URL-Zuordnung, um eingehende Anfragen an den Backend-Dienst weiterzuleiten:
       gcloud compute url-maps create URL_MAP_NAME \
           --default-service BACKEND_SERVICE_NAME
       

    Diese beispielhafte URL-Zuordnung ist nur auf einen Backend-Dienst ausgerichtet, der eine einzelne serverlose Anwendung darstellt. Daher müssen keine Hostregeln oder Pfad-Matcher eingerichtet werden. Wenn Sie mehr als einen Backend-Dienst haben, können Sie Hostregeln verwenden, um Anfragen basierend auf dem Hostnamen zu verschiedenen Diensten zu leiten. Sie können auch Tools zum Abgleich von Pfaden einrichten, um Anfragen basierend auf dem Anfragepfad zu verschiedenen Diensten zu leiten.

  5. Zum Erstellen eines HTTPS-Load-Balancers benötigen Sie eine SSL-Zertifikatsressource, die im HTTPS-Proxy verwendet wird. Sie können eine SSL-Zertifikatsressource entweder mit einem von Google verwalteten SSL-Zertifikat oder mit einem selbst verwalteten SSL-Zertifikat erstellen. Es empfiehlt sich, von Google verwaltete 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. Wenn Sie keine Domain haben, können Sie ein selbst signiertes SSL-Zertifikat zu Testzwecken verwenden.

    So erstellen Sie eine von Google verwaltete SSL-Zertifikatsressource:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --domains DOMAIN
       
    So erstellen Sie eine selbstverwaltete SSL-Zertifikatressource:
       gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
           --certificate CRT_FILE_PATH \
           --private-key KEY_FILE_PATH
       
  6. Erstellen Sie einen HTTP(S)-Zielproxy, um Anfragen an Ihre URL-Zuordnung weiterzuleiten.

    Erstellen Sie einen HTTPS-Zielproxy für einen HTTPS-Load-Balancer. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für das HTTPS-Load-Balancing besitzt. Daher laden Sie in diesem Schritt auch Ihr Zertifikat.

       gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --ssl-certificates=SSL_CERTIFICATE_NAME \
          --url-map=URL_MAP_NAME
       
  7. Erstellen Sie eine Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.

    Für einen HTTPS-Load-Balancer:

       gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
           --load-balancing-scheme=EXTERNAL \
           --network-tier=PREMIUM \
           --address=example-ip \
           --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
           --global \
           --ports=443
       

Domain mit dem Load-Balancer verbinden

Notieren Sie sich nach der Erstellung des Load-Balancers die IP-Adresse, die diesem zugewiesen ist, z. B. 30.90.80.100. Wenn Sie Ihre Domain auf den Load-Balancer verweisen möchten, erstellen Sie mit Ihrem Domain-Registrierungsdienst einen A-Eintrag. Wenn Sie Ihrem SSL-Zertifikat mehrere Domains hinzugefügt haben, müssen Sie für jede Domain einen A-Eintrag hinzufügen, der auf die IP-Adresse des Load-Balancers verweist. So erstellen Sie beispielsweise A-Einträge für www.example.com und example.com:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Wenn Sie Cloud DNS als DNS-Anbieter verwenden, lesen Sie Einträge hinzufügen, ändern und löschen.

Load-Balancer testen

Nachdem Sie den Load-Balancer konfiguriert haben, können Sie Traffic an die IP-Adresse des Load-Balancers senden. Wenn Sie eine Domain konfiguriert haben, können Sie auch Traffic an den Domainnamen senden. Die DNS-Weitergabe kann jedoch einige Zeit in Anspruch nehmen. Sie sollten daher zuerst die IP-Adresse zu Testzwecken verwenden.

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den Load-Balancer, den Sie gerade erstellt haben.

  3. Notieren Sie sich seine IP-Adresse.

  4. Bei einem HTTPS-Load-Balancer können Sie Ihren Load-Balancer mit einem Webbrowser testen. Rufen Sie dafür https://IP_ADDRESS auf. Ersetzen Sie IP_ADDRESS durch die IP-Adresse des Load-Balancers. Sie sollten zur Startseite des helloworld-Dienstes geleitet werden.
    Sollte das nicht funktionieren und Sie verwenden ein von Google verwaltetes Zertifikat, prüfen Sie, ob der Status der Zertifikatsressource AKTIV ist. Weitere Informationen finden Sie unter Von Google verwaltete SSL-Zertifikate verwenden.
    Wenn Sie ein selbst signiertes Zertifikat zu Testzwecken genutzt haben, zeigt Ihr Browser eine Warnung an. Sie müssen Ihren Browser ausdrücklich anweisen, ein selbst signiertes Zertifikat zu akzeptieren. Bestätigen Sie die Warnung, um die eigentliche Seite zu sehen.

  5. Verwenden Sie zum Prüfen von Cache-Antworten „curl“ in der Befehlszeile Ihres lokalen Computers. Ersetzen Sie IP_ADDRESS durch die IPv4-Adresse des Load-Balancers:

    curl -v -o/dev/null https://IP_ADDRESS
    

    Wenn Sie ein von Google verwaltetes Zertifikat verwenden, testen Sie die Domain, die auf die IP-Adresse des Load-Balancers verweist. Beispiel:

    curl -v -o/dev/null -k -s 'https://DOMAIN:443' --connect-to DOMAIN:443:IP_ADDRESS:443
    

    Wenn Sie ein selbst signiertes Zertifikat verwenden, müssen Sie auch das Flag -k angeben. Die „curl“-Option -k gewährleistet, dass „curl“ mit einem selbst signierten Zertifikat funktioniert. Sie sollten den Parameter -k nur verwenden, um Ihre eigene Website zu testen. Unter normalen Umständen ist die Prüfung auf ein gültiges Zertifikat eine wichtige Sicherheitsmaßnahme und Zertifikatwarnungen sollten nicht ignoriert werden.

    Die Ausgabe sollte die benutzerdefinierten Header Cache-ID und Cache-Status enthalten, die Sie so konfiguriert haben, dass die Antwort aus dem Cache bereitgestellt wurde:

    HTTP/2 200
    cache-status: hit
    cache-id: SEA-b9fa975e
    

    Die Ausgabe enthält die Antwortheader, die darauf hinweisen, dass es einen Cache-Treffer gab. Das bedeutet, dass dem Nutzer der statische Inhalt der serverlosen Anwendung aus einem Edge-Cache von Cloud CDN bereitgestellt wurde.

    Der Header cache-status gibt den Wert disabled für die Antworten an, die nicht in Cloud CDN zwischengespeichert werden. Bei im Cache gespeicherten Antworten ist der Headerwert cache-status hit, miss oder revalidated.

Cloud CDN deaktivieren

Console

Cloud CDN für einen einzelnen Back-End-Bucket deaktivieren

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

    Zu Cloud CDN

  2. Klicken Sie auf der rechten Seite der ursprünglichen Zeile auf Menü  und wählen Sie Bearbeiten aus.

  3. Heben Sie die Auswahl der Kästchen aller Back-End-Dienste auf, die Cloud CDN nicht mehr verwenden sollen.

  4. Klicken Sie auf Aktualisieren.

Cloud CDN für alle Backend-Buckets für einen Ursprung entfernen

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

    Zu Cloud CDN

  2. Klicken Sie auf der rechten Seite der ursprünglichen Zeile auf Menü  und wählen Sie Entfernen aus.

  3. Klicken Sie zur Bestätigung auf Entfernen.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_NAME 
--no-enable-cdn

Die Aktivierung von Cloud CDN führt zu keiner Entwertung oder Löschung von Caches. Wenn Sie Cloud CDN deaktivieren und wieder aktivieren, bleiben die meisten oder alle im Cache gespeicherten Inhalte im Cache gespeichert. Um zu verhindern, dass Inhalte von Caches verwendet werden, müssen Sie diese Inhalte entwerten.

Nächste Schritte