IPv6-Dual-Stack für Cloud Service Mesh konfigurieren
Auf dieser Seite erfahren Sie, wie Sie IPv6-Traffic in Cloud Service Mesh mithilfe von Traffic Director (TD)-Proxy-basierten Load Balancern ausbalancieren. 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-Deployments können Sie angeben, ob IPv4 oder IPv6 an das Dienst-Backend gesendet wird. Der Proxy- oder gRPC-Client testet jeden Datenpfad in der von Ihnen angegebenen 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 sowie 1.71 und höher für Go unterstützt. Java wird derzeit nicht unterstützt.
gRPC-Versionen ohne Dual-Stack-Unterstützung (d.h. In Go und Versionen vor 1.66 in anderen Sprachen wird nur die erste Adresse jedes Endpunkts in der Reihenfolge verwendet, die von TD gesendet wurde.
Hinweise
In diesem Leitfaden wird davon ausgegangen, dass Sie bereits Folgendes haben:
- Service Routing APIs mit Envoy und proxylosen Arbeitslasten einrichten
- Sie haben die Schritte im Abschnitt Einrichtung fortsetzen des Onboarding-Leitfadens ausgeführt.
IPv6-Backenddienst einrichten
In diesem Abschnitt konfigurieren Sie Folgendes:
- Zwei Backendgruppen (entweder Instanzgruppen, verwaltete Instanzgruppen oder Netzwerkendpunktgruppen), jeweils eine in zwei verschiedenen Zonen innerhalb derselben Region.
- Zwei VM-Instanzen in jeder Backendgruppe.
- Eine Systemdiagnose zur Prüfung der Instanzintegrität.
- Firewallregeln, die es Systemdiagnosen ermöglichen, Back-Ends zu erreichen.
- Back-End-Dienst
- Der Back-End-Dienst, der die beiden konfigurierten Back-End-Gruppen enthalten soll.
Subnetz für Back-Ends einrichten
Mit dem folgenden Befehl werden interne Adressbereiche sowohl für IPv4 als auch für IPv6 zugewiesen und VMs im Subnetz können mit beiden Adresstypen 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 (MIGs oder NEGs) einfügen.
Dual-Stack-Netzwerk erstellen:
gcloud compute networks create NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Erstellen Sie ein Dual-Stack-Subnetz für Back-End-VMs:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --range=PRIMARY_IPv4_RANGE \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=IPv6_ACCESS_TYPE \ --region=REGION
Ersetzen 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
EXTERNAL
oderINTERNAL
sein. - REGION: die Google Cloud Region, in der das neue Subnetz erstellt wird.
Back-Ends einrichten
Sie können entweder verwaltete Instanzgruppen (MIG), nicht verwaltete Instanzgruppen oder Netzwerk-Endpunktgruppen (NEG) verwenden.
verwaltete Instanzgruppe
So erstellen Sie eine verwaltete Instanzgruppe mit
dual-stack-gateway-template
: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 mit 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
Fügen Sie der verwalteten Instanzgruppe einen benannten Port hinzu:
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 die automatische Reparatur. Systemdiagnosen für das Load Balancing sind in der Regel strenger konfiguriert, da sie festlegen, ob eine VM Nutzertraffic empfängt und ob Sie den Traffic bei Bedarf schnell umleiten möchten.
Bei Systemdiagnosen für die automatische Reparatur 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.
Erstellen Sie eine Systemdiagnose.
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 MIG an. Konfigurieren Sie dazu eine Richtlinie für die automatische 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 „initial-delay“ wird die 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 startet, 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
Erstellen Sie in jeder Instanzgruppe zwei Dual-Stack-VM-Instanzen:
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.
Fügen Sie Instanzgruppen VMs hinzu:
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
Fügen Sie ein Back-End hinzu, bei dem
--network-endpoint-type
GCE_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
So fügen Sie Endpunkte zu einer Netzwerk-Endpunktgruppe hinzu:
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'
Systemdiagnose konfigurieren
Erstellen Sie eine Systemdiagnose für den Back-End-Dienst:
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.
Erstellen Sie eine Firewallregel, 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 Status der Backend-VMs des Netzwerk-Load Balancing zu prüfen.
Backend-Dienst mit Backends erstellen und aktualisieren
Erstellen Sie den Back-End-Dienst:
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
Fügen Sie dem Backend-Dienst die Backends hinzu:
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 gezeigt, wie Sie einen IPv6-Dienst in Traffic Director konfigurieren. Der Dienst kann Teil einer Service Mesh-Konfiguration sein oder zum Konfigurieren eines Service-Gateways wie einer VM mit Envoy verwendet werden.
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.yaml
die 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 EOF
Erstellen Sie die Gateway-Ressource aus der
dual-stack-gateway.yaml
-Spezifikation: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.yaml
die 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" EOF
Verwenden 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 über das Gateway MIG eine SSH-Verbindung zur VM 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 VM-Instanzgruppen mit einem einzelnen Stack
us-ig-1
undus-ig-2
mitIPV4_ONLY
-Stack mit vorhandenen VMs - Ein einzelner IPv4-Backenddienst
my-ipv4-backend-service
, der aufus-ig-1
undus-ig-2
verweist - Ein
IPV4_ONLY
-VM-Subnetz - Eine Gateway-Ressource, die mit einer IPv4-Adresse konfiguriert ist
Subnetz auf Dual-Stack umstellen
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
EXTERNAL
oderINTERNAL
sein.
Jede VM auf Dual-Stack umstellen
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.
Fügen Sie jeder Instanzgruppe neue Dual-Stack-VMs hinzu.
Erstellen Sie neue VM-Instanzen:
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
Fügen Sie die neuen Instanzen den Instanzgruppen hinzu:
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
Erstellen Sie einen IPv6-Backend-Dienst:
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
Fügen Sie die aktualisierte Instanzgruppe dem neu erstellten Dual-Stack-Back-End-Dienst hinzu:
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-1
undus-ig-2
mitIPV4_IPV6
-Stack mit vorhandenen VMs - Ein einzelner IPv6-Backend-Dienst
my-ipv6-backend-service
, der aufus-ig-1
undus-ig-2
verweist - Ein IPV4_IPV6-VM-Subnetz
- Eine Gateway-Ressource
Jede VM auf IPv4 umstellen
gcloud compute instances network-interfaces update EXISTING_VM_NAME \ --stack-type=IPV4_ONLY \ --zone=us-central1
Fügen Sie jeder Instanzgruppe neue IPv4-Stack-VMs hinzu
Erstellen Sie neue VM-Instanzen:
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
Fügen Sie die neuen Instanzen den Instanzgruppen hinzu:
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
Erstellen Sie einen IPv4-Backend-Dienst:
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
Fügen Sie die aktualisierten Instanzgruppen dem neu erstellten IPv4-Backenddienst hinzu:
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
Sowohl IPv4- als auch IPv6-Backenddienste können jetzt Traffic bereitstellen. Aktualisieren Sie die URL-Zuordnung, um einen Teil des Clienttraffics an den neuen IPv4-Backend-Dienst weiterzuleiten.