In dieser Anleitung wird das Erstellen einer gewichteten externen Passthrough-Network Load Balancer-Bereitstellung für die einzelnen VM-Instanzen unter Verwendung eines regionalen Backend-Dienstes erläutert.
In dieser Anleitung erstellen Sie eine Instanzgruppe mit drei VM-Instanzen und weisen jeder Instanz eine Gewichtung zu. Sie erstellen eine HTTP-Systemdiagnose, um die Gewichtungen von Backend-Instanzen zu melden. Das gewichtete Load Balancing ist für den Backend-Dienst mit der Ort-Load Balancer-Richtlinie als WEIGHTED_MAGLEV
aktiviert.
Hinweise
- Lesen Sie Backend-Dienst-basierter externer Passthrough-Network Load Balancer.
Installieren Sie die Google Cloud CLI. Eine vollständige Übersicht über das Tool finden Sie im Leitfaden zur gcloud CLI. Befehle für das Load Balancing finden Sie in der Referenz für die API und gcloud CLI.
Wenn Sie die Google Cloud CLI noch nicht ausgeführt haben, führen Sie zuerst
gcloud init
zur Authentifizierung aus.Aktivieren Sie die Compute API.
gcloud services enable compute.googleapis.com
VPC-Netzwerk, Subnetze und Firewallregeln erstellen
Erstellen Sie ein VPC-Netzwerk, ein Subnetz und Firewallregeln zum Zulassen von eingehendem Traffic, um Verbindungen zu den Backend-VMs Ihres Load Balancers zuzulassen.
Erstellen Sie ein VPC-Netzwerk und ein Subnetz:
a. Führen Sie den folgenden
gcloud compute networks create
Befehl aus, um das VPC-Netzwerk zu erstellen:gcloud compute networks create NETWORK_NAME --subnet-mode custom
b. In diesem Beispiel lautet der primäre IPv4-Adressbereich des Subnetzes
10.10.0.0/24
. Führen Sie dengcloud compute networks subnets create
-Befehl aus, um das Subnetz zu erstellen:gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK_NAME \ --range=10.10.0.0/24 \ --region=us-central1
Dabei gilt:
NETWORK_NAME
ist der Name des zu erstellenden VPC-Netzwerks.SUBNET_NAME
ist der Name des zu erstellenden Subnetzwerks.
Erstellen Sie eine Firewallregel für eingehenden Traffic, damit an die TCP-Ports 80 und 443 gesendete Pakete an die Backend-VMs zugestellt werden können. In diesem Beispiel lässt die Firewallregel Verbindungen von jeder Quell-IP-Adresse zu. Die Firewallregel gilt für VMs mit dem Netzwerk-Tag
network-lb-tag
.Führen Sie den
gcloud compute firewall-rules create
-Befehl aus, um die Firewallregel zu erstellen:gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --direction=INGRESS \ --priority=1000 \ --network=NETWORK_NAME \ --action=ALLOW \ --rules=tcp:80,tcp:443 \ --source-ranges=0.0.0.0/0 \ --target-tags=network-lb-tag
Ersetzen Sie
FIREWALL_RULE_NAME
durch den Namen der zu erstellenden Firewallregel.
VM-Instanzen erstellen und Gewichtungen zuweisen
Erstellen Sie drei VM-Instanzen und weisen Sie Gewichtungen zu:
Konfigurieren Sie drei Backend-VM-Instanzen so, dass Gewichtungen im
X-Load-Balancing-Endpoint-Weight
-Header mit HTTP-Antworten zurückgegeben werden. In dieser Anleitung konfigurieren Sie eine Backend-Instanz zur Meldung einer Gewichtung von null, eine zweite Backend-Instanz zur Meldung einer Gewichtung von 100, und eine dritte Backend-Instanz zur Meldung einer Gewichtung von 900.Führen Sie den
gcloud compute instances create
-Befehl aus, um die Instanzen zu erstellen:gcloud compute instances create instance-0 \ --zone=us-central1-a \ --tags=network-lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=SUBNET_NAME \ --metadata=load-balancing-weight=0,startup-script='#! /bin/bash apt-get update apt-get install apache2 -y ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html lb_weight="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)" echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \ tee /etc/apache2/conf-enabled/headers.conf systemctl restart apache2'
gcloud compute instances create instance-100 \ --zone=us-central1-a \ --tags=network-lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=SUBNET_NAME \ --metadata=load-balancing-weight=100,startup-script='#! /bin/bash apt-get update apt-get install apache2 -y ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html lb_weight="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)" echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \ tee /etc/apache2/conf-enabled/headers.conf systemctl restart apache2'
gcloud compute instances create instance-900 \ --zone=us-central1-a \ --tags=network-lb-tag \ --image-family=debian-12 \ --image-project=debian-cloud \ --subnet=SUBNET_NAME \ --metadata=load-balancing-weight=900,startup-script='#! /bin/bash apt-get update apt-get install apache2 -y ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html lb_weight="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)" echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \ tee /etc/apache2/conf-enabled/headers.conf systemctl restart apache2'
Instanzgruppe erstellen
In dieser Anleitung geben Sie Anweisungen zum Erstellen einer nicht verwalteten Instanzgruppe, die alle drei VM-Instanzen umfasst (instance-0
, instance-100
und instance-900
).
Führen Sie den
gcloud compute instance-groups unmanaged create
-Befehl aus, um die Instanzgruppe zu erstellen:gcloud compute instance-groups unmanaged create INSTANCE_GROUP \ --zone=us-central1-a
gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP \ --zone=us-central1-a \ --instances=instance-0,instance-100,instance-900
Ersetzen Sie
INSTANCE_GROUP
durch den Namen der zu erstellenden Instanzgruppe.
Erstellen einer HTTP-Systemdiagnose
In dieser Anleitung geben Sie Anweisungen zum Erstellen einer HTTP-Systemdiagnose, um die HTTP-Antwort mit der Gewichtung der Backend-VM zu lesen.
Führen Sie zum Erstellen der HTTP-Systemdiagnose den
gcloud compute health-checks create
-Befehl aus:gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \ --region=us-central1
Ersetzen Sie
HTTP_HEALTH_CHECK_NAME
durch den Namen der zu erstellenden HTTP-Systemdiagnose.
Backend-Dienst erstellen
Das folgende Beispiel enthält Anweisungen zum Erstellen eines regionalen externen Backend-Dienstes, der für die Verwendung des gewichteten Load-Balancings konfiguriert ist.
Erstellen Sie einen Backend-Dienst mit der HTTP-Systemdiagnose und legen Sie die Load-Balancer-Richtlinie für Standorte auf
WEIGHTED_MAGLEV
fest.Führen Sie den
gcloud compute backend-services create
-Befehl aus, um den Backend-Dienst zu erstellen:gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=external \ --protocol=tcp \ --region=us-central1 \ --health-checks=HTTP_HEALTH_CHECK_NAME \ --health-checks-region=us-central1 \ --locality-lb-policy=WEIGHTED_MAGLEV
Ersetzen Sie
BACKEND_SERVICE_NAME
durch den Namen des zu erstellenden Backend-Dienstes.
Fügen Sie die Instanzgruppe dem Backend-Dienst hinzu:
Führen Sie den
gcloud compute backend-services add-backend
-Befehl aus, um die Instanzgruppe hinzuzufügen:gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ --instance-group-zone=us-central1-a \ --region=us-central1
Reservieren Sie eine regionale externe IP-Adresse für den Load Balancer.
Führen Sie den
gcloud compute addresses create
-Befehl aus, um eine oder mehrere IP-Adressen zu reservieren:gcloud compute addresses create ADDRESS_NAME \ --region us-central1
Ersetzen Sie
ADDRESS_NAME
durch den Namen der zu erstellenden IP-Adresse.Verwenden Sie den
compute addresses describe
-Befehl, um das Ergebnis anzeigen zu lassen: Notieren Sie sich die reservierte statische externe IP-Adresse (IP_ADDRESS
).gcloud compute addresses describe ADDRESS_NAME
Erstellen Sie eine Weiterleitungsregel mithilfe der reservierten regionalen externen IP-Adresse
IP_ADDRESS
. Verbinden Sie die Weiterleitungsregel mit dem Backend-Dienst.Führen Sie den
gcloud compute forwarding-rules create
-Befehl aus, um die Weiterleitungsregel zu erstellen:gcloud compute forwarding-rules create FORWARDING_RULE \ --region=us-central1 \ --ports=80 \ --address=IP_ADDRESS \ --backend-service=BACKEND_SERVICE_NAME
Dabei gilt:
FORWARDING_RULE
ist der Name der zu erstellenden Weiterleitungsregel.IP_ADDRESS
ist die IP-Adresse, die der Instanz zugewiesen werden soll. Verwenden Sie die reservierte statische externe IP-Adresse, nicht den Adressnamen.
Backend-Gewichtungen mit der Backend-Dienst-API prüfen
Prüfen Sie, ob die Backend-Gewichtungen ordnungsgemäß an die HTTP-Systemdiagnose gemeldet werden.
Führen Sie den
gcloud compute backend-services get-health
-Befehl aus, um Backend-Gewichtungen (zusammen mit Systemstatuswerten) von einem Backend-Dienst abzurufen:gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region=us-central1
Die Ausgabe sieht so aus:
backend: https://www.googleapis.com/compute/projects/project-name/{project}/zones/us-central1-a/instanceGroups/{instance-group-name} status: healthStatus: - forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name} forwardingRuleIp: 34.135.46.66 healthState: HEALTHY instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-0 ipAddress: 10.10.0.5 port: 80 weight: '0' - forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name} forwardingRuleIp: 34.135.46.66 healthState: HEALTHY instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-100 ipAddress: 10.10.0.6 port: 80 weight: '100' - forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name} forwardingRuleIp: 34.135.46.66 healthState: HEALTHY instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-900 ipAddress: 10.10.0.7 port: 80 weight: '900' kind: compute#backendServiceGroupHealth