Regionalen externen Application Load Balancer mit Cloud Storage-Buckets einrichten

In diesem Dokument erfahren Sie, wie Sie einen regionalen externen Application Load Balancer erstellen, um Anfragen für statische Inhalte an Cloud Storage Bucketsweiterzuleiten.

Hinweis

Richten Sie Ihr System so ein, dass die folgenden Voraussetzungen erfüllt sind.

Google Cloud CLI installieren

Einige der Anweisungen in dieser Anleitung können nur mit der Google Cloud CLI ausgeführt werden. Informationen zur Installation finden Sie unter gcloud CLI installieren.

Befehle für das Load-Balancing finden Sie in der Referenz für die API und gcloud CLI.

Erforderliche Rollen

Wenn Sie das Projekt erstellt haben, wird Ihnen die Rolle „Inhaber“ (roles/owner) zugewiesen. Standardmäßig enthält die Rolle „Inhaber“ (roles/owner) oder die Rolle „Bearbeiter“ (roles/editor) die Berechtigungen, die für die Ausführung der Schritte in diesem Dokument erforderlich sind.

Wenn Sie nicht der Projektersteller sind, müssen dem entsprechenden Hauptkonto die erforderlichen Berechtigungen für das Projekt erteilt werden. Ein Hauptkonto kann beispielsweise ein Google-Konto (für Endnutzer) oder ein Dienstkonto sein.

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Cloud Storage-Buckets und Netzwerkressourcen benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Weitere Informationen zu Rollen und Berechtigungen für Cloud Load Balancing finden Sie unter Rollen und Berechtigungen. Weitere Informationen zum Definieren von IAM-Richtlinien mit bedingten Berechtigungen für Weiterleitungsregeln finden Sie unter IAM-Bedingungen für Weiterleitungsregeln.

SSL-Zertifikatsressource einrichten

Für einen regionalen externen Application Load Balancer, der HTTPS als Anfrage- und Antwortprotokoll verwendet, können Sie entweder ein Compute Engine-SSL-Zertifikat oder ein Zertifikatmanager-Zertifikat verwenden, um eine SSL-Zertifikatsressource zu erstellen.

Erstellen Sie für dieses Beispiel eine SSL-Zertifikatsressource mit dem Zertifikatmanager, wie in einem der folgenden Dokumente beschrieben:

Nachdem Sie das Zertifikat erstellt haben, können Sie es an den HTTPS-Zielproxy anhängen.

Wir empfehlen die Verwendung eines von Google verwalteten Zertifikats.

Beschränkungen

Die folgenden Einschränkungen gelten für Cloud Storage-Buckets, wenn sie als Back-Ends für einen regionalen externen Application Load Balancer dienen:

  • Der private Bucket-Zugriff wird nicht unterstützt. Daher muss der Backend-Bucket öffentlich über das Internet zugänglich sein.

  • Signierte URLs werden nicht unterstützt.

  • Die Cloud CDN-Integration ist nicht verfügbar, wenn Sie Back-End-Buckets für einen regionalen externen Application Load Balancer erstellen.

  • Wenn Sie mit einem regionalen externen Application Load Balancer auf Back-End-Buckets zugreifen, wird nur die HTTP-Methode GET unterstützt. Sie können Inhalte aus dem Bucket herunterladen, aber das Hochladen von Inhalten in den Bucket über den regionalen externen Application Load Balancer ist nicht möglich.

  • Bei einem regionalen externen Application Load Balancer werden Cloud Storage-Buckets nur in der Region unterstützt, in der der Load Balancer konfiguriert ist. Dual- oder Multiregionen-Buckets werden nicht unterstützt.

Einrichtung: Übersicht

Das folgende Diagramm zeigt einen regionalen externen Application Load Balancer mit Back-End-Buckets in derselben Region wie der Load Balancer.

Die Weiterleitungsregel des regionalen externen Application Load Balancers hat eine externe IP-Adresse.

Ein regionaler externer Application Load Balancer sendet Traffic an ein Cloud Storage-Backend.
Traffic an Cloud Storage verteilen (zum Vergrößern klicken).

In den folgenden Abschnitten konfigurieren Sie die verschiedenen Ressourcen, wie im vorherigen Diagramm dargestellt.

Netzwerk und Nur-Proxy-Subnetz konfigurieren

