Diese Seite enthält zwei Beispiele für globale externe HTTP(S)-Load-Balancer (klassisch):
- Routing anhand von Abfrageparametern einrichten
- Routing anhand von benutzerdefinierten HTTP-Headern einrichten
Informationen zum Konfigurieren der Trafficverwaltung für globale externe HTTP(S)-Load-Balancer mit erweiterter Trafficverwaltung und für regionale externe HTTP(S)-Load-Balancer mit erweiterter Trafficverwaltung finden Sie auf den folgenden Seiten:
- Trafficverwaltung für globale externe HTTP(S)-Load-Balancer einrichten
- Trafficverwaltung für regionale externe HTTP(S)-Load-Balancer einrichten
Hinweis
- Übersicht über die Trafficverwaltung für externe HTTP(S)-Load-Balancer
- Machen Sie sich mit der URL-Zuordnungs-API vertraut.
Routing anhand von Abfrageparametern einrichten
In diesem Beispiel wird gezeigt, wie Anfrageparameter für A/B Testing verwendet werden, indem der Abfragestring abgeglichen wird.
Zwei Back-End-Instanzgruppen hinzufügen
Damit das Routing funktioniert, müssen Sie mehrere Back-Ends haben.
Zum Einrichten von zwei Back-Ends müssen sich die VMs in zwei Instanzgruppen befinden. In dieser Anleitung wird beschrieben, wie Sie verwaltete Instanzgruppen mit Linux-VMs erstellen, auf denen Apache ausgeführt wird, und wie Sie dann das Load-Balancing einrichten.
Die verwalteten Instanzgruppen stellen VMs bereit, die die Back-End-Server eines externen HTTP-Load-Balancers ausführen. Zu Demonstrationszwecken stellen Back-Ends ihre eigenen Hostnamen bereit.
Der Einfachheit halber befinden sich die Back-Ends in derselben Region. Wenn ein multiregionaler Standort eingerichtet werden soll, müssen Sie für die zweite Region eine Instanzvorlage einrichten.
Console
Erstellen Sie eine Instanzvorlage. Rufen Sie in der Cloud Console die Seite Instanzvorlagen auf.
- Klicken Sie auf Instanzvorlage erstellen.
- Geben Sie für Name
lb-backend-template
ein. - Das Bootlaufwerk sollte auf ein Debian-Image wie Debian GNU/Linux 9 (Stretch) eingestellt sein. Diese Anleitungen verwenden Befehle, die nur für Debian verfügbar sind, z. B.
apt-get
. Fügen Sie unter Verwaltung, Sicherheit, Laufwerke, Netzwerke, einzelne Mandanten auf dem Tab Verwaltung das folgende Skript in das Feld Startskript ein.
#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" sudo echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2
Fügen Sie auf dem Tab Netzwerk die Netzwerk-Tags hinzu:
allow-health-check
Klicken Sie auf Erstellen.
Erstellen Sie eine verwaltete Instanzgruppe. Öffnen Sie in der Cloud Console die Seite Instanzgruppen.
- Klicken Sie auf Instanzgruppe erstellen.
- Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus. Weitere Informationen finden Sie unter Zustandslose oder zustandsorientierte MIGs.
- Geben Sie für Name
first-example-ig
ein. - Wählen Sie unter Ort die Option Einzelne Zone aus.
- Wählen Sie unter Region die gewünschte Region aus. In diesem Beispiel wird
us-east1
verwendet. - Wählen Sie bei Zone die Option
us-east1-b
aus. - Wählen Sie unter Instanzvorlage die Instanzvorlage
lb-backend-template
aus. - Geben Sie
2
bei Maximale Anzahl von Instanzen ein. - Wählen Sie
Off:do not autoscale
unter Autoscaling-Modus aus. - Klicken Sie auf Erstellen.
Erstellen Sie eine weitere verwaltete Instanzgruppe wie diese. Nennen Sie den zweiten Namen second-example-ig
und verwenden Sie die Vorlage lb-backend-template
.
gcloud
Erstellen Sie eine Instanzvorlage.
gcloud compute instance-templates create `lb-backend-template` \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-9 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" sudo echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sudo systemctl restart apache2'
Erstellen Sie die erste verwaltete Instanzgruppe anhand der Vorlage.
gcloud compute instance-groups managed create first-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-b
Erstellen Sie die zweite verwaltete Instanzgruppe anhand der Vorlage.
gcloud compute instance-groups managed create second-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-c
Firewallregel konfigurieren
In diesem Beispiel erstellen Sie die Firewallregel fw-allow-health-check
.
Dies ist eine Ingress-Regel, die Traffic von den Systemdiagnosen von Google Cloud (130.211.0.0/22
und 35.191.0.0/16
) zulässt. In diesem Beispiel wird das Ziel-Tag allow-health-check
zur Identifizierung der VMs verwendet.
Console
- Rufen Sie in der Google Cloud Console die Seite "Firewalls" auf.
Zur Seite "Firewalls" - Klicken Sie auf Firewallregel erstellen, um die zweite Firewallregel zu erstellen:
- Geben Sie als Namen
fw-allow-health-check
ein. - Wählen Sie unter Netzwerk die Option
Default
aus. - Wählen Sie unter Ziele Angegebene Ziel-Tags aus.
- Tragen Sie im Feld Ziel-Tags
allow-health-check
ein. - Legen Sie unter Quellfilter die Option IPv4-Bereiche fest.
- Legen Sie unter Quell-IPv4-Bereiche die Werte
130.211.0.0/22
und35.191.0.0/16
fest. - Wählen Sie unter Protokolle und Ports die Option Angegebene Protokolle und Ports aus.
- Klicken Sie das Kästchen neben tcp an und geben Sie
80
als Portnummer ein. - Klicken Sie auf Erstellen.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp
Externe IP-Adresse reservieren
Nachdem die Instanzen nun ausgeführt werden, richten Sie eine globale statische externe IP-Adresse ein, über die Ihre Kunden den Load-Balancer erreichen können.
Console
- Gehen Sie in der Google Cloud Console auf die Seite "Externe IP-Adressen".
Zur Seite "Externe IP-Adressen" - Klicken Sie auf Statische Adresse reservieren, um eine IPv4-Adresse zu reservieren.
- Weisen Sie als Name
lb-ipv4-1
zu. - Legen Sie für die Netzwerkstufe Standard fest.
- Setzen Sie die IP-Version auf IPv4.
- Legen Sie für Typ Global fest.
- Klicken Sie auf Reservieren.
- Prüfen Sie, dass der Typ auf Global festgelegt ist.
- Klicken Sie auf Reservieren.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Notieren Sie sich die reservierte IPv4-Adresse:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Load-Balancer-Back-Ends einrichten
Console
In der Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
- Erstellen Sie eine Systemdiagnose.
gcloud compute health-checks create http http-basic-check \ --port 80
- Erstellen Sie den ersten Back-End-Dienst.
-
Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer (Vorschau) die
beta
-Version des gcloud CLI-Befehls undload-balancing-scheme=EXTERNAL_MANAGED
. Diese Einstellung bietet erweiterte Funktionen zur Trafficverwaltung. - Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer (klassisch)
load-balancing-scheme=EXTERNAL
.
gcloud compute backend-services create service-a \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
-
Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer (Vorschau) die
- Erstellen Sie den zweiten Back-End-Dienst.
gcloud compute backend-services create service-b \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Fügen Sie dem ersten Back-End-Dienst Ihre erste Instanzgruppe als Back-End hinzu.
gcloud compute backend-services add-backend service-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=first-example-ig \ --instance-group-zone=us-east1-b \ --global
- Fügen Sie Ihre zweite Instanzgruppe als Back-End zum zweiten Back-End-Dienst hinzu.
gcloud compute backend-services add-backend service-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=second-example-ig \ --instance-group-zone=us-east1-c \ --global
URL-Zuordnung erstellen
Console
In der Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
Erstellen Sie eine YAML-Datei vom Typ
/tmp/web-map-http.yaml
. Ersetzen SiePROJECT_ID
durch Ihre Projekt-ID.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: web-map-http pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http tests: - description: Test routing for query ABTest with A host: example.com path: /?foo=bar&ABTest=A&bar=foo service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a expectedOutputUrl: http://example.com/?foo=bar&ABTest=A&bar=foo - description: Test routing for query ABTest with B host: example.com path: /?foo=bar&ABTest=B&bar=foo service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/service-b expectedOutputUrl: http://example.com/?foo=bar&ABTest=B&bar=foo
Validieren Sie die URL-Zuordnung.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Wenn die Tests erfolgreich sind und der Befehl eine Erfolgsmeldung ausgibt, speichern Sie die Änderungen in der URL-Zuordnung.
Aktualisieren Sie die URL-Zuordnung.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Zielproxy und Weiterleitungsregel erstellen
Console
In der Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
- Erstellen Sie einen HTTP-Ziel-Proxy, um Anfragen an Ihre URL-Zuordnung zu leiten.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map-http
- Erstellen Sie eine globale Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten.
-
Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer (Vorschau) die
beta
-Version des gcloud CLI-Befehls undload-balancing-scheme=EXTERNAL_MANAGED
. Diese Einstellung bietet erweiterte Funktionen zur Trafficverwaltung. - Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer (klassisch)
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
-
Verwenden Sie für einen globalen externen HTTP(S)-Load-Balancer (Vorschau) die
Test
Notieren Sie sich die reservierte IPv4-Adresse:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Führen Sie folgenden Befehl aus, um diese Einrichtung zu testen:
curl http://IP_ADDRESS?ABTest=A
curl http://IP_ADDRESS?ABTest=B
Öffnen Sie http://IP_ADDRESS?ABTest=A
und http://IP_ADDRESS?ABTest=B
in einem Browser.
Routing anhand von benutzerdefinierten HTTP-Headern einrichten
In diesem Beispiel wird das Hinzufügen und Entfernen von benutzerdefinierten HTTP-Headern für intelligentes Routing veranschaulicht.
Hinweis
Sie können einen vorhandenen externen HTTP(S)-Load-Balancer verwenden oder einen neuen erstellen.
Sie können dieses Feature mit jedem der unterstützten Back-End-Typen verwenden. In diesem Beispiel wird davon ausgegangen, dass Sie VMs in einer Instanzgruppe verwenden.
Informationen zum Einrichten eines einfachen Load-Balancers finden Sie oben im Beispiel für die Einrichtung anhand von Abfrageparametern.
URL-Zuordnung aktualisieren
Console
In der Cloud Console kann derzeit kein headerbasiertes und parameterbasiertes Routing eingerichtet werden. Verwenden Sie stattdessen gcloud
oder die API.
gcloud
In diesem Beispiel wird gezeigt, wie HTTP-Anfrage-Header für A/B Testing verwendet werden, indem Werte in den HTTP-Headern der Anfrage abgeglichen werden.
Erstellen Sie eine YAML-Datei vom Typ
/tmp/web-map-http.yaml
. Ersetzen SiePROJECT_ID
durch Ihre Projekt-ID.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a kind: compute#urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: path-matcher-1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b tests: - description: Test routing for query ABTest with A host: foobar path: / headers: - name: ABTest value: A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - description: Test routing for query ABTest with B host: foobar path: / headers: - name: ABTest value: B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b
Validieren Sie die URL-Zuordnung.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Wenn die Tests erfolgreich sind und der Befehl eine Erfolgsmeldung ausgibt, speichern Sie die Änderungen in der URL-Zuordnung.
Aktualisieren Sie die URL-Zuordnung.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Test
Testen Sie diese Einrichtung mit der IPv4-Adresse des zugehörigen Load-Balancers mit folgendem Befehl:
curl http://IP_ADDRESS -H "ABTest: A"
curl http://IP_ADDRESS -H "ABTest: B"