Übersicht über URL-Zuordnungen

Google Cloud HTTP(S)-Load-Balancer und Traffic Director verwenden eine URL-Zuordnung, um Anfragen an ein Ziel weiterzuleiten. Wenn Sie einen HTTP(S)-Load-Balancer oder Traffic Director konfigurieren, erstellen Sie eine URL-Zuordnung. Diese URL-Zuordnung leitet den Traffic basierend auf den von Ihnen definierten Regeln an eines oder mehrere der folgenden Ziele weiter:

Ein Back-End-Dienst stellt eine Sammlung von Back-Ends dar, bei denen es sich um Instanzen einer Anwendung oder eines Mikrodienstes handelt. Ein Back-End-Bucket ist ein Google Cloud Storage-Bucket, der häufig zum Hosten statischer Inhalte wie Bilder verwendet wird.

Sie können beispielsweise eine einzelne URL-Zuordnung verwenden, um Anfragen auf dem Anfrage-Host und dem Anfrage-Pfad basierend weiterzuleiten:

  • Anfragen für https://example.com/video gehen an einen Back-End-Dienst.
  • Anfragen für https://example.com/audio gehen an einen anderen Back-End-Dienst.
  • Anfragen für https://example.com/images werden an einen Cloud Storage-Back-End-Bucket gesendet.
  • Anfragen für andere Host- und Pfadkombinationen werden an einen Standard-Back-End-Dienst gesendet.

URL-Zuordnungen werden bei den folgenden Google Cloud-Produkten verwendet:

Über URL-Zuordnungen

Wenn eine Anfrage beim Load-Balancer eingeht, leitet er sie anhand von Konfigurationen in einer URL-Zuordnung an einen bestimmten Back-End-Dienst oder Back-End-Bucket weiter.

Angenommen, Sie haben zum Beispiel folgende Konfiguration:

  • Eine IP-Adresse:
    • Alle Anfragen an Ihre Organisation gehen an dieselbe IP-Adresse und denselben Load-Balancer.
    • Der Traffic wird anhand der Anfrage-URL an verschiedene Back-End-Dienste weitergeleitet.
  • Zwei Domains:
    • example.net hostet Schulungsvideos.
    • example.org hostet die Website Ihrer Organisation.
  • Vier Server:
    • Einer hostet die Website Ihrer Organisation (Back-End-Dienst: org-site).
    • In einem wird die gesamte Schulungsvideo-Website gehostet (Back-End-Dienst: video-site).
    • In einem werden HD-Schulungsvideos gehostet (Back-End-Dienst: video-hd).
    • Einer hostet Schulungsvideos mit Standard Definition (SD) (Back-End-Dienst: video-sd).

