Dokumen ini menunjukkan cara mengonversi resource dan backend Load Balancer Aplikasi eksternal global dari khusus IPv4 (single-stack) ke IPv4 dan IPv6 (dual-stack). Dalam dokumen ini, hanya IPv4 (tumpukan tunggal) yang mengacu pada resource yang hanya menggunakan alamat IPv4, sedangkan IPv4 dan IPv6 (dual-stack) mengacu pada resource yang menggunakan alamat IPv4 dan IPv6.
Manfaat
Ada beberapa manfaat dalam mengonversi load balancer menjadi dual stack:
Keuntungan utama dari IPv6 adalah bahwa kumpulan alamat IP yang jauh lebih besar dapat dialokasikan.
Banyak pelanggan yang sudah menggunakan load balancer hanya IPv4 dapat melakukan konversi dari resource khusus IPv4 ke resource IPv4 dan IPv6 (dual-stack) dengan memanfaatkan metode khusus cloud.
Anda dapat mengonfigurasi load balancer untuk menghentikan traffic IPv6 masuk dan mem-proxy traffic ini melalui koneksi IPv4 atau IPv6 ke backend, berdasarkan preferensi Anda. Untuk mengetahui informasi selengkapnya, lihat IPv6.
Batasan
Anda tidak dapat memperbarui jenis stack IP subnet dari IPv4 dan IPv6 (dual-stack) ke IPv4 saja.
Saat mengonfigurasi kebijakan pemilihan alamat IP di layanan backend sebagai khusus IPv6, Anda masih dapat mengonfigurasi backend khusus IPv4. Namun, konfigurasi seperti ini menyebabkan backend yang tidak responsif, klien mendapatkan kode respons
503
, dan traffic tidak mengalir ke upstream. Log menampilkanfailed_to_pick_backend
dalam pesan kegagalan HTTP statusDetails.Anda dapat mengonfigurasi kebijakan pemilihan alamat IP layanan backend hanya ke IPv6, tetapi jenis stack IP backend selalu IPv4 dan IPv6 (dual-stack).
Hanya backend grup instance VM dan grup endpoint jaringan zona (NEG) dengan endpoint
GCE_VM_IP_PORT
yang mendukung IPv4 dan IPv6 (dual-stack).
Sebelum memulai
Anda harus sudah menyiapkan proxy SSL atau Load Balancer Aplikasi eksternal global proxy TCP dengan stack khusus IPv4 dengan grup instance atau backend NEG zona.
Untuk informasi selengkapnya tentang cara menyiapkan Load Balancer Aplikasi eksternal global, lihat dokumentasi berikut:
- Menyiapkan Load Balancer Aplikasi eksternal global dengan backend grup instance VM
- Menyiapkan Load Balancer Aplikasi eksternal global dengan NEG zona
Mengidentifikasi sumber daya yang akan dikonversi
Perhatikan nama resource yang terkait dengan load balancer. Anda harus memberikan nama ini nanti.
Untuk menampilkan daftar semua subnet, gunakan perintah
gcloud compute networks subnets list
:gcloud compute networks subnets list
Perhatikan nama subnet dengan alamat khusus IPv4 yang akan dikonversi ke dual-stack. Nama ini nantinya disebut sebagai
SUBNET
. Jaringan VPC nanti disebut sebagaiNETWORK
.Untuk menampilkan daftar semua layanan backend, gunakan perintah
gcloud beta compute backend-services list
:gcloud beta compute backend-services list
Perhatikan nama layanan backend yang akan dikonversi ke dual-stack. Nama ini nantinya disebut sebagai
BACKEND_SERVICE
.Untuk menampilkan semua peta URL, gunakan perintah
gcloud beta compute url-maps list
:gcloud beta compute url-maps list
Perhatikan nama peta URL yang terkait dengan load balancer Anda. Nama ini nantinya disebut sebagai
URL_MAP
.Jika Anda sudah memiliki load balancer, untuk melihat jenis stack IP backend, gunakan perintah
gcloud compute instances list
:gcloud compute instances list \ --format= \ "table( name, zone.basename(), networkInterfaces[].stackType.notnull().list(), networkInterfaces[].ipv6AccessConfigs[0].externalIpv6.notnull().list():label=EXTERNAL_IPV6, networkInterfaces[].ipv6Address.notnull().list():label=INTERNAL_IPV6)"
Untuk menampilkan semua instance VM dan template instance, gunakan perintah
gcloud compute instances list
dan perintahgcloud compute instance-templates list
:gcloud compute instances list
gcloud compute instance-templates list
Perhatikan nama instance dan template instance yang akan dikonversi ke dual-stack. Nama ini nantinya disebut sebagai
VM_INSTANCE
danINSTANCE_TEMPLATES
.Untuk menampilkan daftar semua grup endpoint jaringan zona (NEG), gunakan perintah
gcloud compute network-endpoint-groups list
:gcloud compute network-endpoint-groups list
Perhatikan nama backend NEG zona untuk dikonversi ke dual-stack. Nama ini nantinya disebut sebagai
ZONAL_NEG
.Untuk menampilkan daftar semua proxy target, gunakan perintah
gcloud compute target-http-proxies list
:gcloud compute target-http-proxies list
Perhatikan nama proxy target yang terkait dengan load balancer Anda. Nama ini nantinya disebut sebagai
TARGET_PROXY
.
Mengonversi dari backend single-stack ke backend dual-stack
Bagian ini menunjukkan cara mengonversi resource dan backend hanya menggunakan alamat IPv4 (single-stack) ke alamat IPv4 dan IPv6 (dual-stack).
Mengupdate subnet
Subnet dual-stack hanya didukung pada jaringan VPC mode kustom. Subnet dual-stack tidak didukung di jaringan VPC mode otomatis atau jaringan lama. Meskipun jaringan mode otomatis dapat berguna untuk eksplorasi awal, VPC mode kustom lebih cocok untuk sebagian besar lingkungan produksi. Sebaiknya gunakan VPC dalam mode kustom.
Untuk mengupdate VPC ke setelan dual-stack, ikuti langkah-langkah berikut:
Jika menggunakan jaringan VPC mode otomatis, Anda harus mengonversi jaringan VPC mode otomatis ke mode kustom terlebih dahulu.
Untuk mengaktifkan IPv6, lihat Mengubah jenis stack subnet menjadi dual stack.
Opsional: Jika Anda ingin mengonfigurasi rentang alamat IPv6 internal di subnet di jaringan ini, selesaikan langkah-langkah berikut:
- Untuk VPC network ULA internal IPv6 range, pilih Enabled.
Untuk Allocate internal IPv6 range, pilih Automatically atau Manually.
Jika Anda memilih Manually, masukkan rentang
/48
dari dalam rentangfd20::/20
. Jika rentang tersebut digunakan, Anda akan diminta untuk memberikan rentang yang berbeda.
Mengupdate instance atau template VM
Anda dapat mengonfigurasi alamat IPv6 di instance VM jika subnet yang terhubung dengan VM memiliki rentang IPv6 yang dikonfigurasi. Hanya backend berikut yang dapat mendukung alamat IPv6:
- Backend grup instance: Satu atau beberapa backend grup instance terkelola, tidak terkelola, atau kombinasi backend grup instance terkelola dan tidak terkelola.
- NEG zona: Satu atau beberapa NEG zona jenis
GCE_VM_IP_PORT
.
Mengupdate instance VM
Anda tidak dapat mengedit instance VM yang merupakan bagian dari grup instance terkelola atau tidak terkelola. Untuk mengupdate instance VM ke dual stack, ikuti langkah-langkah berikut:
- Menghapus instance tertentu dari grup
- Membuat VM dual-stack
- Membuat instance dengan nama tertentu di MIG
Mengupdate template instance VM
Anda tidak dapat memperbarui template instance yang sudah ada. Jika perlu membuat perubahan, Anda dapat membuat template lain dengan properti serupa. Untuk mengupdate template instance VM ke dual stack, ikuti langkah-langkah berikut:
Konsol
Di konsol Google Cloud, buka halaman Instance templates.
- Klik template instance yang ingin Anda salin dan perbarui.
- Klik Buat yang serupa.
- Luaskan bagian Advanced options.
- Untuk Tag jaringan, masukkan
allow-health-check-ipv6
. - Di bagian Network interfaces, klik Add a network interface.
- Dalam daftar Network, pilih jaringan VPC mode kustom.
- Dalam daftar Subnetwork, pilih
SUBNET
. - Untuk IP stack type, pilih IPv4 and IPv6 (dual-stack).
- Klik Create.
Memulai update berkelanjutan dasar pada grup instance terkelola
MIG
yang terkait dengan load balancer.
Memperbarui NEG zona
Endpoint NEG zona tidak dapat diedit. Anda harus menghapus endpoint IPv4 dan membuat endpoint dual-stack baru dengan alamat IPv4 dan IPv6.
Untuk menyiapkan NEG zona (dengan endpoint jenis GCE_VM_IP_PORT
) di region REGION_A
, buat VM di zona GCP_NEG_ZONE
terlebih dahulu. Kemudian, tambahkan endpoint jaringan
VM ke NEG zona.
Membuat VM
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Klik Create instance.
Tetapkan Name ke
vm-a1
.Untuk Region, pilih
REGION_A
, lalu pilih nilai apa pun untuk kolom Zone. Dalam prosedur ini, zona ini disebut sebagaiGCP_NEG_ZONE
.Di bagian Boot disk, pastikan sistem operasi Debian dan versi 10 (buster) dipilih untuk opsi boot disk. Klik Pilih untuk mengubah gambar jika diperlukan.
Luaskan bagian Opsi lanjutan dan buat perubahan berikut:
- Luaskan bagian Networking.
- Di kolom Network tags, masukkan
allow-health-check
. - Di bagian Network interfaces, buat perubahan berikut:
- Jaringan:
NETWORK
- Subnet:
SUBNET
- Jenis stack IP: IPv4 dan IPv6 (dual-stack)
- Jaringan:
- Klik Done.
Klik Management. Di kolom Startup script, salin dan tempel konten skrip berikut.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Klik Create.
Ulangi langkah-langkah berikut untuk membuat VM kedua, menggunakan kombinasi nama dan zona berikut:
- Nama:
vm-a2
, zona:GCP_NEG_ZONE
- Nama:
gcloud
Buat VM dengan menjalankan perintah berikut dua kali, menggunakan kombinasi ini untuk nama VM dan zonanya. Isi skrip untuk kedua VM sama.
VM_NAME
darivm-a1
dan zonaGCP_NEG_ZONE
apa pun pilihan Anda.VM_NAME
darivm-a2
dan zonaGCP_NEG_ZONE
yang sama.gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --stack-type=IPV4_IPV6 \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-health-check \ --subnet=SUBNET \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Tambahkan endpoint ke NEG zona
Konsol
Untuk menambahkan endpoint ke NEG zona:
Di Konsol Google Cloud, buka halaman Network endpoint groups.
Dalam daftar Name, klik nama grup endpoint jaringan (
ZONAL_NEG
). Anda akan melihat halaman Network endpoint group details.Di bagian Network endpoint in this group, pilih endpoint NEG yang dibuat sebelumnya. Klik Remove endpoint.
Di bagian Network endpoint in this group, klik Add network endpoint.
Pilih VM instance.
Di bagian Network interface, nama, zona, dan subnet VM ditampilkan.
Di kolom IPv4 address, masukkan alamat IPv4 endpoint jaringan baru.
Di kolom IPv6 address, masukkan alamat IPv6 endpoint jaringan baru.
Pilih Port type.
- Jika Anda memilih Default, endpoint akan menggunakan port default
80
untuk semua endpoint dalam grup endpoint jaringan. Tindakan ini sudah cukup untuk contoh kami karena server Apache melayani permintaan di port80
. - Jika Anda memilih Custom, masukkan Nomor port yang akan digunakan endpoint.
- Jika Anda memilih Default, endpoint akan menggunakan port default
Untuk menambahkan endpoint lainnya, klik Add network endpoint dan ulangi langkah-langkah sebelumnya.
Setelah Anda menambahkan semua endpoint, klik Create.
gcloud
Tambahkan endpoint (endpoint
GCE_VM_IP_PORT
) keZONAL_NEG
.gcloud compute network-endpoint-groups update ZONAL_NEG \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80' \ --add-endpoint='instance=vm-a2,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80'
Ganti kode berikut:
IPv4_ADDRESS
:
Alamat IPv4 endpoint jaringan. IPv4 harus merupakan milik
VM di Compute Engine (baik IP utama maupun sebagai bagian dari rentang IP beralias).
Jika alamat IP tidak ditentukan, maka alamat IP utama untuk instance VM dalam jaringan yang memiliki grup endpoint jaringan akan digunakan.
IPv6_ADDRESS
:
Alamat IPv6 endpoint jaringan. Alamat IPv6 harus merupakan milik instance VM dalam jaringan yang mencakup grup endpoint jaringan (alamat IPv6 eksternal).
Membuat aturan firewall health check IPv6
Pastikan Anda memiliki aturan masuk yang berlaku untuk instance yang diseimbangkan oleh beban dan yang mengizinkan traffic dari sistem health check Google Cloud (2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
). Contoh ini menggunakan tag target allow-health-check-ipv6
untuk mengidentifikasi instance VM yang akan menerapkannya.
Tanpa aturan firewall ini, aturan tolak masuknya akan memblokir traffic IPv6 yang masuk ke backend instance.
Konsol
Di Konsol Google Cloud, buka halaman Firewall policies.
Untuk mengizinkan traffic subnet IPv6, klik Create firewall rule lagi dan masukkan informasi berikut:
- Name:
fw-allow-lb-access-ipv6
- Jaringan:
NETWORK
- Prioritas:
1000
- Arah traffic: masuk
- Targets: Tag target yang ditentukan
- Tag target:
allow-health-check-ipv6
- Filter sumber: Rentang IPv6
- Rentang IPv6 sumber:
2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
- Protokol dan port: Izinkan semua
- Name:
Klik Create.
gcloud
Buat aturan firewall
fw-allow-lb-access-ipv6
untuk mengizinkan komunikasi dengan subnet:gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \ --rules=all
Membuat layanan backend dan aturan penerusan baru untuk IPv6
Bagian ini menjelaskan prosedur pembuatan layanan backend baru dan aturan penerusan untuk IPv6.
BACKEND_SERVICE
dan BACKEND_SERVICE_IPV6
mampu menyalurkan traffic.
Untuk menghindari gangguan traffic, buat layanan backend baru dengan kebijakan pemilihan alamat IP
yang ditetapkan ke Prefer IPv6
.
Setelah membuat layanan backend baru, Anda dapat
mengarahkan traffic ke layanan backend IPv6 yang baru.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik nama load balancer.
Klik Edit.
Konfigurasi layanan backend:
- Klik Backend configuration.
- Di kolom Backend service, pilih Create a backend service.
- Tetapkan Name sebagai BACKEND_SERVICE_IPV6.
- Untuk Backend type, pilih Zonal network endpoint group.
- Di daftar Kebijakan pemilihan alamat IP, pilih Pilih IPv6.
- Pada kolom Protocol, pilih HTTP.
- Di panel New Backend, lakukan langkah berikut:
- Dalam daftar network endpoint group, pilih ZONAL_NEG.
- Untuk RPS Maksimum, masukkan
10
.
- Dalam daftar Health check, pilih salah satu health check HTTP.
- Klik Done.
Konfigurasi frontend IPv6:
- Klik Frontend configuration.
- Klik Add frontend IP and port.
- Di kolom Nama, masukkan nama untuk aturan penerusan.
- Pada kolom Protocol, pilih
HTTP
. - Tetapkam Versi IP ke
IPv6
. - Klik Done.
- Klik Perbarui.
Mengonfigurasi aturan pemilihan rute
- Klik Routing rules.
- Klik Aturan host dan jalur lanjutan.
- Klik Perbarui.
gcloud
Membuat health check:
gcloud compute health-checks create http HEALTH_CHECK \ --port 80
Buat layanan backend untuk traffic HTTP:
gcloud beta compute backend-services create BACKEND_SERVICE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --global
Tambahkan NEG zona sebagai backend ke layanan backend.
gcloud beta compute backend-services add-backend BACKEND_SERVICE_IPV6 \ --network-endpoint-group=ZONAL_NEG \ --max-rate-per-endpoint=10 \ --global
Mencadangkan alamat IPv6 eksternal yang digunakan pelanggan untuk menjangkau load balancer Anda.
gcloud compute addresses create lb-ipv6-1 \ --ip-version=IPV6 \ --network-tier=PREMIUM \ --global
Membuat aturan penerusan untuk layanan backend. Saat Anda membuat aturan penerusan, tentukan alamat IP eksternal di subnet.
gcloud beta compute forwarding-rules create FORWARDING_RULE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=lb-ipv6-1 \ --global \ --target-https-proxy=TARGET_PROXY \ --ports=443
Merutekan traffic ke layanan backend IPv6 yang baru
Perbarui peta URL untuk mengarahkan sebagian kecil traffic klien ke layanan backend IPv6 baru BACKEND_SERVICE_IPV6
.
Gunakan perintah berikut untuk mengedit peta URL:
gcloud compute url-maps edit URL_MAP \ --global
Di editor teks yang muncul, tambahkan
routeRule
dengan tindakanweightedBackendServices
yang mengarahkan sebagian traffic IPv6 keBACKEND_SERVICE_IPV6
.defaultService: global/backendServices/BACKEND_SERVICE hostRules: - hosts: - '*' pathMatcher: matcher1 name: URL_MAP pathMatchers: - defaultService: global/backendServices/BACKEND_SERVICE name: matcher1 routeRules: - matchRules: - prefixMatch: '' priority: 1 routeAction: weightedBackendServices: - backendService: global/backendServices/BACKEND_SERVICE weight: 95 - backendService: global/backendServices/BACKEND_SERVICE_IPV6 weight: 5
Untuk menerapkan migrasi bertahap ke IPv6, tingkatkan persentase bobot untuk
layanan backend baru BACKEND_SERVICE_IPV6
secara bertahap
hingga 100% dengan mengedit peta URL berkali-kali.
Mengonfigurasi kebijakan pemilihan alamat IP
Langkah ini opsional. Setelah mengonversi resource dan backend ke dual-stack, Anda dapat menggunakan kebijakan pemilihan alamat IP untuk menentukan jenis traffic yang dikirim dari Google Front End (GFE) ke backend Anda.
Ganti IP_ADDRESS_SELECTION_POLICY
dengan salah satu nilai berikut:
Kebijakan pemilihan alamat IP | Deskripsi |
---|---|
Hanya IPv4 | Hanya kirim traffic IPv4 ke backend layanan backend, terlepas dari traffic dari klien ke GFE. Hanya health check IPv4 yang digunakan untuk memeriksa respons backend. |
Pilih IPv6 | Prioritaskan koneksi IPv6 backend melalui koneksi IPv4 (asalkan ada backend yang responsif dengan alamat IPv6). Health check memantau koneksi IPv6 dan IPv4 backend secara berkala. GFE terlebih dahulu mencoba koneksi IPv6; jika koneksi IPv6 rusak atau lambat, GFE akan menggunakan happy eyeballs untuk melakukan penggantian dan terhubung ke IPv4. Meskipun jika salah satu koneksi IPv6 atau IPv4 tidak responsif, backend-nya masih dianggap responsif, dan kedua koneksi tersebut dapat dicoba oleh GFE, dan akhirnya dapat memilih koneksi yang akan digunakan. |
Hanya IPv6 | Hanya kirim traffic IPv6 ke backend layanan backend, terlepas dari traffic dari klien ke proxy. Hanya health check IPv6 yang digunakan untuk memeriksa respons backend. Tidak ada validasi untuk memeriksa apakah jenis traffic backend cocok dengan kebijakan pemilihan alamat IP. Misalnya, jika Anda memiliki backend IPV4 dan memilih |
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik nama load balancer.
Klik Edit.
Klik Backend configuration.
Di kolom Backend service, pilih BACKEND_SERVICE_IPV6.
Backend type harus berupa Zonal network endpoint group atau Instance group.
Dalam daftar IP address selection policy, pilih IP_ADDRESS_SELECTION_POLICY.
Klik Done.
gcloud
Update layanan backend:
gcloud beta compute backend-services update BACKEND_SERVICE_IPV6 \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \ --global
Menguji load balancer
Anda harus memvalidasi bahwa semua resource yang diperlukan diupdate ke dual stack. Setelah Anda mengupdate semua resource, traffic harus otomatis mengalir ke backend. Anda dapat memeriksa log dan memverifikasi bahwa konversi telah selesai.
Uji load balancer untuk mengonfirmasi bahwa migrasi berhasil dan traffic yang masuk mencapai backend seperti yang diharapkan.
Mencari alamat IP eksternal load balancer
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik nama load balancer.
Di bagian Frontend, dua alamat IP load balancer ditampilkan. Dalam prosedur ini, alamat IPv4 disebut sebagai IP_ADDRESS_IPV4 dan alamat IPv6 disebut sebagai IP_ADDRESS_IPV6.
Di bagian Backend, jika kebijakan pemilihan alamat IP adalah
Prefer IPv6
, dua status health check akan ditampilkan untuk backend.
Mengirim traffic ke instance Anda
Dalam contoh ini, permintaan dari perintah curl
didistribusikan secara acak ke
backend.
Ulangi perintah berikut beberapa kali hingga Anda melihat semua VM backend merespons:
curl http://IP_ADDRESS_IPV4
curl http://IP_ADDRESS_IPV6
Misalnya, jika alamat IPv6 adalah
[fd20:1db0:b882:802:0:46:0:0]:80
, perintahnya akan terlihat seperti ini:curl http://[fd20:1db0:b882:802:0:46:0:0]
Memeriksa log
Setiap entri log menangkap alamat IPv4 dan IPv6 tujuan untuk backend. Karena kami mendukung dual-stack, penting untuk mengamati alamat IP yang digunakan oleh backend.
Anda dapat memeriksa apakah traffic mengarah ke IPv6 atau gagal kembali ke IPv4 dengan melihat log.
HttpRequest
berisi alamat backend_ip
yang terkait dengan
backend. Dengan memeriksa log serta membandingkan alamat IPv4 dan IPv6 tujuan dari backend_ip
, Anda dapat mengonfirmasi alamat IP mana yang digunakan.