Mengonfigurasi stack ganda IPv6 untuk Cloud Service Mesh
Halaman ini menunjukkan cara melakukan load balancing traffic IPv6 di Cloud Service Mesh menggunakan load balancer berbasis proxy Traffic Director (TD) serta cara bermigrasi dari deployment berbasis IPv4 ke deployment dual-stack (IPv4 dan IPv6) dan cara bermigrasi dari dual-stack ke IPv4.
Pada deployment dual-stack, Anda memiliki opsi untuk menunjukkan apakah IPv4 atau IPv6 dikirim ke backend layanan. Klien proxy atau gRPC menguji setiap jalur data dalam urutan preferensi Anda dan memilih jalur yang sesuai dengan preferensi Anda dan yang didukung.
Fitur dual-stack didukung di gRPC 1.66.1 dan yang lebih baru untuk C++ dan Python, 1.12 dan yang lebih baru untuk Node, serta 1.71 dan yang lebih baru untuk Go. Java tidak didukung saat ini.
Versi gRPC tanpa dukungan stack ganda (yaitu, Go dan versi sebelum 1.66 dalam bahasa lain) hanya akan menggunakan alamat pertama dari setiap endpoint, dalam urutan yang dikirim oleh TD.
Sebelum memulai
Panduan ini mengasumsikan bahwa Anda telah:
- Siapkan API pemilihan rute layanan dengan Envoy dan workload tanpa proxy.
- Menyelesaikan langkah-langkah di bagian Lanjutkan proses penyiapan dalam panduan aktivasi.
Menyiapkan layanan backend IPv6
Di bagian ini, Anda akan mengonfigurasi hal berikut:
- Dua grup backend (grup instance, grup instance terkelola, atau grup endpoint jaringan), satu di setiap dua zona berbeda dalam region yang sama.
- Dua instance VM di setiap grup backend.
- Health check untuk memverifikasi kondisi instance.
- Aturan firewall yang mengizinkan health check menjangkau backend.
- Layanan backend.
- Layanan backend untuk menyertakan dua grup backend yang dikonfigurasi.
Menyiapkan subnet untuk backend
Perintah berikut mengalokasikan rentang alamat internal untuk IPv4 dan IPv6, serta memungkinkan VM di subnet dialokasikan dengan salah satu jenis alamat.
Perhatikan bahwa hanya subnet mode kustom yang didukung. Tidak ada dukungan mode otomatis. Anda dapat beralih ke mode kustom untuk seluruh jaringan VPC, lalu mengisi Backend IPv6 (MIG atau NEG).
Buat jaringan stack ganda:
gcloud compute networks create NETWORK \ --subnet-mode=custom \ --enable-ula-internal-ipv6
Buat Subnet stack ganda untuk VM Backend:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --range=PRIMARY_IPv4_RANGE \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=IPv6_ACCESS_TYPE \ --region=REGION
Ganti kode berikut:
- SUBNET: nama untuk subnet baru.
- NETWORK: nama jaringan VPC yang akan berisi subnet baru.
- PRIMARY_IPv4_RANGE: rentang IPv4 utama untuk subnet baru, dalam notasi CIDR. Untuk mengetahui informasi selengkapnya, lihat Rentang subnet IPv4.
- IPv6_ACCESS_TYPE: jenis akses IPv6.
Nilainya dapat berupa
EXTERNAL
atauINTERNAL
. - REGION: region Google Cloud tempat subnet baru akan dibuat.
Menyiapkan backend
Anda dapat memilih untuk menggunakan Grup Instance Terkelola (MIG), Grup Instance Tidak Terkelola, atau Grup Endpoint Jaringan (NEG).
MIG
Buat Grup Instance Terkelola dengan
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
Buat grup instance terkelola proxy gateway:
gcloud compute instance-groups managed create dual-stack-ZONE-gateway-mig \ --zone=ZONE \ --size=1 \ --template=dual-stack-gateway-template
Buat grup instance terkelola backend:
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
Tambahkan port bernama ke Grup Instance Terkelola:
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
Kami menggunakan health check terpisah untuk load balancing dan untuk autohealing. Health check untuk load balancing biasanya dikonfigurasi agar lebih agresif karena health check ini menentukan apakah VM menerima traffic pengguna dan apakah Anda ingin dengan cepat mengarahkan ulang traffic jika diperlukan.
Health check untuk autohealing menyebabkan Compute Engine secara proaktif mengganti VM yang gagal, sehingga health check ini harus lebih konservatif daripada health check load balancing. Perhatikan bahwa Autohealing untuk VM dual-stack akan didasarkan pada Health check IPv4.
Membuat health check:
gcloud compute health-checks create http dualstack-health-check-http \
Pastikan aturan firewall mengizinkan health check:
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
Terapkan health check dengan mengonfigurasi kebijakan autohealing untuk MIG Anda:
gcloud compute instance-groups managed update us-mig-1 \ --health-check dualstack-health-check-http \ --initial-delay 300 \ --zone us-central1-a
Setelan penundaan awal menunda autohealing agar tidak membuat ulang VM secara prematur jika VM sedang dalam proses dimulai. Timer penundaan awal dimulai saat kolom currentAction
VM berubah menjadi VERIFYING
.
Grup Instance Tidak Terkelola
Konfigurasi Grup Instance:
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
Buat dua instance VM Stack Ganda di setiap grup instance:
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
Alamat IPv6 akan ditetapkan secara otomatis.
Tambahkan VM ke grup instance:
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
Tambahkan backend dengan
--network-endpoint-type
adalah GCE_VM_IP_PORT: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
Menambahkan endpoint ke Grup Endpoint Jaringan:
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'
Mengonfigurasi Health Check
Buat Health Check untuk layanan backend:
gcloud compute health-checks create http[s] my-health-check
--global
--request-path '/'
--port SERVICE_PORTGanti SERVICE_PORT dengan nomor port, dari 1 hingga 65535.
Buat aturan firewall untuk mengizinkan health check:
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
Rentang 2600:2d00:1:b029::/64 digunakan untuk alamat IP sumber Health-checker untuk memeriksa kesehatan VM. Perhatikan bahwa 2600:2d00:1:b029::/64 digunakan sebagai alamat IP Sumber untuk Pemeriksa Status IPv6 untuk memeriksa status VM backend Load Balancer Jaringan.
Membuat dan memperbarui layanan backend dengan Backends
Buat layanan backend:
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
Tambahkan backend ke layanan backend:
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
Menyiapkan layanan Cloud Service Mesh
Bagian ini menunjukkan cara mengonfigurasi layanan IPv6 di Traffic Director. Layanan ini dapat menjadi bagian dari konfigurasi Service Mesh, atau dapat digunakan untuk mengonfigurasi Service Gateway seperti VM yang menjalankan Envoy.
Setelah layanan backend dengan PREFER_IPV6
dikonfigurasi, Anda dapat membuat resource gateway appnet.
Membuat resource gateway
Dalam file bernama
dual-stack-gateway.yaml
, buat spesifikasi Gateway untuk traffic HTTP:cat <<EOF | tee dual-stack-gateway.yaml name: dual-stack-gateway scope: gateway-proxy ipVersion: IPV6 ports: - 80 type: OPEN_MESH EOF
Buat resource Gateway dari spesifikasi
dual-stack-gateway.yaml
:gcloud network-services gateways import dual-stack-gateway \ --source=dual-stack-gateway.yaml \ --location=global
Menyiapkan pemilihan rute dengan HTTPRoute
Dalam file bernama
dual-stack-http_route.yaml
, buat spesifikasi HTTPRoute: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
Gunakan spesifikasi di
dual-stack-http-route.yaml
untuk membuat resource HTTPRoute.gcloud network-services http-routes import dual-stack-http-route \ --source=dual-stack-http-route.yaml \ --location=global
Untuk memverifikasi konektivitas menyeluruh, gunakan SSH ke VM dari gateway MIG dan jalankan perintah berikut:
curl -H 'Host: dual-stack-server' http://[::]
Outputnya mirip dengan:
<!doctype <html><body><h1>'`dual-stack-server`'</h1></body></html>
Bermigrasi dari IPv4 ke stack ganda
Anda harus memenuhi prasyarat berikut sebelum dapat bermigrasi dari IPv4 ke dual-stack:
- Grup instance VM stack tunggal yang ada
us-ig-1
danus-ig-2
dengan stackIPV4_ONLY
dengan VM yang ada - Satu layanan backend IPv4
my-ipv4-backend-service
yang mengarah keus-ig-1
danus-ig-2
- Subnet VM
IPV4_ONLY
- Resource gateway yang dikonfigurasi dengan alamat versi IPv4
Mengupgrade subnet ke stack ganda
Perbarui subnet yang ada untuk backend agar mendukung IPv6:
gcloud compute networks subnets update SUBNET \ --stack-type IPV4_IPV6 \ --ipv6-access-type=IPv6_ACCESS_TYPE \
Ganti kode berikut:
- SUBNET: nama untuk subnet baru.
- IPv6_ACCESS_TYPE: jenis akses IPv6.
Nilainya dapat berupa
EXTERNAL
atauINTERNAL
.
Mengupgrade setiap VM ke stack ganda
gcloud compute instances network-interfaces update EXISTING_VM_NAME \ --stack-type=IPV4_IPV6 \ --zone=us-central1
Ganti EXISTING_VM_NAME dengan nama VM yang sudah ada.
Menambahkan VM dual-stack baru ke setiap grup instance
Buat instance VM baru:
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
Tambahkan instance baru ke grup instance:
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
Buat layanan backend IPv6:
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
Tambahkan Instance-Group yang telah diperbarui ke layanan backend Dual Stack yang baru dibuat:
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
Bermigrasi dari stack ganda ke IPv4
Anda harus memenuhi prasyarat berikut sebelum dapat bermigrasi dari dual-stack ke IPv4:
- Grup instance VM stack ganda yang ada
us-ig-1
danus-ig-2
dengan stackIPV4_IPV6
dengan VM yang ada - Satu layanan backend IPv6
my-ipv6-backend-service
yang mengarah keus-ig-1
danus-ig-2
- Subnet VM IPV4_IPV6
- Resource gateway
Mendowngrade setiap VM ke IPv4
gcloud compute instances network-interfaces update EXISTING_VM_NAME \ --stack-type=IPV4_ONLY \ --zone=us-central1
Menambahkan VM stack IPv4 baru ke setiap grup instance
Buat instance VM baru:
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
Tambahkan instance baru ke grup instance:
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
Buat layanan backend IPv4:
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
Tambahkan Grup Instance yang diperbarui ke layanan backend IPv4 yang baru dibuat:
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
Sekarang, layanan backend IPv4 dan IPv6 dapat menayangkan traffic. Perbarui peta URL untuk mengarahkan sebagian kecil traffic klien ke layanan backend IPv4 baru.