IPv6-Dual-Stack für Cloud Service Mesh konfigurieren
Auf dieser Seite erfahren Sie, wie Sie IPv6-Traffic in Cloud Service Mesh mit proxybasierten Load-Balancern von Traffic Director (TD) ausgleichen. Außerdem wird beschrieben, wie Sie von IPv4-basierten Bereitstellungen zu Dual-Stack -Bereitstellungen (IPv4 und IPv6) migrieren und wie Sie von Dual-Stack zu IPv4 migrieren.
Bei Dual-Stack-Bereitstellungen können Sie angeben, ob IPv4 oder IPv6 an das Service-Backend gesendet werden soll. Der Proxy oder gRPC-Client testet jeden Datenpfad in Ihrer bevorzugten Reihenfolge und wählt den aus, der Ihren Präferenzen entspricht und unterstützt wird.
Dual-Stack-Funktionen werden in gRPC 1.66.1 und höher für C++ und Python, 1.12 und höher für Node und 1.71 und höher für Go unterstützt. Java wird derzeit nicht unterstützt.
Versionen von gRPC ohne Dual-Stack-Unterstützung (z.B. Go und Versionen vor 1.66 in anderen Sprachen) verwenden nur die erste Adresse jedes Endpunkts in der von TD gesendeten Reihenfolge.
Hinweis
In dieser Anleitung wird davon ausgegangen, dass Sie Folgendes bereits getan haben:
- Sie haben die Service Routing APIs mit Envoy und proxylosen Arbeitslasten eingerichtet.
- Sie haben die Schritte im Abschnitt Einrichtung fortsetzen der Onboarding-Anleitung ausgeführt.
IPv6-Backend-Dienst einrichten
In diesem Abschnitt konfigurieren Sie Folgendes:
- Zwei Backend-Gruppen (entweder Instanzgruppen, verwaltete Instanzgruppen oder Netzwerk-Endpunktgruppen), eine in jeder von zwei verschiedenen Zonen in derselben Region.
- Zwei VM-Instanzen in jeder Backend-Gruppe.
- Eine Systemdiagnose zur Prüfung der Instanzintegrität.
- Firewallregeln, mit denen Systemdiagnosen Backends erreichen können.
- Ein Backend-Dienst.
- Der Backend-Dienst, der die beiden konfigurierten Backend-Gruppen enthält.
Subnetz für Backends einrichten
Mit dem folgenden Befehl werden interne Adressbereiche für IPv4 und IPv6 zugewiesen. VMs im Subnetz können entweder mit dem einen oder dem anderen Adresstyp zugewiesen werden.
Es werden nur Subnetze im benutzerdefinierten Modus unterstützt. Der automatische Modus wird nicht unterstützt. Sie können für das gesamte VPC-Netzwerk in den benutzerdefinierten Modus wechseln und dann die IPv6-Backends (verwaltete Instanzgruppen oder Netzwerk-Endpunktgruppen) auffüllen.
Dual-Stack-Netzwerk erstellen:
gcloud compute networks create NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6Dual-Stack-Subnetz für Backend-VMs erstellen:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --range=PRIMARY_IPv4_RANGE \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=IPv6_ACCESS_TYPE \ --region=REGIONErsetzen Sie Folgendes:
- SUBNET: ein Name für das neue Subnetz.
- NETWORK: der Name des VPC-Netzwerks mit dem neuen Subnetz.
- PRIMARY_IPv4_RANGE: der primäre IPv4-Bereich für das neue Subnetz in CIDR-Notation. Weitere Informationen finden Sie unter IPv4-Subnetzbereiche.
- IPv6_ACCESS_TYPE: der IPv6-Zugriffstyp.
Er kann
EXTERNALoderINTERNALsein. - REGION: die Google Cloud Region, in der das neue Subnetz erstellt wird.
Backends einrichten
Sie können entweder verwaltete Instanzgruppen, nicht verwaltete Instanzgruppen, oder Netzwerk-Endpunktgruppen verwenden.
Verwaltete Instanzgruppe
Verwaltete Instanzgruppe mit
dual-stack-gateway-templateerstellen:gcloud alpha compute instance-templates create dual-stack-gateway-template \ --region=REGION \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=dual-stack-http-server \ --network=NETWORK \ --subnet=SUBNET \ --stack-type=IPV4_IPV6 \ --service-proxy=enabled,scope=gateway-proxy
Verwaltete Instanzgruppe für Gateway-Proxy erstellen:
gcloud compute instance-groups managed create dual-stack-ZONE-gateway-mig \ --zone=ZONE \ --size=1 \ --template=dual-stack-gateway-template
Verwaltete Instanzgruppe für Backend erstellen:
gcloud compute instance-templates create dual-stack-backend-template \ --region=REGION \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=dual-stack-http-server \ --network=NETWORK \ --subnet=SUBNET \ --stack-type=IPV4_IPV6 \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype <html><body><h1>'\`dual-stack-server\`'</h1></body></html>' | sudo tee /var/www/html/index.html"gcloud compute instance-groups managed create dual-stack-ZONE-backend-mig \ --zone=ZONE \ --size=1 \ --template=dual-stack-backend-template
Benannten Port zur verwalteten Instanzgruppe hinzufügen:
gcloud compute instance-groups set-named-ports us-ig-1 \ --named-ports http:80 \ --zone ZONE \ gcloud compute instance-groups set-named-ports us-ig-2 \ --named-ports http:80 \ --zone ZONE
Wir verwenden separate Systemdiagnosen für das Load-Balancing und für die automatische Reparatur. Systemdiagnosen für das Load-Balancing sind in der Regel aggressiver konfiguriert, da sie darüber entscheiden, ob eine VM Nutzertraffic empfängt und ob Sie Traffic bei Bedarf schnell umleiten möchten.
Bei Systemdiagnosen für die automatische Reparatur hingegen werden von Compute Engine fehlerhafte VMs proaktiv ausgetauscht. Daher sollte diese Systemdiagnose konservativer sein als jene für das Load-Balancing. Die automatische Reparatur für Dual-Stack-VMs basiert auf IPv4-Systemdiagnosen.
Systemdiagnose erstellen:
gcloud compute health-checks create http dualstack-health-check-http \
Achten Sie darauf, dass Firewallregeln Systemdiagnosen zulassen:
IPv4
gcloud compute firewall-rules create dual-stack-allow-ipv4-health-check \ --network=NETWORK \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,130.211.0.0/22 \ --target-tags=dual-stack-http-server \ --rules=tcp:22,80
IPv6
gcloud compute firewall-rules create dual-stack-allow-ipv6-health-check \ --network=NETWORK \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=::/0 \ --target-tags=dual-stack-http-server \ --rules=tcp:22,80
Wenden Sie die Systemdiagnose auf die verwaltete Instanzgruppe an. Konfigurieren Sie dazu eine Richtlinie zur automatischen Reparatur:
gcloud compute instance-groups managed update us-mig-1 \ --health-check dualstack-health-check-http \ --initial-delay 300 \ --zone us-central1-a
Mit der Einstellung für die anfängliche Verzögerung wird eine potenzielle vorzeitige Neuerstellung der VM durch die automatische Reparatur verzögert, wenn die VM gerade gestartet wird. Der Timer für die anfängliche Verzögerung beginnt, wenn sich das Feld currentAction der VM in VERIFYING ändert.
Nicht verwaltete Instanzgruppen
Instanzgruppen konfigurieren:
gcloud compute instance-groups unmanaged create us-ig-1 \ --zone us-central1-a \ gcloud compute instance-groups unmanaged create us-ig-2 \ --zone us-central1-b
Zwei Dual-Stack-VM-Instanzen in jeder Instanzgruppe erstellen:
gcloud compute instances create inst-us-central1-1 \ --image-family debian-12 \ --image-project debian-cloud \ --tags network-lb \ --zone us-central1-a \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_IPV6 \ gcloud compute instances create inst-us-central1-2 \ --image-family debian-12 \ --image-project debian-cloud \ --tags network-lb \ --zone us-central1-a \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_IPV6 \ gcloud compute instances create inst-us-central1-3 \ --image-family debian-12 \ --image-project debian-cloud \ --tags network-lb \ --zone us-central1-b \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_IPV6 \ gcloud compute instances create inst-us-central1-4 \ --image-family debian-12 \ --image-project debian-cloud \ --tags network-lb \ --zone us-central1-b \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_IPV6
Die IPv6-Adresse wird automatisch zugewiesen.
VMs zu Instanzgruppen hinzufügen:
gcloud compute instance-groups unmanaged add-instances us-ig-1 \ --instances inst-us-central1-1,inst-us-central1-2 \ --zone us-central1-a \ gcloud compute instance-groups unmanaged add-instances us-ig-2 \ --instances inst-us-central1-3,inst-us-central1-4 \ --zone us-central1-b
NEG
Backend hinzufügen, bei dem
--network-endpoint-typeGCE_VM_IP_PORT ist:gcloud compute network-endpoint-groups create us-neg-lb-1 \ --network=NETWORK SUBNET \ --zone=us-central1-a --network-endpoint-type=GCE_VM_IP_PORT \ gcloud compute network-endpoint-groups create us-neg-lb-2 \ --network=NETWORK SUBNET \ --zone=us-central1-b --network-endpoint-type=GCE_VM_IP_PORT
Endpunkte zur Netzwerk-Endpunktgruppe hinzufügen:
gcloud compute network-endpoint-groups update us-neg-lb-1 \--zone=us-central1-a \ --add-endpoint 'instance=inst-us-central1-1,ip=IPV4_ADRS_1, ipv6=IPV6_ADRS_1,port=80' \ --add-endpoint 'instance=inst-us-central1-2,ip=IPV4_ADRS_2, ipv6=IPV6_ADRS_2,port=80' \ gcloud compute network-endpoint-groups update us-neg-lb-2 --zone=us-central1-b \ --add-endpoint 'instance=inst-us-central1-3,ip=IPV4_ADRS_3, ipv6=IPV6_ADRS_3,port=80' \ --add-endpoint 'instance=inst-us-central1-4,ip=IPV4_ADRS_4,ipv6=IPV6_ADRS_4,port=80'
Systemdiagnosen konfigurieren
Systemdiagnose für den Backend-Dienst erstellen:
gcloud compute health-checks create http[s] my-health-check
--global
--request-path '/'
--port SERVICE_PORTErsetzen Sie SERVICE_PORT durch die Portnummer zwischen 1 und 65535.
Firewallregel erstellen, um Systemdiagnosen zuzulassen:
gcloud compute firewall-rules create allow-scan-probe \ --action allow \ --description "allow-scan-probe" \ --rules tcp:SERVICE_PORT \ --source-ranges 2600:2d00:1:b029::/64 \ --priority 10 \ --network=NETWORK
Der Bereich 2600:2d00:1:b029::/64 wird für die Quell-IP-Adressen der Systemdiagnosen verwendet, um den Zustand der VMs zu prüfen. Beachten Sie, dass 2600:2d00:1:b029::/64 als Quell-IP-Adresse für IPv6-Systemdiagnosen verwendet wird, um den Zustand der Backend-VMs des Netzwerk-Load-Balancings zu prüfen.
Backend-Dienst mit Backends erstellen und aktualisieren
Backend-Dienst erstellen:
gcloud compute backend-services create my-backend-service \ --ip-address-selection-policy PREFER_IPV6 \ --global \ --health-checks my-health-check \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --timeout=5m
Dem Backend-Dienst die Backends hinzufügen:
gcloud compute backend-services add-backend my-backend-service \ --instance-group us-ig-1 \ --instance-group-zone us-central1-a \ --global \ gcloud compute backend-services add-backend my-backend-service \ --instance-group us-ig-2 \ --instance-group-zone us-central1-b \ --global
Cloud Service Mesh-Dienst einrichten
In diesem Abschnitt wird beschrieben, wie Sie einen IPv6-Dienst in Traffic Director konfigurieren. Der Dienst kann Teil einer Service Mesh-Konfiguration sein oder zum Konfigurieren eines Service-Gateways verwendet werden, z. B. einer VM, auf der Envoy ausgeführt wird.
Nachdem die Backend-Dienste mit PREFER_IPV6 konfiguriert wurden, können Sie eine Appnet-Gateway-Ressource erstellen.
Gateway-Ressource erstellen
Erstellen Sie in einer Datei mit dem Namen
dual-stack-gateway.yamldie Gateway-Spezifikation für HTTP-Traffic:cat <<EOF | tee dual-stack-gateway.yaml name: dual-stack-gateway scope: gateway-proxy ipVersion: IPV6 ports: - 80 type: OPEN_MESH EOFErstellen Sie die Gateway-Ressource aus der Spezifikation
dual-stack-gateway.yaml:gcloud network-services gateways import dual-stack-gateway \ --source=dual-stack-gateway.yaml \ --location=global
Routing mit HTTPRoute einrichten
Erstellen Sie in einer Datei mit dem Namen
dual-stack-http_route.yamldie HTTPRoute-Spezifikation:cat <<EOF | tee dual-stack-http-route.yaml name: dual-stack-http-route hostnames: - dual-stack-server gateways: - projects/PROJECT_ID/locations/global/gateways/dual-stack-gateway rules: - action: destinations: - serviceName: "projects/PROJECT_ID/locations/global/backendServices/dual-stack-backend-service" EOFVerwenden Sie die Spezifikation in
dual-stack-http-route.yaml, um die HTTPRoute-Ressource zu erstellen.gcloud network-services http-routes import dual-stack-http-route \ --source=dual-stack-http-route.yaml \ --location=global
Um die End-to-End-Verbindung zu prüfen, stellen Sie per SSH eine Verbindung zur VM von der verwalteten Instanzgruppe des Gateways her und führen Sie den folgenden Befehl aus:
curl -H 'Host: dual-stack-server' http://[::]
Die Ausgabe sieht etwa so aus:
<!doctype <html><body><h1>'`dual-stack-server`'</h1></body></html>
Von IPv4 zu Dual-Stack migrieren
Damit Sie von IPv4 zu Dual-Stack migrieren können, müssen die folgenden Voraussetzungen erfüllt sein:
- Vorhandene Einzel-Stack-VM-Instanzgruppen
us-ig-1undus-ig-2mitIPV4_ONLY-Stack mit vorhandenen VMs - Ein einzelner IPv4-Backend-Dienst
my-ipv4-backend-service, der aufus-ig-1undus-ig-2verweist - Ein
IPV4_ONLY-VM-Subnetz - Eine Gateway-Ressource, die mit einer IPv4-Adressversion konfiguriert ist
Subnetz auf Dual-Stack aktualisieren
Aktualisieren Sie das vorhandene Subnetz für das Backend, um IPv6 zu unterstützen:
gcloud compute networks subnets update SUBNET \ --stack-type IPV4_IPV6 \ --ipv6-access-type=IPv6_ACCESS_TYPE \
Ersetzen Sie Folgendes:
- SUBNET: ein Name für das neue Subnetz.
- IPv6_ACCESS_TYPE: der IPv6-Zugriffstyp.
Er kann
EXTERNALoderINTERNALsein.
Jede VM auf Dual-Stack aktualisieren
gcloud compute instances network-interfaces update EXISTING_VM_NAME \ --stack-type=IPV4_IPV6 \ --zone=us-central1
Ersetzen Sie EXISTING_VM_NAME durch den Namen Ihrer vorhandenen VM.
Jeder Instanzgruppe neue Dual-Stack-VMs hinzufügen
Neue VM-Instanzen erstellen:
gcloud compute instances create my-new-vm-1 \ --image-family debian-12 \ --tags network-lb \ --zone us-central1-a \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_IPV6 \ gcloud compute instances create my-new-vm-2 \ --image-family debian-12 \ --tags network-lb \ --zone us-central1-b \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_IPV6
Neue Instanzen zu Instanzgruppen hinzufügen:
gcloud compute instance-groups unmanaged add-instances us-ig-1 \ --instances my-new-vm-1 \ --zone us-central1-a \ gcloud compute instance-groups unmanaged add-instances us-ig-2 \ --instances my-new-vm-2 \ --zone us-central1-b
IPv6-Backend-Dienst erstellen:
gcloud compute backend-services create dual-stack-backend-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --protocol=HTTP \ --health-checks=dual-stack-health-check-http \ --ip-address-selection-policy=PREFER_IPV6
Aktualisierte Instanzgruppe dem neu erstellten Dual-Stack-Backend-Dienst hinzufügen:
gcloud compute backend-services add-backend dual-stack-backend-service \ --instance-group=us-ig-1 \ --instance-group-zone=ZONE \ --global
gcloud compute backend-services add-backend dual-stack-backend-service \ --instance-group=us-ig-2 \ --instance-group-zone=ZONE \ --global
Von Dual-Stack zu IPv4 migrieren
Damit Sie von Dual-Stack zu IPv4 migrieren können, müssen die folgenden Voraussetzungen erfüllt sein:
- Vorhandene Dual-Stack-VM-Instanzgruppen
us-ig-1undus-ig-2mitIPV4_IPV6-Stack mit vorhandenen VMs - Ein einzelner IPv6-Backend-Dienst
my-ipv6-backend-service, der aufus-ig-1undus-ig-2verweist - Ein IPV4_IPV6-VM-Subnetz
- Eine Gateway-Ressource
Jede VM auf IPv4 downgraden
gcloud compute instances network-interfaces update EXISTING_VM_NAME \ --stack-type=IPV4_ONLY \ --zone=us-central1
Jeder Instanzgruppe neue IPv4-Stack-VMs hinzufügen
Neue VM-Instanzen erstellen:
gcloud compute instances create my-new-vm-1 \ --image-family debian-12 \ --tags network-lb \ --zone us-central1-a \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_ONLY \ gcloud compute instances create my-new-vm-2 \ --image-family debian-12 \ --tags network-lb \ --zone us-central1-b \ --network-interface [--network=NETWORK | --subnet=SUBNET] \ --stack-type=IPV4_ONLY
Neue Instanzen zu Instanzgruppen hinzufügen:
gcloud compute instance-groups unmanaged add-instances us-ig-1 \ --instances my-new-vm-1 \ --zone us-central1-a \ gcloud compute instance-groups unmanaged add-instances us-ig-2 \ --instances my-new-vm-2 \ --zone us-central1-b
IPv4-Backend-Dienst erstellen:
gcloud compute backend-services create my-ipv4-backend-service \ –ip-address-selection-policy IPV4_ONLY \ --global \ --health-checks my-health-check \ --load-balancing-scheme INTERNAL_SELF_MANAGED \ --timeout=5m
Aktualisierte Instanzgruppen dem neu erstellten IPv4-Backend-Dienst hinzufügen:
gcloud compute backend-services add-backend my-ipv4-backend-service \ --instance-group us-ig1 \ --instance-group-zone us-central1-a \ --global \ gcloud compute backend-services add-backend my-ipv4-backend-service \ --instance-group us-ig2 \ --instance-group-zone us-central1-b \ --global
Jetzt können sowohl IPv4- als auch IPv6-Backend-Dienste Traffic verarbeiten. Aktualisieren Sie die URL-Zuordnung, um einen Teil des Clienttraffics an den neuen IPv4-Backend-Dienst weiterzuleiten.