In diesem Beispiel werden das folgende VPC-Netzwerk, die folgende Region und das folgende Nur-Proxy-Subnetz verwendet:

VPC-Netzwerk im benutzerdefinierten Modus konfigurieren

Console

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf VPC-Netzwerk erstellen.

  3. Geben Sie für Name lb-network ein.

  4. Klicken Sie auf Erstellen.

gcloud

  1. Erstellen Sie mit dem gcloud compute networks create Befehl ein benutzerdefiniertes VPC-Netzwerk mit dem Namen lb-network.

    gcloud compute networks create lb-network --subnet-mode=custom
    

Nur-Proxy-Subnetz konfigurieren

Ein Nur-Proxy-Subnetz stellt eine Reihe von IP-Adressen bereit, die Google Cloud zum Ausführen von Envoy-Proxys in Ihrem Namen verwendet. Die Proxys beenden Verbindungen vom Client und erstellen neue Verbindungen zu den Back-Ends.

Dieses Nur-Proxy-Subnetz wird von allen Envoy-basierten regionalen Load-Balancern in derselben Region des VPC-Netzwerk verwendet. Pro Zweck, Region und Netzwerk kann jeweils nur ein Nur-Proxy-Subnetz aktiv sein.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie auf den Namen des von Ihnen erstellten VPC-Netzwerk.

  3. Klicken Sie auf dem Tab Subnetz auf Subnetz hinzufügen.

  4. Geben Sie die folgenden Informationen ein:

    • Name: proxy-only-subnet-us
    • Region: us-east1
    • Zweck: Regional verwalteter Proxy
    • IP-Adressbereich: 10.129.0.0/23
  5. Klicken Sie auf Hinzufügen.

gcloud

  1. Erstellen Sie mit dem gcloud compute networks subnets create Befehl ein Nur-Proxy-Subnetz in der us-east1 Region.

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23
    

Cloud Storage-Buckets konfigurieren

So konfigurieren Sie die Cloud Storage-Buckets:

  • Erstellen Sie die Buckets.
  • Kopieren Sie Inhalte in die Buckets.

Cloud Storage-Buckets erstellen

In diesem Beispiel erstellen Sie zwei Cloud Storage-Buckets in der Region us-east1.

Console

  1. Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.

    Buckets aufrufen

  2. Klicken Sie auf „Erstellen.

  3. Geben Sie im Bereich Einstieg einen global eindeutigen Namen ein, der den Benennungsrichtlinien entspricht.

  4. Klicken Sie auf Speicherort für Daten auswählen.

  5. Legen Sie Standorttyp auf Region fest.

  6. Wählen Sie in der Liste der Regionen us-east1 aus.

  7. Klicken Sie auf Erstellen.

  8. Klicken Sie auf Buckets , um zur Seite „Cloud Storage-Bucket“ zurückzukehren. Folgen Sie dieser Anleitung, um einen zweiten Bucket in der Region us-east1 zu erstellen.

gcloud

  1. Erstellen Sie mit dem gcloud storage buckets create Befehl den ersten Bucket in der us-east1 Region.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access
    
  2. Erstellen Sie mit dem gcloud storage buckets create Befehl den zweiten Bucket ebenfalls in der us-east1 Region.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access
    

Ersetzen Sie die Variablen BUCKET1_NAME und BUCKET2_NAME durch die Namen Ihrer Cloud Storage-Bucket.

Grafikdateien in Cloud Storage-Buckets kopieren

Wenn Sie die Einrichtung testen möchten, kopieren Sie eine Grafikdatei aus einem öffentlichen Cloud Storage-Bucket in Ihre eigenen Cloud Storage-Buckets.

Führen Sie in Cloud Shell die folgenden Befehle aus und ersetzen Sie die Variablen für die Bucket-Namen durch die Namen Ihrer Cloud Storage-Bucket:

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/

Cloud Storage-Buckets öffentlich lesbar machen

Wenn Sie alle Objekte in einem Bucket für alle Nutzer im öffentlichen Internet lesbar machen möchten, gewähren Sie dem Prinzipal allUsers die Rolle „Storage-Objekt-Betrachter“ (roles/storage.objectViewer).

Console