Anfragen sollen so gestellt werden:

  • Anfragen an example.org (oder eine andere Domain als example.net), um zum Back-End-Dienst org-site zu gelangen.
  • Anfragen an example.net, die nicht mit spezifischeren Pfaden übereinstimmen, um zum video-site-Back-End-Dienst zu gelangen.
  • Anfragen an example.net/video/hd/*, um zum Back-End-Dienst video-hd zu gelangen.
  • Anfragen an example.net/video/sd/*, um zum Back-End-Dienst video-sd zu gelangen.

Mit der URL-Zuordnung können Sie diese Art von host- und pfadbasiertem Routing einrichten.

Beispiel für die Einrichtung eines Back-End-Dienstes (zum Vergrößern anklicken)
Beispiel für die Einrichtung eines Back-End-Dienstes (zum Vergrößern anklicken)

Erweiterte Trafficverwaltung

Internes HTTP-Load-Balancing und Traffic Director verwenden URL-Zuordnungen für host- und pfadbasiertes Routing (wie in diesem Dokument beschrieben). In Verbindung mit diesen Produkten unterstützen URL-Zuordnungen auch erweiterte Features zur Verwaltung von Zugriffen. Weitere Informationen zur erweiterten Traffic-Verwaltung finden Sie in der Übersicht zur Traffic-Verwaltung und zur erweiterten Traffic-Verwaltung.

Benennung

Jede URL-Zuordnung hat einen Namen. Wenn Sie einen HTTP(S)-basierten Load-Balancer mithilfe der Google Cloud Console erstellen, wird der URL-Zuordnung ein Name zugewiesen. Dieser Name stimmt mit dem Namen des Load-Balancers überein. Wenn Sie gcloud oder das API verwenden, können Sie einen benutzerdefinierten Namen für die URL-Zuordnung definieren.

URL-Zuordnungskomponenten

Eine URL-Zuordnung ist eine Google Cloud-Konfigurationsressource, die Anfragen für URLs an Back-End-Dienste oder Back-End-Buckets weiterleitet. Dazu werden der Hostname und die Pfadteile für jede von ihr verarbeitete URL verwendet:

  • Ein Hostname ist der Domainnamen-Abschnitt einer URL. Der Hostname der URL http://example.net/video/hd ist beispielsweise example.net.
  • Ein Pfad ist der Teil einer URL, der auf den Hostnamen und die optionale Portnummer folgt. Der Pfadteil der URL http://example.net/video/hd ist beispielsweise /video/hd.
Konfiguration des Load-Balancers mit grundlegendem Ablauf der URL-Zuordnung (zum Vergrößern klicken)
Konfiguration des Load-Balancers mit grundlegendem Ablauf der URL-Zuordnung (zum Vergrößern klicken)

Dieses Diagramm zeigt die Struktur der Load-Balancing-Konfigurationsobjekte, sodass Sie erkennen können, wie sie zueinander in Beziehung stehen.

Mit den folgenden Konfigurationsparametern der URL-Zuordnung steuern Sie, welche Back-End-Dienste oder Back-End-Buckets eingehende Anfragen erhalten:

  • Standard-Back-End-Dienst oder Standard-Back-End-Bucket. Wenn Sie eine URL-Zuordnung erstellen, müssen Sie entweder einen Standard-Back-End-Dienst oder einen Standard-Back-End-Bucket angeben, aber nicht beides. Diese Standardeinstellung stellt den Back-End-Dienst oder Back-End-Bucket dar, an den Google Cloud Anfragen für URLs mit beliebigem Hostnamen weiterleitet, sofern keine entsprechende Hostregel vorhanden ist.

  • Hostregel. Eine Hostregel leitet Anfragen, die an einen oder mehrere zugeordnete Hostnamen gesendet werden, an einen einzelnen Pfad-Matcher weiter. Der Hostname einer URL wird genau mit der Reihe der konfigurierten Hostnamen der Hostregel abgeglichen. Um Anfragen für http://example.net/video/hd an einen Pfad-Matcher weiterzuleiten, benötigen Sie eine einzelne Hostregel, die mindestens den Hostnamen example.net enthält. Diese Hostregel könnte auch Anfragen für andere Hostnamen verarbeiten, sie würde sie jedoch zum selben Pfad-Matcher weiterleiten.

    Wenn Sie Anfragen an verschiedene Pfad-Matcher weiterleiten müssen, müssen Sie andere Hostregeln verwenden. Zwei Hostregeln in einer URL-Zuordnung dürfen nicht denselben Hostnamen enthalten.

    Es ist möglich, alle Hostnamen durch Angabe des Platzhalterzeichens * in der Hostregel abzugleichen. Für die URLs http://example.org, http://example.net/video/hd und http://example.com/audio können alle drei Hostnamen example.org, example.net, und example.com durch Angabe von * in der Hostregel angeglichen werden. Es ist auch möglich, einen partiellen Hostnamen mit dem Platzhalterzeichen * abzugleichen. Beispiel: eine Hostregel *.example.net wird mit den beiden Hostnamen foo.example.net und bar.example.net abgeglichen.

    • Portnummer Sie können auch den Parameter Hostregel verwenden, um eine Portnummer anzugeben. Wenn Sie beispielsweise example.net-Anfragen an Port 8080 weiterleiten möchten, setzen Sie die Hostregel auf example.net:8080.
  • Pfad-Matcher. Ein Pfad-Matcher ist der Konfigurationsparameter, auf den eine Hostregel verweist. Er definiert die Beziehung zwischen dem Pfadteil einer URL und dem Back-End-Dienst oder Back-End-Bucket, der die Anfrage liefern soll. Ein Pfad-Matcher besteht aus zwei Elementen:

    • Standard-Back-End-Dienst für Pfad-Matcher oder Standard-Back-End-Bucket für Pfad-Matcher. Für jeden Pfad-Matcher müssen Sie mindestens einen Standard-Back-End-Dienst oder einen Standard-Back-End-Bucket angeben, aber nicht beides. Diese Standardeinstellung stellt den Back-End-Dienst oder Back-End-Bucket dar, an den Google Cloud Anfragen für URLs weiterleitet, deren Hostnamen mit einer Hostregel für den Pfad-Matcher übereinstimmen und deren URL-Pfade keiner Pfadregel im Pfad-Matcher entsprechen.

    • Pfadregeln. Für jeden Pfad-Matcher können Sie eine oder mehrere Pfadregeln angeben, bei denen es sich um Schlüssel/Wert-Paare handelt, die einen URL-Pfad einem einzelnen Back-End-Dienst oder Back-End-Bucket zuordnen. Der nächste Abschnitt enthält weitere Informationen zur Funktionsweise von Pfadregeln.

Reihenfolge von Vorgängen

Für einen bestimmten Hostnamen und -pfad in einer angeforderten URL verwendet Google Cloud das folgende Verfahren, um die Anfrage an den richtigen Back-End-Dienst oder Back-End-Bucket so weiterzuleiten, wie es in Ihrer URL-Zuordnung konfiguriert ist:

  • Wenn die URL-Zuordnung keine Hostregel für den Hostnamen der URL enthält, leitet Google Cloud Anfragen an den Standard-Back-End-Dienst der URL-Zuordnung oder an den Standard-Back-End-Bucket weiter, je nachdem, welchen Sie definiert haben.

  • Wenn die URL-Zuordnung eine Hostregel mit dem Hostnamen der URL enthält, wird der Pfad-Matcher, auf den sich diese Hostregel bezieht, verwendet:

    • Wenn der Pfad-Matcher eine Pfadregel enthält, die genau mit dem URL-Pfad übereinstimmt, leitet Google Cloud Anfragen an den Back-End-Dienst oder den Back-End-Bucket für diese Pfadregel weiter.

    • Wenn der Pfad-Matcher keine Pfadregel enthält, die genau dem URL-Pfad entspricht, aber eine Pfadregel enthält, die auf /* endet und deren Präfix dem längsten Abschnitt des URL-Pfades entspricht, leitet Google Cloud Anfragen an den Back-End-Dienst oder Back-End-Bucket für diese Pfadregel weiter. Für die URL-Zuordnung mit den beiden Pfad-Matcher-Regeln /video/hd/movie1 und /video/hd/* wird beispielsweise die URL mit der Pfadregel /video/hd/movie1 abgeglichen, wenn sie genau diesen Pfad enthält.

    • Wenn keine der vorherigen Bedingungen zutrifft, leitet Google Cloud Anfragen an den Standard-Back-End-Dienst oder den Standard-Back-End-Bucket des Pfad-Matchers weiter, je nachdem, welchen Sie definiert haben.

Pfad-Matcher-Einschränkungen

Pfad-Matcher und Pfadregeln unterliegen den folgenden Einschränkungen:

  • Eine Pfadregel kann nur ein Platzhalterzeichen (*) hinter einem Schrägstrich (/) enthalten. Zum Beispiel gelten /videos/* und /videos/hd/* für Pfadregeln, /videos* und /videos/hd* hingegen nicht.

  • Pfadregeln verwenden keinen regulären Ausdruck oder Teilstringabgleich. Beispielsweise gelten Pfadregeln für /videos/hd oder /videos/hd/* nicht für eine URL mit dem Pfad /video/hd-abcd. Für diesen Pfad gilt jedoch eine Pfadregel für /video/*.

  • Pfad-Matcher und generell URL-Zuordnungen bieten keine Features, die wie LocationMatch-Anweisungen von Apache funktionieren. Wenn Ihre Anwendung dynamische URL-Pfade mit einem gemeinsamen Präfix wie /videos/hd-abcd und /videos/hd-pqrs generiert und Sie Anfragen an diese Pfade an verschiedene Back-End-Dienste senden müssen, ist dies mit einer URL-Zuordnung vielleicht nicht möglich. In einfachen Fällen, in denen nur wenige dynamische URLs möglich sind, können Sie einen Pfad-Matcher mit einem begrenzten Satz von Pfadregeln erstellen. Bei komplexeren Fällen müssen Sie einen pfadbasierten Abgleich regulärer Ausdrücke auf Ihren Back-Ends durchführen.

Ein Hostname kann nur auf eine einzelne Hostregel und eine Hostregel nur auf einen einzelnen Pfad-Matcher verweisen. Eine einzelne Hostregel kann jedoch mehrere Hostnamen verarbeiten und mehrere Hostregeln können auf einen einzelnen Pfad-Matcher verweisen. Folglich wird jede eindeutige URL nur an einen Back-End-Dienst oder einen Back-End-Bucket weitergeleitet:

  • Google Cloud verwendet den Hostnamen einer URL, um eine einzelne Hostregel und den zugehörigen Pfad-Matcher auszuwählen.

  • Im Pfad-Matcher können Sie nicht mehr als eine Pfadregel für denselben Pfad erstellen. Anfragen für /videos/hd können beispielsweise nicht an mehr als einen Back-End-Dienst oder Back-End-Bucket gerichtet werden. Back-End-Dienste können Back-End-Instanzgruppen oder Back-End-Netzwerk-Endpunktgruppen (NEGs) in verschiedenen Zonen und Regionen haben. Sie können auch Back-End-Buckets mit Multi-Regional Storage erstellen.

URL-Zuordnungen und -Protokolle

Sie können dieselbe URL-Zuordnung, Hostregeln und Pfadabgleiche verwenden, um sowohl HTTP- als auch HTTPS-Anfragen von Clients zu verarbeiten, solange sowohl ein Ziel-HTTP-Proxy als auch ein Ziel-HTTPS-Proxy auf die URL-Zuordnung verweisen.

Sie können Weiterleitungen mithilfe von URL-Zuordnungen konfigurieren, wie in den folgenden Anleitungen dargestellt:

Einfachste URL-Zuordnung

Die einfachste URL-Zuordnung hat nur einen Standard-Back-End-Dienst oder einen Standard-Back-End-Bucket. Sie enthält keine Hostregeln und keine Pfad-Matcher. Alle angeforderten URLs werden entweder vom Standard-Back-End-Dienst oder vom Standard-Back-End-Bucket verarbeitet, je nachdem, welchen Sie definiert haben.

Wenn Sie einen Standard-Back-End-Dienst definieren, leitet Google Cloud Anfragen an die Back-End-Instanzgruppen oder Back-End-Netzwerk-Endpunktgruppen (NEGs) gemäß der Konfiguration des Back-End-Dienstes weiter.

URL-Zuordnung ohne Regeln, außer der Standardeinstellung (zum Vergrößern klicken)
URL-Zuordnung ohne Regeln, außer der Standardeinstellung (zum Vergrößern anklicken)

URL-Zuordnungsbeispiel

Das folgende Beispiel zeigt die Reihenfolge der Vorgänge für eine URL-Zuordnung. Zur Vereinfachung des Konzepts werden nur Back-End-Dienste verwendet. Sie können sie jedoch stattdessen durch Back-End-Buckets ersetzen. Mit den folgenden Schritten konfigurieren Sie die URL-Zuordnung für einen externen HTTP(S)-Load-Balancer. Ein Beispiel für die Erstellung der anderen Komponenten des externen HTTP(S)-Load-Balancers finden Sie unter Externen HTTP(S)-Load-Balancer erstellen. Ein Beispiel für das Erstellen einer URL-Zuordnung eines internen HTTP(S)-Load-Balancers und weiterer Komponenten finden Sie unter Vorbereitung für den Aufbau des internen HTTP-Load-Balancers.

Jeder im folgenden Beispiel beschriebene Back-End-Dienst hat ein externes Schema und verwendet das HTTP-, HTTPS- oder HTTP/2-Protokoll.

  1. Erstellen Sie eine URL-Zuordnung für den Load-Balancer und geben Sie einen Standard-Back-End-Dienst an. In diesem Beispiel wird eine URL-Zuordnung mit dem Namen video-org-url-map erstellt, die auf einen vorhandenen Back-End-Dienst namens org-site verweist.

    gcloud compute url-maps create video-org-url-map \
        --default-service=org-site
    
  2. Erstellen Sie einen Pfadabgleich namens video-matcher mit den folgenden Merkmalen:

    • Der Standard-Back-End-Dienst ist video-site, ein bereits vorhandener Back-End-Dienst.
    • Fügen Sie Pfadregeln hinzu, die Anfragen für den exakten URL-Pfad /video/hd oder das URL-Pfadpräfix /video/hd/* an einen vorhandenen Back-End-Dienst mit dem Namen video-hd weiterleiten.
    • Fügen Sie Pfadregeln hinzu, die Anfragen für den exakten URL-Pfad /video/sd oder das URL-Pfadpräfix /video/sd/* an einen vorhandenen Back-End-Dienst mit dem Namen video-sd weiterleiten.
    gcloud compute url-maps add-path-matcher video-org-url-map \
        --path-matcher-name=video-matcher \
        --default-service=video-site \
        --path-rules=/video/hd=video-hd,/video/hd/*=video-hd,/video/sd=video-sd,/video/sd/*=video-sd
    
  3. Erstellen Sie eine Hostregel für den example.net-Hostnamen, der auf den video-matcher-Pfad-Matcher verweist.

    gcloud compute url-maps add-host-rule video-org-url-map \
        --hosts=example.net \
        --path-matcher-name=video-matcher
    

Die video-org-url-map-URL-Zuordnung leitet angeforderte URLs folgendermaßen an Back-Ends weiter:

URL-Zuordnung mit einer Pfadregel, Pfad-Matchern und einer Hostregel (zum Vergrößern klicken)
URL-Zuordnung mit einer Pfadregel, Pfad-Matchern und einer Hostregel (zum Vergrößern anklicken)

In der folgenden Tabelle wird die Anfrageverarbeitung im vorherigen Diagramm erläutert.

Hostname URL-Pfade Ausgewählter Back-End-Dienst Grund für die Auswahl
Hostname
example.org und alle anderen Hostnamen, die sich vom folgenden
unterscheiden example.net:
Alle Pfade org-site Der Hostname befindet sich in keiner Hostregel der URL-Zuordnung. Daher wird die Anfrage an den Standard-Back-End-Dienst der URL-Zuordnung weitergeleitet.
Hostname:
example.net
/video
/video/examples
video-site Die Anfrage wird an den Standard-Back-End-Dienst gesendet, da keine Pfadregel für /video/ oder /video/* vorliegt. Die Hostregel für example.net verweist auf einen Pfad-Matcher, der aber über keine Pfadregeln verfügt, die für diese Pfade gelten würden.
Hostname:
example.net
/video/hd
/video/hd/movie1
/video/hd/movies/movie2
Andere URLs, die mit /video/hd/* beginnen
video-hd Eine Hostregel für example.net verweist auf einen Pfad-Matcher, dessen Pfadregeln Anfragen für URL-Pfade, die genau mit /video/hd übereinstimmen oder mit /video/hd/* beginnen, an den Back-End-Dienst video-hd weiterleiten.
Hostname:
example.net
/video/sd
/video/sd/show1
/video/sd/shows/show2
Andere URLs, die mit /video/sd/* beginnen
video-sd Eine Hostregel für example.net verweist auf einen Pfad-Matcher, dessen Pfadregeln Anfragen für URL-Pfade, die genau mit /video/sd übereinstimmen oder mit /video/sd/* beginnen, an den Back-End-Dienst video-sd weiterleiten.

Referenzen zu API und gcloud

Eine Beschreibung der Attribute und Methoden, die Sie für URL-Zuordnungen über die REST API nutzen können, finden Sie unter:

Informationen zum Befehlszeilentool gcloud finden Sie unter:

Weitere Informationen