Dokumen ini memberikan petunjuk untuk mengonfigurasi Load Balancer Jaringan proxy internal lintas region untuk layanan Anda yang berjalan di VM Compute Engine.
Sebelum memulai
Sebelum mengikuti panduan ini, pahami hal-hal berikut:
Izin
Untuk mengikuti panduan ini, Anda harus dapat membuat instance dan mengubah jaringan dalam project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki semua peran IAM Compute Engine berikut.
Tugas | Peran yang diperlukan |
---|---|
Membuat komponen jaringan, subnet, dan load balancer | Admin Jaringan Compute |
Menambahkan dan menghapus aturan firewall | Compute Security Admin |
Membuat instance | Compute Instance Admin |
Untuk informasi selengkapnya, lihat panduan berikut:
Ringkasan penyiapan
Anda dapat mengonfigurasi load balancer seperti yang ditunjukkan pada diagram berikut:
Seperti yang ditunjukkan dalam diagram, contoh ini membuat Load Balancer Jaringan proxy internal lintas region di jaringan VPC, dengan satu layanan backend dan dua grup instance terkelola (MIG) backend di region REGION_A
dan region REGION_B
.
Diagram menunjukkan hal berikut:
Jaringan VPC dengan subnet berikut:
- Subnet
SUBNET_A
dan subnet khusus proxy diREGION_A
. - Subnet
SUBNET_B
dan subnet khusus proxy diREGION_B
.
Anda harus membuat subnet khusus proxy di setiap region jaringan VPC tempat Anda menggunakan Network Load Balancer proxy internal lintas region. Subnet khusus proxy di region digunakan bersama oleh semua Load Balancer Jaringan proxy internal lintas region di region tersebut. Alamat sumber paket yang dikirim dari load balancer ke backend layanan Anda dialokasikan dari subnet khusus proxy. Dalam contoh ini, subnet khusus proxy untuk region
REGION_B
memiliki rentang alamat IP utama10.129.0.0/23
, dan untukREGION_A
, memiliki rentang alamat IP utama10.130.0.0/23
, yang merupakan ukuran subnet yang direkomendasikan.- Subnet
Penyiapan ketersediaan tinggi memiliki backend grup instance terkelola untuk deployment VM Compute Engine di region
REGION_A
danREGION_B
. Jika backend di satu region kebetulan tidak aktif, traffic akan gagal dan beralih ke region lain.Layanan backend global yang memantau penggunaan dan kondisi backend.
Proxy TCP target global, yang menerima permintaan dari pengguna dan meneruskannya ke layanan backend.
Aturan penerusan global, yang memiliki alamat IP internal regional load balancer Anda dan dapat meneruskan setiap permintaan masuk ke proxy target.
Alamat IP internal yang terkait dengan aturan penerusan dapat berasal dari subnet di jaringan dan region yang sama dengan backend. Perhatikan kondisi berikut:
- Alamat IP dapat (tetapi tidak harus) berasal dari subnet yang sama dengan grup instance backend.
- Alamat IP tidak boleh berasal dari subnet khusus proxy yang dicadangkan yang telah menetapkan tanda
--purpose
keGLOBAL_MANAGED_PROXY
. - Jika Anda ingin menggunakan alamat IP internal yang sama dengan beberapa aturan penerusan, tetapkan tanda
--purpose
alamat IP keSHARED_LOADBALANCER_VIP
.
Mengonfigurasi jaringan dan subnet
Dalam jaringan VPC, konfigurasikan subnet di setiap region
tempat backend Anda dikonfigurasi. Selain itu, konfigurasikan proxy-only-subnet
di setiap region tempat Anda ingin mengonfigurasi load balancer.
Contoh ini menggunakan jaringan, region, dan subnet VPC berikut:
Jaringan. Jaringan ini adalah jaringan VPC mode kustom bernama
NETWORK
.Subnet untuk backend.
- Subnet bernama
SUBNET_A
di regionREGION_A
menggunakan10.1.2.0/24
untuk rentang IP utamanya. - Subnet bernama
SUBNET_B
di regionREGION_B
menggunakan10.1.3.0/24
untuk rentang IP utamanya.
- Subnet bernama
Subnet untuk proxy.
- Subnet bernama
PROXY_SN_A
di wilayahREGION_A
menggunakan10.129.0.0/23
untuk rentang IP utamanya. - Subnet bernama
PROXY_SN_B
di regionREGION_B
menggunakan10.130.0.0/23
untuk rentang IP utamanya.
- Subnet bernama
Load Balancer Aplikasi internal lintas region dapat diakses dari region mana pun dalam VPC. Jadi, klien dari region mana pun dapat mengakses backend load balancer Anda secara global.
Mengonfigurasi subnet backend
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Berikan Nama untuk jaringan.
Di bagian Subnet, tetapkan Subnet creation mode ke Custom.
Buat subnet untuk backend load balancer. Di bagian New subnet, masukkan informasi berikut:
- Berikan Name untuk subnet.
- Pilih Region: REGION_A
- Masukkan rentang alamat IP:
10.1.2.0/24
Klik Done.
Klik Tambahkan subnet.
Buat subnet untuk backend load balancer. Di bagian Subnet baru, masukkan informasi berikut:
- Berikan Name untuk subnet.
- Pilih Region: REGION_B
- Masukkan rentang alamat IP:
10.1.3.0/24
Klik Done.
Klik Create.
gcloud
Buat jaringan VPC kustom dengan perintah
gcloud compute networks create
:gcloud compute networks create NETWORK \ --subnet-mode=custom
Buat subnet di jaringan
NETWORK
di regionREGION_A
dengan perintahgcloud compute networks subnets create
:gcloud compute networks subnets create SUBNET_A \ --network=NETWORK \ --range=10.1.2.0/24 \ --region=REGION_A
Buat subnet di jaringan
NETWORK
di regionREGION_B
dengan perintahgcloud compute networks subnets create
:gcloud compute networks subnets create SUBNET_B \ --network=NETWORK \ --range=10.1.3.0/24 \ --region=REGION_B
Terraform
Untuk membuat jaringan VPC, gunakan resource google_compute_network
.
Untuk membuat subnet VPC di jaringan lb-network-crs-reg
,
gunakan resource google_compute_subnetwork
.
API
Buat permintaan POST
ke metode networks.insert
.
Ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "routingConfig": { "routingMode": "regional" }, "name": "NETWORK", "autoCreateSubnetworks": false }
Buat permintaan POST
ke metode subnetworks.insert
.
Ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": "SUBNET_A", "network": "projects/PROJECT_ID/global/networks/lb-network-crs-reg", "ipCidrRange": "10.1.2.0/24", "region": "projects/PROJECT_ID/regions/REGION_A", }
Buat permintaan POST
ke metode subnetworks.insert
.
Ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": "SUBNET_B", "network": "projects/PROJECT_ID/global/networks/NETWORK", "ipCidrRange": "10.1.3.0/24", "region": "projects/PROJECT_ID/regions/REGION_B", }
Mengonfigurasi subnet khusus proxy
Subnet khusus proxy menyediakan kumpulan alamat IP yang digunakan Google Cloud untuk menjalankan proxy Envoy atas nama Anda. Proxy menghentikan koneksi dari klien dan membuat koneksi baru ke backend.
Subnet khusus proxy ini digunakan oleh semua load balancer regional berbasis Envoy di region yang sama dengan jaringan VPC. Hanya boleh ada satu subnet khusus proxy yang aktif untuk tujuan tertentu, per wilayah, per jaringan.
Konsol
Jika menggunakan konsol Google Cloud, Anda dapat menunggu dan membuat subnet khusus proxy nanti di halaman Load balancing.
Jika Anda ingin membuat subnet khusus proxy sekarang, gunakan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman jaringan VPC.
- Klik nama jaringan VPC.
- Di tab Subnet, klik Tambahkan subnet.
- Berikan Nama untuk subnet khusus proxy.
- Pilih Region: REGION_A
- Di daftar Tujuan, pilih Proxy Terkelola Lintas Wilayah.
- Di kolom IP address range, masukkan
10.129.0.0/23
. - Klik Tambahkan.
Membuat subnet khusus proxy di REGION_B
- Di tab Subnet, klik Tambahkan subnet.
- Berikan Nama untuk subnet khusus proxy.
- Pilih Region: REGION_B
- Di daftar Tujuan, pilih Proxy Terkelola Lintas Wilayah.
- Di kolom IP address range, masukkan
10.130.0.0/23
. - Klik Tambahkan.
gcloud
Buat subnet khusus proxy dengan
perintah gcloud compute networks subnets create
.
gcloud compute networks subnets create PROXY_SN_A \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_A \ --network=NETWORK \ --range=10.129.0.0/23
gcloud compute networks subnets create PROXY_SN_B \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_B \ --network=NETWORK \ --range=10.130.0.0/23
Terraform
Untuk membuat subnet khusus proxy VPC di jaringan lb-network-crs-reg
, gunakan resource google_compute_subnetwork
.
API
Buat subnet khusus proxy dengan
metode subnetworks.insert
, dengan mengganti
PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/subnetworks { "name": " PROXY_SN_A", "ipCidrRange": "10.129.0.0/23", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_A", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/subnetworks { "name": "PROXY_SN_B", "ipCidrRange": "10.130.0.0/23", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_B", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
Mengonfigurasi aturan firewall
Contoh ini menggunakan aturan firewall berikut:
fw-ilb-to-backends
. Aturan ingress, yang berlaku untuk instance yang di-load balance, yang memungkinkan konektivitas SSH yang masuk pada TCP port22
dari alamat mana pun. Anda dapat memilih rentang alamat IP sumber yang lebih ketat untuk aturan ini; misalnya, Anda dapat menentukan hanya rentang alamat IP sistem tempat Anda memulai sesi SSH. Contoh ini menggunakan tag targetallow-ssh
untuk mengidentifikasi VM yang menerapkan aturan firewall.fw-healthcheck
. Aturan ingress, yang berlaku untuk instance yang di-load balance, yang mengizinkan semua traffic TCP dari sistem health check Google Cloud (dalam130.211.0.0/22
dan35.191.0.0/16
). Contoh ini menggunakan tag targetload-balanced-backend
untuk mengidentifikasi VM yang menerapkan aturan firewall.fw-backends
. Aturan ingress, yang berlaku untuk instance yang di-load balance, yang mengizinkan traffic TCP pada port80
,443
, dan8080
dari proxy terkelola Load Balancer Jaringan proxy internal. Contoh ini menggunakan tag targetload-balanced-backend
untuk mengidentifikasi VM yang menerapkan aturan firewall.
Tanpa aturan firewall ini, aturan tolak ingress default akan memblokir traffic masuk ke instance backend.
Tag target menentukan instance backend. Tanpa tag target, aturan firewall akan berlaku untuk semua instance backend Anda di jaringan VPC. Saat membuat VM backend, pastikan untuk menyertakan tag target yang ditentukan, seperti yang ditunjukkan dalam Membuat grup instance terkelola.
Konsol
Di Konsol Google Cloud, buka halaman Firewall policies.
Klik Create firewall rule untuk membuat aturan yang mengizinkan koneksi SSH yang masuk:
- Nama:
fw-ilb-to-backends
- Jaringan: NETWORK
- Direction of traffic: Ingress
- Action on match: Allow
- Targets: Tag target yang ditentukan
- Tag target:
allow-ssh
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
0.0.0.0/0
- Protokol dan port:
- Pilih Protokol dan port yang ditentukan.
- Pilih kotak centang TCP, lalu masukkan
22
untuk nomor port.
- Nama:
Klik Create.
Klik Create firewall rule untuk kedua kalinya guna membuat aturan yang mengizinkan health check Google Cloud:
- Nama:
fw-healthcheck
- Jaringan: NETWORK
- Direction of traffic: Ingress
- Action on match: Allow
- Targets: Tag target yang ditentukan
- Tag target:
load-balanced-backend
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
130.211.0.0/22
dan35.191.0.0/16
Protokol dan port:
- Pilih Protokol dan port yang ditentukan.
- Pilih kotak centang TCP, lalu masukkan
80
untuk nomor port.
Sebagai praktik terbaik, batasi aturan ini hanya pada protokol dan port yang cocok dengan yang digunakan oleh health check Anda. Jika Anda menggunakan
tcp:80
untuk protokol dan port, Google Cloud dapat menggunakan HTTP di port80
untuk menghubungi VM Anda, tetapi tidak dapat menggunakan HTTPS di port443
untuk menghubunginya.
- Nama:
Klik Create.
Klik Create firewall rule untuk ketiga kalinya guna membuat aturan yang mengizinkan server proxy load balancer menghubungkan backend:
- Nama:
fw-backends
- Jaringan: NETWORK
- Direction of traffic: Ingress
- Action on match: Allow
- Targets: Tag target yang ditentukan
- Tag target:
load-balanced-backend
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
10.129.0.0/23
dan10.130.0.0/23
- Protokol dan port:
- Pilih Protokol dan port yang ditentukan.
- Pilih kotak centang TCP, lalu masukkan
80, 443, 8080
untuk nomor port.
- Nama:
Klik Create.
gcloud
Buat aturan firewall
fw-ilb-to-backends
untuk mengizinkan konektivitas SSH ke VM dengan tag jaringanallow-ssh
. Saat Anda menghapussource-ranges
, Google Cloud akan menafsirkan aturan sebagai sumber apa pun.gcloud compute firewall-rules create fw-ilb-to-backends \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Buat aturan
fw-healthcheck
untuk mengizinkan health check Google Cloud. Contoh ini mengizinkan semua traffic TCP dari penguji health check; namun, Anda juga dapat mengonfigurasi kumpulan port yang lebih sempit untuk memenuhi kebutuhan Anda.gcloud compute firewall-rules create fw-healthcheck \ --network=NETWORK \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=load-balanced-backend \ --rules=tcp
Buat aturan
fw-backends
untuk mengizinkan proxy Load Balancer Jaringan proxy internal terhubung ke backend Anda. Tetapkansource-ranges
ke rentang yang dialokasikan dari subnet khusus proxy Anda, misalnya,10.129.0.0/23
dan10.130.0.0/23
.gcloud compute firewall-rules create fw-backends \ --network=NETWORK \ --action=allow \ --direction=ingress \ --source-ranges=SOURCE_RANGE \ --target-tags=load-balanced-backend \ --rules=tcp:80,tcp:443,tcp:8080
API
Buat aturan firewall fw-ilb-to-backends
dengan membuat permintaan POST
ke
metode firewalls.insert
,
ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-ilb-to-backends", "network": "projects/PROJECT_ID/global/networks/NETWORK", "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS" }
Buat aturan firewall fw-healthcheck
dengan membuat permintaan POST
ke
metode firewalls.insert
,
ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-healthcheck", "network": "projects/PROJECT_ID/global/networks/NETWORK", "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp" } ], "direction": "INGRESS" }
Buat aturan firewall fw-backends
untuk mengizinkan traffic TCP dalam
subnet proxy untuk
metode firewalls.insert
,
ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "fw-backends", "network": "projects/PROJECT_ID/global/networks/NETWORK", "sourceRanges": [ "10.129.0.0/23", "10.130.0.0/23" ], "targetTags": [ "load-balanced-backend" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "80" ] }, { "IPProtocol": "tcp", "ports": [ "443" ] }, { "IPProtocol": "tcp", "ports": [ "8080" ] } ], "direction": "INGRESS" }
Membuat grup instance terkelola
Bagian ini menunjukkan cara membuat template dan grup instance terkelola. Grup instance terkelola menyediakan instance VM yang menjalankan server backend dari contoh Load Balancer Jaringan proxy internal lintas region. Untuk grup instance, Anda dapat menentukan layanan HTTP dan memetakan nama port ke port yang relevan. Layanan backend load balancer meneruskan traffic ke port bernama. Traffic dari klien di-load balance ke server backend. Untuk tujuan demonstrasi, backend menayangkan nama host-nya sendiri.
Konsol
Di konsol Google Cloud, buka halaman Instance templates.
Buka halaman Template instance
- Klik Create instance template.
- Untuk Name, masukkan
gil4-backendeast1-template
. - Pastikan Boot disk disetel ke image Debian, seperti
Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang
hanya tersedia di Debian, seperti
apt-get
. - Klik Advanced options.
- Klik Networking dan konfigurasikan kolom berikut:
- Untuk Network tags, masukkan
allow-ssh
danload-balanced-backend
. - Untuk Network interfaces, pilih dari daftar berikut:
- Jaringan: NETWORK
- Subnet: SUBNET_B
- Untuk Network tags, masukkan
Klik Management. Masukkan skrip berikut ke dalam kolom Skrip startup.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl 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 systemctl restart apache2
Klik Create.
Klik Create instance template.
Untuk Name, masukkan
gil4-backendwest1-template
.Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti
apt-get
.Klik Advanced options.
Klik Networking dan konfigurasikan kolom berikut:
- Untuk Network tags, masukkan
allow-ssh
danload-balanced-backend
. - Untuk Network interfaces, pilih dari daftar berikut:
- Jaringan: NETWORK
- Subnet: SUBNET_A
- Untuk Network tags, masukkan
Klik Management. Masukkan skrip berikut ke dalam kolom Skrip startup.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl 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 systemctl restart apache2
Klik Create.
Di konsol Google Cloud, buka halaman Instance groups.
- Klik Create instance group.
- Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
- Untuk Name, masukkan
gl4-ilb-miga
. - Untuk Location, pilih Single zone.
- Untuk Region, pilih REGION_A.
- Untuk Zone, pilih ZONE_A.
- Untuk Instance template, pilih
gil4-backendwest1-template
. Tentukan jumlah instance yang ingin Anda buat dalam grup.
Untuk contoh ini, tentukan opsi berikut di bagian Penskalaan otomatis:
- Untuk Autoscaling mode, pilih
Off:do not autoscale
. - Untuk Maximum number of instances, masukkan
2
.
Secara opsional, di bagian Autoscaling pada UI, Anda dapat mengonfigurasi grup instance untuk otomatis menambahkan atau menghapus instance berdasarkan penggunaan CPU instance.
- Untuk Autoscaling mode, pilih
Klik Create.
Klik Create instance group.
Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
Untuk Name, masukkan
gl4-ilb-migb
.Untuk Location, pilih Single zone.
Untuk Region, pilih REGION_B.
Untuk Zone, pilih ZONE_B.
Untuk Instance template, pilih
gil4-backendeast1-template
.Tentukan jumlah instance yang ingin Anda buat dalam grup.
Untuk contoh ini, tentukan opsi berikut di bagian Penskalaan otomatis:
- Untuk Autoscaling mode, pilih
Off:do not autoscale
. - Untuk Maximum number of instances, masukkan
2
.
Secara opsional, di bagian Autoscaling pada UI, Anda dapat mengonfigurasi grup instance untuk otomatis menambahkan atau menghapus instance berdasarkan penggunaan CPU instance.
- Untuk Autoscaling mode, pilih
Klik Create.
gcloud
Petunjuk gcloud CLI dalam panduan ini mengasumsikan bahwa Anda menggunakan Cloud Shell atau lingkungan lain dengan bash yang diinstal.
Buat template instance VM dengan server HTTP dengan perintah
gcloud compute instance-templates create
.gcloud compute instance-templates create gil4-backendwest1-template \ --region=REGION_A \ --network=NETWORK \ --subnet=SUBNET_A \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --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://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
gcloud compute instance-templates create gil4-backendeast1-template \ --region=REGION_B \ --network=NETWORK \ --subnet=SUBNET_B \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-12 \ --image-project=debian-cloud \ --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://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Buat grup instance terkelola di zona dengan perintah
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create gl4-ilb-miga \ --zone=ZONE_A \ --size=2 \ --template=gil4-backendwest1-template
gcloud compute instance-groups managed create gl4-ilb-migb \ --zone=ZONE_B \ --size=2 \ --template=gil4-backendeast1-template
API
Buat template instance dengan
metode instanceTemplates.insert
,
ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name":"gil4-backendwest1-template", "properties":{ "machineType":"e2-standard-2", "tags":{ "items":[ "allow-ssh", "load-balanced-backend" ] }, "metadata":{ "kind":"compute#metadata", "items":[ { "key":"startup-script", "value":"#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\n vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://169.254.169.254/computeMetadata/v1/instance/name)\"\n echo \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "networkInterfaces":[ { "network":"projects/PROJECT_ID/global/networks/NETWORK", "subnetwork":"regions/REGION_A/subnetworks/SUBNET_A", "accessConfigs":[ { "type":"ONE_TO_ONE_NAT" } ] } ], "disks":[ { "index":0, "boot":true, "initializeParams":{ "sourceImage":"projects/debian-cloud/global/images/family/debian-12" }, "autoDelete":true } ] } }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name":"gil4-backendeast1-template", "properties":{ "machineType":"e2-standard-2", "tags":{ "items":[ "allow-ssh", "load-balanced-backend" ] }, "metadata":{ "kind":"compute#metadata", "items":[ { "key":"startup-script", "value":"#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\n vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://169.254.169.254/computeMetadata/v1/instance/name)\"\n echo \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "networkInterfaces":[ { "network":"projects/PROJECT_ID/global/networks/NETWORK", "subnetwork":"regions/REGION_B/subnetworks/SUBNET_B", "accessConfigs":[ { "type":"ONE_TO_ONE_NAT" } ] } ], "disks":[ { "index":0, "boot":true, "initializeParams":{ "sourceImage":"projects/debian-cloud/global/images/family/debian-12" }, "autoDelete":true } ] } }
Buat grup instance terkelola di setiap zona dengan
metode instanceGroupManagers.insert
,
ganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers { "name": "gl4-ilb-miga", "zone": "projects/PROJECT_ID/zones/ZONE_A", "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/gil4-backendwest1-template", "baseInstanceName": "gl4-ilb-miga", "targetSize": 2 }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers { "name": "gl4-ilb-migb", "zone": "projects/PROJECT_ID/zones/ZONE_A", "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/gil4-backendwest1-template", "baseInstanceName": "gl4-ilb-migb", "targetSize": 2 }
Mengonfigurasi load balancer
Contoh ini menunjukkan cara membuat resource Load Balancer Jaringan proxy internal lintas region berikut:
- Health check TCP global.
- Layanan backend global dengan MIG yang sama dengan backend.
- Proxy target global.
- Dua aturan penerusan global dengan alamat IP regional.
Untuk alamat IP aturan penerusan, gunakan rentang alamat IP
SUBNET_A
atauSUBNET_B
. Jika Anda mencoba menggunakan subnet khusus proxy, pembuatan aturan penerusan akan gagal.
Ketersediaan proxy
Terkadang region Google Cloud tidak memiliki kapasitas proxy yang memadai untuk load balancer baru. Jika hal ini terjadi, konsol Google Cloud akan memberikan pesan peringatan ketersediaan proxy saat Anda membuat load balancer. Untuk menyelesaikan masalah ini, Anda dapat melakukan salah satu tindakan berikut:
- Pilih region lain untuk load balancer Anda. Hal ini dapat menjadi opsi yang praktis jika Anda memiliki backend di region lain.
- Pilih jaringan VPC yang sudah memiliki subnet khusus proxy yang dialokasikan.
Tunggu hingga masalah kapasitas teratasi.
Konsol
Memulai konfigurasi
Di konsol Google Cloud, buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
- Untuk Proxy or passthrough, pilih Proxy load balancer, lalu klik Next.
- Untuk Public facing or internal, pilih Internal, lalu klik Next.
- Untuk Cross-region or single region deployment, pilih Best for cross-region workloads, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi dasar
- Berikan Nama untuk load balancer.
- Untuk Network, pilih NETWORK.
Mengonfigurasi frontend dengan dua aturan penerusan
- Klik Frontend configuration.
- Berikan Name untuk aturan penerusan.
- Di daftar Subnetwork region, pilih REGION_A.
Mereservasi subnet khusus proxy
- Dalam daftar Subnetwork, pilih SUBNET_A.
- Dalam daftar IP address, klik Create IP address. Halaman Reserve a static internal IP address akan terbuka.
- Berikan Name untuk alamat IP statis.
- Dalam daftar Static IP address, pilih Let me choose.
- Di kolom Custom IP address, masukkan
10.1.2.99
. - Pilih Reservasi.
- Klik Done.
- Untuk menambahkan aturan penerusan kedua, klik Add frontend IP and port.
- Berikan Name untuk aturan penerusan.
- Di daftar Subnetwork region, pilih REGION_B.
Mereservasi subnet khusus proxy
- Dalam daftar Subnetwork, pilih SUBNET_B.
- Dalam daftar IP address, klik Create IP address. Halaman Reserve a static internal IP address akan terbuka.
- Berikan Name untuk alamat IP statis.
- Dalam daftar Static IP address, pilih Let me choose.
- Di kolom Custom IP address, masukkan
10.1.3.99
. - Pilih Reservasi.
- Klik Done.
- Klik Backend configuration.
- Dalam daftar Create or select backend services, klik Create a backend service.
- Berikan Nama untuk layanan backend.
- Untuk Protocol, pilih TCP.
- Untuk Named Port, masukkan
http
. - Dalam daftar Backend type, pilih Instance group.
- Di bagian New backend:
- Dalam daftar Instance group, pilih
gl4-ilb-miga
di REGION_A. - Setel Transfer nomor ke
80
. - Klik Done.
- Untuk menambahkan backend lain, klik Tambahkan backend.
- Dalam daftar Instance group, pilih
gl4-ilb-migb
di REGION_B. - Setel Transfer nomor ke
80
. - Klik Done.
- Di daftar Health check, klik Create a health check.
- Di kolom Name, masukkan
global-http-health-check
. - Tetapkan Protokol ke
HTTP
. - Tetapkan Port ke
80
. - Klik Simpan.
Meninjau konfigurasi
- Klik Review and finalize.
- Tinjau setelan konfigurasi load balancer Anda.
- Klik Create.
gcloud
Tentukan health check TCP dengan perintah
gcloud compute health-checks create tcp
.gcloud compute health-checks create tcp global-health-check \ --use-serving-port \ --global
Tentukan layanan backend dengan perintah
gcloud compute backend-services create
.gcloud compute backend-services create gl4-gilb-backend-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --enable-logging \ --logging-sample-rate=1.0 \ --health-checks=global-health-check \ --global-health-checks \ --global
Tambahkan backend ke layanan backend dengan perintah
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend gl4-gilb-backend-service \ --balancing-mode=CONNECTION \ --max-connections=50 \ --instance-group=gl4-ilb-miga \ --instance-group-zone=ZONE_A \ --global
gcloud compute backend-services add-backend gl4-gilb-backend-service \ --balancing-mode=CONNECTION \ --max-connections=50 \ --instance-group=gl4-ilb-migb \ --instance-group-zone=ZONE_B \ --global
Buat proxy target.
Buat proxy target dengan perintah
gcloud compute target-tcp-proxies create
.gcloud compute target-tcp-proxies create gilb-tcp-proxy \ --backend-service=gl4-gilb-backend-service \ --global
Buat dua aturan penerusan, satu dengan VIP (10.1.2.99) di
REGION_B
dan satu lagi dengan VIP (10.1.3.99) diREGION_A
. Untuk mengetahui informasi selengkapnya, lihat Mencadangkan alamat IPv4 internal statis.Untuk jaringan kustom, Anda harus mereferensikan subnet dalam aturan penerusan. Perhatikan bahwa ini adalah subnet VM, bukan subnet proxy.
Gunakan perintah
gcloud compute forwarding-rules create
dengan flag yang benar.gcloud compute forwarding-rules create gil4forwarding-rule-a \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=10.1.2.99 \ --ports=80 \ --target-tcp-proxy=gilb-tcp-proxy \ --global
gcloud compute forwarding-rules create gil4forwarding-rule-b \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=10.1.3.99 \ --ports=80 \ --target-tcp-proxy=gilb-tcp-proxy \ --global
API
Buat health check dengan membuat permintaan POST
ke
metode healthChecks.insert
,
mengganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/healthChecks { "name": "global-health-check", "type": "TCP", "httpHealthCheck": { "portSpecification": "USE_SERVING_PORT" } }
Buat layanan backend global dengan membuat permintaan POST
ke
metode backendServices.insert
,
mengganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices { "name": "gl4-gilb-backend-service", "backends": [ { "group": "projects/PROJECT_ID/zones/ZONE_A/instanceGroups/gl4-ilb-miga", "balancingMode": "CONNECTION" }, { "group": "projects/PROJECT_ID/zones/ZONE_B/instanceGroups/gl4-ilb-migb", "balancingMode": "CONNECTION" } ], "healthChecks": [ "projects/PROJECT_ID/regions/global/healthChecks/global-health-check" ], "loadBalancingScheme": "INTERNAL_MANAGED" }
Buat proxy TCP target dengan membuat permintaan POST
ke
metode targetTcpProxies.insert
,
mengganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetTcpProxy { "name": "l4-ilb-proxy", }
Buat aturan penerusan dengan membuat permintaan POST
ke metode forwardingRules.insert
, dengan mengganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules { "name": "gil4forwarding-rule-a", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/global/targetTcpProxies/l4-ilb-proxy", "loadBalancingScheme": "INTERNAL_MANAGED", "subnetwork": "projects/PROJECT_ID/regions/REGION_A/subnetworks/SUBNET_A", "network": "projects/PROJECT_ID/global/networks/NETWORK", "networkTier": "PREMIUM" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules { "name": "gil4forwarding-rule-b", "IPAddress": "10.1.3.99", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/global/targetTcpProxies/l4-ilb-proxy", "loadBalancingScheme": "INTERNAL_MANAGED", "subnetwork": "projects/PROJECT_ID/regions/REGION_B/subnetworks/SUBNET_B", "network": "projects/PROJECT_ID/global/networks/NETWORK", "networkTier": "PREMIUM" }
Buat aturan penerusan dengan membuat permintaan POST
ke metode globalForwardingRules.insert
, dengan mengganti PROJECT_ID
dengan project ID Anda.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules { "name": "gil4forwarding-rule-a", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/global/targetTcpProxies/l4-ilb-proxy", "loadBalancingScheme": "INTERNAL_MANAGED", "subnetwork": "projects/PROJECT_ID/regions/REGION_A/subnetworks/SUBNET_A", "network": "projects/PROJECT_ID/global/networks/NETWORK", "networkTier": "PREMIUM" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/forwardingRules { "name": "gil4forwarding-rule-b", "IPAddress": "10.1.3.99", "IPProtocol": "TCP", "portRange": "80-80", "target": "projects/PROJECT_ID/global/targetTcpProxies/l4-ilb-proxy", "loadBalancingScheme": "INTERNAL_MANAGED", "subnetwork": "projects/PROJECT_ID/regions/REGION_B/subnetworks/SUBNET_B", "network": "projects/PROJECT_ID/global/networks/NETWORK", "networkTier": "PREMIUM" }
Menguji load balancer
Membuat instance VM untuk menguji konektivitas
Buat VM klien di region
REGION_B
danREGION_A
:gcloud compute instances create l4-ilb-client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_A \ --zone=ZONE_A \ --tags=allow-ssh
gcloud compute instances create l4-ilb-client-b \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_B \ --zone=ZONE_B \ --tags=allow-ssh
Gunakan SSH untuk terhubung ke setiap instance klien.
gcloud compute ssh l4-ilb-client-a --zone=ZONE_A
gcloud compute ssh l4-ilb-client-b --zone=ZONE_B
Memverifikasi bahwa alamat IP menyalurkan nama host-nya
Pastikan VM klien dapat menjangkau kedua alamat IP. Perintah akan berhasil dan menampilkan nama VM backend yang melayani permintaan:
curl 10.1.2.99
curl 10.1.3.99
Menguji failover
Verifikasi failover ke backend di region
REGION_A
saat backend diREGION_B
tidak responsif atau tidak dapat dijangkau. Untuk menyimulasikan failover, hapus semua backend dariREGION_B
:gcloud compute backend-services remove-backend gl4-gilb-backend-service \ --instance-group=gl4-ilb-migb \ --instance-group-zone=ZONE_B \ --global
Hubungkan menggunakan SSH ke VM klien di
REGION_B
.gcloud compute ssh l4-ilb-client-b \ --zone=ZONE_B
Kirim permintaan ke alamat IP load balanced di region
REGION_B
. Output perintah menampilkan respons dari VM backend diREGION_A
:{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:10.1.3.99:443)" done echo "***" echo "*** Results of load-balancing to 10.1.3.99: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Opsi konfigurasi tambahan
Bagian ini memperluas contoh konfigurasi untuk memberikan opsi konfigurasi alternatif dan tambahan. Semua tugas bersifat opsional. Anda dapat melakukannya dalam urutan apa pun.
Protokol PROXY untuk mempertahankan informasi koneksi klien
Load Balancer Jaringan proxy internal menghentikan koneksi TCP dari klien dan membuat koneksi baru ke instance VM. Secara default, informasi port dan IP klien asli tidak dipertahankan.
Untuk mempertahankan dan mengirim informasi koneksi asli ke instance Anda, aktifkan protokol PROXY (versi 1). Protokol ini mengirim header tambahan yang berisi alamat IP sumber, alamat IP tujuan, dan nomor port ke instance sebagai bagian dari permintaan.
Pastikan instance backend Load Balancer Jaringan proxy internal menjalankan server HTTP atau HTTPS yang mendukung header protokol PROXY. Jika server HTTP atau HTTPS tidak dikonfigurasi untuk mendukung header protokol PROXY, instance backend akan menampilkan respons kosong. Misalnya, protokol PROXY tidak berfungsi dengan software Server HTTP Apache. Anda dapat menggunakan software server web yang berbeda, seperti Nginx.
Jika menetapkan protokol PROXY untuk traffic pengguna, Anda juga harus menetapkannya untuk
health check. Jika Anda memeriksa status dan menayangkan konten di port yang sama, tetapkan --proxy-header
health check agar cocok dengan setelan load balancer Anda.
Header protokol PROXY biasanya berupa satu baris teks yang dapat dibaca pengguna dalam format berikut:
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
Berikut adalah contoh protokol PROXY:
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
Dalam contoh sebelumnya, IP klien adalah 192.0.2.1
, IP load balancing adalah
198.51.100.1
, port klien adalah 15221
, dan port tujuan adalah 110
.
Jika IP klien tidak diketahui, load balancer akan membuat header protokol PROXY dalam format berikut:
PROXY UNKNOWN\r\n
Memperbarui header protokol PROXY untuk proxy TCP target
Contoh penyiapan load balancer di halaman ini menunjukkan cara mengaktifkan header protokol PROXY saat membuat Load Balancer Jaringan proxy internal. Gunakan langkah-langkah ini untuk mengubah header protokol PROXY untuk proxy TCP target yang ada.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik
Edit untuk load balancer Anda.Klik Frontend configuration.
Ubah nilai kolom Proxy protocol menjadi On.
Klik Update untuk menyimpan perubahan.
gcloud
Pada perintah berikut, edit kolom --proxy-header
dan tetapkan ke
NONE
atau PROXY_V1
, bergantung pada persyaratan Anda.
gcloud compute target-ssl-proxies update int-tcp-target-proxy \ --proxy-header=[NONE | PROXY_V1]
Menggunakan alamat IP yang sama di antara beberapa aturan penerusan internal
Agar beberapa aturan penerusan internal dapat menggunakan alamat IP internal yang sama,
Anda harus mencadangkan alamat IP dan menetapkan tanda --purpose
-nya ke
SHARED_LOADBALANCER_VIP
.
gcloud
gcloud compute addresses create SHARED_IP_ADDRESS_NAME \ --region=REGION \ --subnet=SUBNET_NAME \ --purpose=SHARED_LOADBALANCER_VIP
Mengaktifkan afinitas sesi
Contoh konfigurasi membuat layanan backend tanpa afinitas sesi.
Prosedur ini menunjukkan cara mengupdate layanan backend untuk contoh load balancer sehingga layanan backend menggunakan afinitas IP klien atau afinitas cookie yang dihasilkan.
Jika afinitas IP klien diaktifkan, load balancer akan mengarahkan permintaan klien tertentu ke VM backend yang sama berdasarkan hash yang dibuat dari alamat IP klien dan alamat IP load balancer (alamat IP internal dari aturan penerusan internal).
Konsol
Untuk mengaktifkan afinitas sesi IP klien:
- Di konsol Google Cloud, buka halaman Load balancing.
Buka Load balancing - Klik Backend.
- Klik nama layanan backend yang Anda buat untuk contoh ini, lalu klik Edit.
- Di halaman Detail layanan backend, klik Konfigurasi lanjutan.
- Di bagian Afinitas sesi, pilih IP Klien dari menu.
- Klik Perbarui.
gcloud
Gunakan perintah gcloud berikut untuk mengupdate layanan backend BACKEND_SERVICE
, yang menentukan afinitas sesi IP klien:
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --session-affinity=CLIENT_IP
Mengaktifkan pengosongan koneksi
Anda dapat mengaktifkan pengosongan koneksi di layanan backend untuk memastikan gangguan minimum kepada pengguna saat instance yang menayangkan traffic dihentikan, dihapus secara manual, atau dihapus oleh pengoptimal ukuran. Untuk mempelajari lebih lanjut pengosongan koneksi, baca dokumentasi Mengaktifkan pengosongan koneksi.
Langkah selanjutnya
- Mengonversi Load Balancer Jaringan proxy ke IPv6
- Ringkasan Load Balancer Jaringan proxy internal.
- Subnet khusus proxy untuk load balancer berbasis Envoy.
- Membersihkan penyiapan load balancing.