Um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren, wiederholen Sie das folgende Verfahren für jeden Bucket:

  1. Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.

    Buckets aufrufen

  2. Klicken Sie in der Liste der Buckets auf den Namen des Buckets, den Sie veröffentlichen möchten.

  3. Wählen Sie den Tab Berechtigungen aus.

  4. Klicken Sie im Bereich Berechtigungen auf die Zugriff erlauben Schaltfläche. Das Dialogfeld Zugriff erlauben wird angezeigt.

  5. Geben Sie im Feld Neue Hauptkonten allUsers ein.

  6. Geben Sie im Feld Rolle auswählen Storage Object Viewer in das Filterfeld ein und wählen Sie in den gefilterten Ergebnissen Storage-Objekt-Betrachter aus.

  7. Klicken Sie auf Speichern.

  8. Klicken Sie auf Öffentlichen Zugriff erlauben.

gcloud

Führen Sie den buckets add-iam-policy-binding Befehl aus, um allen Nutzern Zugriff auf Objekte in Ihren Buckets zu gewähren.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
   --member=allUsers \
   --role=roles/storage.objectViewer

IP-Adresse des Load-Balancers reservieren

Reservieren Sie eine statische externe IP-Adresse für die Weiterleitungsregel des Load-Balancers.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Statische Adresse reservieren auf.

    Zur Seite "Statische Adresse reservieren"

  2. Wählen Sie einen Namen für die neue Adresse aus.

  3. Setzen Sie die IP-Version auf IPv4.

  4. Wählen Sie unter Typ die Option Regional aus.

  5. Wählen Sie für Region die Option us-east1 aus.

  6. Übernehmen Sie für die Option Verknüpft mit die Einstellung Keine. Nachdem Sie den Load-Balancer erstellt haben, wird diese IP-Adresse an die Weiterleitungsregel des Load-Balancers angehängt.

  7. Klicken Sie auf Reservieren, um die IP-Adresse zu reservieren.

gcloud

  1. Verwenden Sie den Befehl gcloud compute addresses create, um eine statische externe IP-Adresse zu reservieren.

    gcloud compute addresses create ADDRESS_NAME \
       --region=us-east1
    

    Dabei gilt:

    • ADDRESS_NAMEist der Name, den Sie für diese Adresse vergeben möchten.
  2. Verwenden Sie den gcloud compute addresses describe Befehl, um das Ergebnis anzusehen:

    gcloud compute addresses describe ADDRESS_NAME
    

Die zurückgegebene IP-Adresse wird im folgenden Abschnitt als RESERVED_IP_ADDRESS bezeichnet.

Load-Balancer mit Back-End-Buckets konfigurieren

In diesem Abschnitt erfahren Sie, wie Sie die folgenden Ressourcen für einen regionalen externen Application Load Balancer erstellen:

  • Zwei Back-End-Buckets. Die Back-End-Buckets dienen als Wrapper für die Cloud Storage-Buckets, die Sie zuvor erstellt haben.
  • URL-Zuordnung
  • Zielproxy
  • Eine Weiterleitungsregel mit regionalen IP-Adressen. Die Weiterleitungsregel hat eine externe IP-Adresse.

In diesem Beispiel können Sie HTTP oder HTTPS als Anfrage- und Antwortprotokoll zwischen dem Client und dem Load Balancer verwenden. Zum Erstellen eines HTTPS-Load-Balancers müssen Sie dem Frontend des Load-Balancers eine SSL-Zertifikatsressource hinzufügen.

So erstellen Sie die oben genannten Load-Balancing-Komponenten mit der gcloud CLI:

  1. Erstellen Sie mit dem gcloud compute backend-buckets create Befehl zwei Back-End-Buckets in der us-east1 Region. Die Back-End-Buckets haben das Load-Balancing-Schema EXTERNAL_MANAGED.

    gcloud compute backend-buckets create backend-bucket-cats \
        --gcs-bucket-name=BUCKET1_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --region=us-east1
    
    gcloud compute backend-buckets create backend-bucket-dogs \
        --gcs-bucket-name=BUCKET2_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --region=us-east1
    

    Ersetzen Sie die Variablen BUCKET1_NAME und BUCKET2_NAME durch die Namen Ihrer Cloud Storage-Bucket.

  2. Erstellen Sie mit dem gcloud compute url-maps create Befehl eine URL-Zuordnung, um eingehende Anfragen an den Backend-Bucket weiterzuleiten.

    gcloud compute url-maps create URL_MAP_NAME \
        --default-backend-bucket=backend-bucket-cats \
        --region=us-east1
    

    Ersetzen Sie die Variable URL_MAP_NAME durch den Namen der URL-Zuordnung.

  3. Konfigurieren Sie die Host- und Pfadregeln der URL-Zuordnung mit dem gcloud compute url-maps add-path-matcher Befehl.

    In diesem Beispiel ist der Standard-Backend-Bucket backend-bucket-cats, der alle darin enthaltenen Pfade verarbeitet. Jede Anfrage, die auf http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg abzielt, verwendet jedoch das backend-bucket-dogs Backend. Wenn der /love-to-fetch/ Ordner auch in Ihrem Standard-Backend (backend-bucket-cats) vorhanden ist, priorisiert der Load Balancer das backend-bucket-dogs Backend, da es eine bestimmte Pfadregel für /love-to-fetch/* gibt.

    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
        --path-matcher-name=path-matcher-pets \
        --new-hosts=* \
        --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
        --default-backend-bucket=backend-bucket-cats
    

    Ersetzen Sie die Variable URL_MAP_NAME durch den Namen der URL-Zuordnung.

  4. Erstellen Sie mit dem gcloud compute target-http-proxies create Befehl einen Zielproxy.

    Erstellen Sie für HTTP-Traffic einen Ziel-HTTP-Proxy, um Anfragen an die URL-Zuordnung weiterzuleiten:

    gcloud compute target-http-proxies create http-proxy \
        --url-map=URL_MAP_NAME \
        --region=us-east1
    

    Ersetzen Sie die Variable URL_MAP_NAME durch den Namen der URL-Zuordnung.

    Erstellen Sie für HTTPS-Traffic einen Ziel-HTTPS-Proxy, um Anfragen an die URL-Zuordnung weiterzuleiten. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für einen HTTPS-Load-Balancer enthält. Nachdem Sie das Zertifikat erstellt haben, können Sie es an den HTTPS Zielproxy anhängen.

    Führen Sie den folgenden Befehl aus, um ein Zertifikatmanager-Zertifikat anzuhängen:

    gcloud compute target-https-proxies create https-proxy \
        --url-map=URL_MAP_NAME \
        --certificate-manager-certificates=CERTIFICATE_NAME \
        --region=us-east1
    

    Dabei gilt:

  5. Erstellen Sie mit dem gcloud compute forwarding-rules create Befehl eine Weiterleitungsregel mit einer IP-Adresse in der us-east1 Region.

    Erstellen Sie für HTTP-Traffic eine regionale Weiterleitungsregel, um eingehende Anfragen an den Ziel-HTTP-Proxy weiterzuleiten:

    gcloud compute forwarding-rules create http-fw-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network=lb-network \
        --address=RESERVED_IP_ADDRESS \
        --ports=80 \
        --region=us-east1 \
        --target-http-proxy=http-proxy \
        --target-http-proxy-region=us-east1
    

    Erstellen Sie für HTTPS-Traffic eine regionale Weiterleitungsregel, um eingehende Anfragen an den Ziel-HTTPS-Proxy weiterzuleiten:

    gcloud compute forwarding-rules create https-fw-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network=lb-network \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --region=us-east1 \
        --target-https-proxy=https-proxy \
        --target-https-proxy-region=us-east1
    

HTTP-Anfrage an den Load-Balancer senden

Da der Load-Balancing-Dienst jetzt ausgeführt wird, können Sie eine Anfrage an die Weiterleitungsregel des Load-Balancers senden.

  1. Rufen Sie die IP-Adresse der Weiterleitungsregel des Load-Balancers (http-fw-rule) ab, die sich in der Region us-east1 befindet.

      gcloud compute forwarding-rules describe http-fw-rule \
          --region=us-east1
    

    Kopieren Sie die zurückgegebene IP-Adresse, um sie im nächsten Schritt als FORWARDING_RULE_IP_ADDRESS zu verwenden.

  2. Stellen Sie mit curl eine HTTP-Anfrage an die virtuelle IP-Adresse (VIP) der Weiterleitungsregel.

      curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
      curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

Nächste Schritte