Panduan ini berisi petunjuk untuk membuat Load Balancer Jaringan passthrough berbasis layanan backend yang melakukan load balancing terhadap traffic TCP, UDP, ESP, GRE, ICMP, dan ICMPv6. Anda dapat menggunakan konfigurasi ini jika ingin melakukan load balancing terhadap traffic yang menggunakan protokol IP selain TCP atau UDP. Load Balancer Jaringan passthrough eksternal berbasis kumpulan target tidak mendukung kemampuan ini.
Untuk mengonfigurasi Load Balancer Jaringan passthrough eksternal untuk protokol IP selain TCP atau UDP, Anda harus membuat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT
. Aturan
penerusan ini mengarah ke layanan backend dengan protokol yang ditetapkan ke
UNSPECIFIED
.
Dalam contoh ini, kami menggunakan dua Load Balancer Jaringan passthrough eksternal untuk mendistribusikan traffic di seluruh VM backend dalam dua grup instance terkelola menurut zona di region us-central1
.
Kedua load balancer menerima traffic di alamat IP eksternal yang sama.
Satu load balancer memiliki aturan penerusan dengan protokol TCP
dan port 80, sedangkan load balancer lainnya memiliki aturan penerusan dengan protokol L3_DEFAULT
. Traffic TCP yang tiba di alamat IP pada port 80 ditangani oleh aturan penerusan TCP
. Semua traffic lain yang tidak cocok dengan aturan penerusan khusus TCP akan ditangani oleh aturan penerusan L3_DEFAULT
.
Skenario ini mendistribusikan traffic ke berbagai instance yang responsif. Untuk mendukung hal ini, Anda membuat health check TCP untuk memastikan bahwa traffic hanya dikirim ke instance yang responsif.
Load Balancer Jaringan passthrough eksternal adalah load balancer regional. Semua komponen load balancer harus berada di region yang sama.
Sebelum memulai
Instal Google Cloud CLI. Untuk ringkasan lengkap tentang alat ini, baca ringkasan gcloud CLI. Anda dapat menemukan perintah yang terkait dengan load balancing di referensi API dan gcloud.
Jika Anda belum pernah menjalankan gcloud CLI, jalankan perintah gcloud init
terlebih dahulu untuk melakukan autentikasi.
Panduan ini mengasumsikan bahwa Anda sudah terbiasa dengan bash.
Menyiapkan jaringan dan subnet
Contoh di halaman ini menggunakan jaringan VPC mode kustom bernama lb-network
. Anda dapat menggunakan jaringan VPC
mode otomatis jika hanya ingin menangani traffic IPv4.
Namun, traffic IPv6 memerlukan subnet mode kustom.
Traffic IPv6 juga memerlukan subnet dual-stack (stack-type
yang disetel ke
IPv4_IPv6
). Saat membuat subnet stack ganda di jaringan VPC mode kustom,
Anda memilih jenis akses IPv6 untuk
subnet tersebut. Untuk contoh ini, kita menetapkan parameter ipv6-access-type
subnet ke EXTERNAL
. Artinya, VM baru di subnet ini dapat diberi alamat IPv4 eksternal dan alamat IPv6 eksternal.
Backend dan komponen load balancer yang digunakan untuk contoh ini berada di region dan subnet ini:
- Region:
us-central1
- Subnet:
lb-subnet
, dengan rentang alamat IPv4 utama10.1.2.0/24
. Meskipun Anda memilih rentang alamat IPv4 yang dikonfigurasi di subnet, rentang alamat IPv6 akan ditetapkan secara otomatis. Google menyediakan blok CIDR IPv6 dengan ukuran tetap (/64).
Untuk membuat contoh jaringan dan subnet, ikuti langkah-langkah berikut.
Konsol
Untuk mendukung traffic IPv4 dan IPv6, gunakan langkah-langkah berikut:
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Masukkan Nama
lb-network
.Di bagian Subnet:
- Setel Subnet creation mode ke Custom.
- Di bagian Subnet baru, konfigurasi kolom berikut, lalu klik Done:
- Name:
lb-subnet
- Region:
us-central1
- Jenis stack IP: IPv4 dan IPv6 (dual-stack)
- Rentang IPv4:
10.1.2.0/24
Meskipun Anda dapat mengonfigurasi rentang alamat IPv4 untuk subnet, Anda tidak dapat memilih rentang alamat IPv6 untuk subnet. Google memberikan blok CIDR IPv6 dengan ukuran tetap (/64). - Jenis akses IPv6: Eksternal
- Name:
Klik Create.
Untuk mendukung traffic IPv4 saja, gunakan langkah-langkah berikut:
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Masukkan Nama
lb-network
.Di bagian Subnet:
- Setel Subnet creation mode ke Custom.
- Di bagian Subnet baru, konfigurasi kolom berikut, lalu klik Done:
- Name:
lb-subnet
- Region:
us-central1
- Jenis stack IP: IPv4 (stack tunggal)
- Rentang IPv4:
10.1.2.0/24
- Name:
Klik Create.
gcloud
Buat jaringan VPC mode kustom:
gcloud compute networks create lb-network \ --subnet-mode=custom
Dalam jaringan
lb-network
, buat subnet untuk backend di regionus-central1
.Untuk traffic IPv4 dan IPv6, gunakan perintah berikut untuk membuat subnet stack ganda:
gcloud compute networks subnets create lb-subnet \ --stack-type=IPV4_IPv6 \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
Untuk traffic IPv4 saja, gunakan perintah berikut:
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-central1
Membuat grup instance terkelola menurut zona
Untuk skenario load balancing ini, Anda harus membuat dua grup instance Compute Engine yang dikelola sesuai zona dan menginstal server web Apache pada setiap instance.
Untuk menangani traffic IPv4 dan IPv6, konfigurasikan VM backend menjadi
dual-stack. Tetapkan stack-type
VM ke IPv4_IPv6
. VM juga mewarisi setelan ipv6-access-type
(dalam contoh ini, EXTERNAL
) dari subnet. Untuk mengetahui detail selengkapnya tentang persyaratan IPv6, lihat Ringkasan Load Balancer Jaringan passthrough eksternal: Aturan penerusan.
Untuk menggunakan VM yang ada sebagai backend, perbarui VM menjadi dual stack dengan menggunakan
perintah gcloud compute instances network-interfaces update
.
Instance yang berpartisipasi sebagai VM backend untuk Load Balancer Jaringan passthrough eksternal harus menjalankan lingkungan tamu Linux, lingkungan tamu Windows, atau proses lain yang memberikan kemampuan yang setara.
Membuat grup instance untuk traffic TCP pada port 80
Konsol
Membuat template instance. Di konsol Google Cloud, buka halaman Instance templates.
- Klik Create instance template.
- Untuk Name, masukkan
ig-us-template-tcp-80
. - Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 10 (buster). Petunjuk ini menggunakan perintah yang
hanya tersedia di Debian, seperti
apt-get
. - Klik Networking, disks, security, management, sole tenancy.
Klik Management dan salin skrip berikut ke kolom 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
Klik Networking.
- Untuk Tag jaringan, tambahkan
network-lb-tcp-80
. - Untuk Network interfaces, klik antarmuka default, lalu
konfigurasikan kolom berikut:
- Jaringan:
lb-network
- Subjaringan:
lb-subnet
- Jaringan:
- Untuk Tag jaringan, tambahkan
Klik Create.
Membuat grup instance terkelola. Buka halaman Grup instance di konsol Google Cloud.
- Klik Create grup instance.
- Pilih New managed instance group (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
- Untuk Name, masukkan
ig-us-tcp-80
. - Di bagian Location, pilih Single zone.
- Untuk Region, pilih
us-central1
. - Untuk Zone, pilih
us-central1-a
. - Pada Instance template, pilih
ig-us-template-tcp-80
. Tentukan jumlah instance yang ingin Anda buat dalam grup.
Untuk contoh ini, tentukan opsi berikut di bagian Autoscaling:
- Untuk Autoscaling mode, pilih
Off:do not autoscale
. - Untuk Maximum number of instances, masukkan
2
.
- Untuk Autoscaling mode, pilih
Klik Create.
gcloud
Petunjuk gcloud
dalam panduan ini mengasumsikan bahwa Anda menggunakan Cloud Shell atau lingkungan lain yang menginstal bash.
Buat template instance VM dengan server HTTP menggunakan perintah
gcloud compute instance-templates create
.Untuk menangani traffic IPv4 dan IPv6, gunakan perintah berikut.
gcloud compute instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-tcp-80 \ --image-family=debian-10 \ --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://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Atau, jika Anda ingin menangani traffic khusus traffic IPv4, gunakan perintah berikut.
gcloud compute instance-templates create ig-us-template-tcp-80 \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-tcp-80 \ --image-family=debian-10 \ --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://metadata.google.internal/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 tersebut dengan perintah
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create ig-us-tcp-80 \ --zone us-central1-a \ --size 2 \ --template ig-us-template-tcp-80
Membuat grup instance untuk TCP pada traffic port 8080, UDP, ESP, dan ICMP
Konsol
Membuat template instance. Di konsol Google Cloud, buka halaman Instance templates.
- Klik Create instance template.
- Untuk Name, masukkan
ig-us-template-l3-default
. - Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 10 (buster). Petunjuk ini menggunakan perintah yang
hanya tersedia di Debian, seperti
apt-get
. - Klik Networking, disks, security, management, sole tenancy.
Klik Management dan salin skrip berikut ke kolom Startup script. Skrip startup juga mengonfigurasi server Apache untuk memproses port
8080
, bukan port80
.#! /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 sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf systemctl restart apache2
Klik Networking.
- Untuk Tag jaringan, tambahkan
network-lb-l3-default
. - Untuk Network interfaces, klik antarmuka default, lalu
konfigurasikan kolom berikut:
- Jaringan:
lb-network
- Subjaringan:
lb-subnet
- Jaringan:
- Untuk Tag jaringan, tambahkan
Klik Create.
Membuat grup instance terkelola. Buka halaman Grup instance di konsol Google Cloud.
- Klik Create grup instance.
- Pilih Grup instance terkelola baru (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
- Untuk Name, masukkan
ig-us-l3-default
. - Di bagian Location, pilih Single zone.
- Untuk Region, pilih
us-central1
. - Untuk Zone, pilih
us-central1-c
. - Pada Instance template, pilih
ig-us-template-l3-default
. Tentukan jumlah instance yang ingin Anda buat dalam grup.
Untuk contoh ini, tentukan opsi berikut di bagian Autoscaling:
- Untuk Autoscaling mode, pilih
Off:do not autoscale
. - Untuk Maximum number of instances, masukkan
2
.
- Untuk Autoscaling mode, pilih
Klik Create.
gcloud
Petunjuk gcloud
dalam panduan ini mengasumsikan bahwa Anda menggunakan Cloud Shell atau lingkungan lain yang menginstal bash.
Buat template instance VM dengan server HTTP menggunakan perintah
gcloud compute instance-templates create
.Skrip startup juga mengonfigurasi server Apache untuk memproses port
8080
, bukan port80
.Untuk menangani traffic IPv4 dan IPv6, gunakan perintah berikut.
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --ipv6-network-tier=PREMIUM \ --stack-type=IPv4_IPv6 \ --tags=network-lb-l3-default \ --image-family=debian-10 \ --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://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Atau, jika Anda ingin menangani hanya traffic IPv4, gunakan perintah berikut.
gcloud compute instance-templates create ig-us-template-l3-default \ --region=us-central1 \ --network=lb-network \ --subnet=lb-subnet \ --tags=network-lb-l3-default \ --image-family=debian-10 \ --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://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Buat grup instance terkelola di zona tersebut dengan perintah
gcloud compute instance-groups managed create
.gcloud compute instance-groups managed create ig-us-l3-default \ --zone us-central1-c \ --size 2 \ --template ig-us-template-l3-default
Mengonfigurasi aturan firewall
Buat aturan firewall berikut:
- Aturan firewall yang mengizinkan traffic TCP eksternal menjangkau instance backend di grup instance
ig-us-tcp-80
pada port 80 (menggunakan tag targetnetwork-lb-tcp-80
). Buat aturan firewall terpisah untuk mengizinkan traffic IPv4 dan IPv6. - Aturan firewall yang mengizinkan traffic eksternal lainnya (TCP di port 8080, UDP, ESP, dan ICMP) untuk menjangkau instance backend di grup instance
ig-us-l3-default
(menggunakan tag targetnetwork-lb-l3-default
). Buat aturan firewall terpisah untuk mengizinkan traffic IPv4 dan IPv6.
Contoh ini membuat aturan firewall yang memungkinkan traffic dari semua rentang sumber menjangkau instance backend Anda pada port yang dikonfigurasi. Jika Anda ingin membuat aturan firewall terpisah khusus untuk pemeriksaan health check, gunakan rentang alamat IP sumber yang didokumentasikan dalam Ringkasan health check: Rentang IP pemeriksaan dan aturan firewall.
Konsol
- Pada konsol Google Cloud, buka halaman Kebijakan Firewall.
Buka kebijakan Firewall - Agar traffic TCP IPv4 dapat menjangkau backend di grup instance
ig-us-tcp-80
, buat aturan firewall berikut.- Klik Create firewall rule.
- Masukkan Nama
allow-network-lb-tcp-80-ipv4
. - Pilih Jaringan tempat aturan firewall diterapkan (Default).
- Di bagian Target, pilih Tag target yang ditentukan.
- Di kolom Target tags, masukkan
network-lb-tcp-80
. - Tetapkan Filter sumber ke rentang IPv4.
- Tetapkan Source IPv4 ranges ke
0.0.0.0/0
, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend. - Di bagian Protocols and ports, pilih Specified protocols and
ports. Kemudian, centang kotak TCP dan masukkan
80
. - Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.
- Agar traffic UDP, ESP, dan ICMP IPv4 dapat menjangkau backend di
grup instance
ig-us-l3-default
, buat aturan firewall berikut.- Klik Create firewall rule.
- Masukkan Nama
allow-network-lb-l3-default-ipv4
. - Pilih Jaringan tempat aturan firewall diterapkan (Default).
- Di bagian Target, pilih Tag target yang ditentukan.
- Di kolom Target tags, masukkan
network-lb-l3-default
. - Tetapkan Filter sumber ke rentang IPv4.
- Tetapkan Source IPv4 ranges ke
0.0.0.0/0
, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend. - Di bagian Protocols and ports, pilih Specified protocols and
ports.
- Centang kotak TCP dan masukkan
8080
. - Centang kotak UDP.
- Pilih kotak centang Other, dan masukkan
esp, icmp
.
- Centang kotak TCP dan masukkan
- Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.
- Agar traffic TCP IPv6 dapat menjangkau backend di grup instance
ig-us-tcp-80
, buat aturan firewall berikut.- Klik Create firewall rule.
- Masukkan Nama
allow-network-lb-tcp-80-ipv6
. - Pilih Jaringan tempat aturan firewall diterapkan (Default).
- Di bagian Target, pilih Tag target yang ditentukan.
- Di kolom Target tags, masukkan
network-lb-tcp-80
. - Setel Filter sumber ke rentang IPv6.
- Tetapkan Source IPv6 ranges ke
::/0
, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend. - Di bagian Protocols and ports, pilih Specified protocols and
ports. Klik kotak centang di samping TCP dan masukkan
80
. - Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.
- Agar traffic UDP, ESP, dan ICMPv6 IPv6 dapat menjangkau backend di grup instance
ig-us-l3-default
, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP mencapai instance di port 8080.- Klik Create firewall rule.
- Masukkan Nama
allow-network-lb-l3-default-ipv6
. - Pilih Jaringan tempat aturan firewall diterapkan (Default).
- Di bagian Target, pilih Tag target yang ditentukan.
- Di kolom Target tags, masukkan
network-lb-l3-default
. - Setel Filter sumber ke rentang IPv6.
- Tetapkan Source IPv6 ranges ke
::/0
, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend. - Di bagian Protocols and ports, pilih Specified protocols and
ports.
- Klik kotak centang di samping TCP dan masukkan
8080
. - Klik kotak centang di samping UDP.
- Klik kotak centang di samping Other dan masukkan
esp, 58
.
- Klik kotak centang di samping TCP dan masukkan
- Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.
gcloud
Agar traffic TCP IPv4 dapat menjangkau backend di grup instance
ig-us-tcp-80
, buat aturan firewall berikut.gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv4 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=0.0.0.0/0
Agar traffic UDP, ESP, dan ICMP IPv4 dapat menjangkau backend di grup instance
ig-us-l3-default
, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP mencapai instance di port 8080.gcloud compute firewall-rules create allow-network-lb-l3-default-ipv4 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,icmp \ --source-ranges=0.0.0.0/0
Agar traffic TCP IPv6 dapat menjangkau backend di grup instance
ig-us-tcp-80
, buat aturan firewall berikut.gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv6 \ --network=lb-network \ --target-tags network-lb-tcp-80 \ --allow tcp:80 \ --source-ranges=::/0
Agar traffic UDP, ESP, dan ICMPv6 IPv6 dapat menjangkau backend di grup instance
ig-us-l3-default
, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP mencapai instance di port 8080.gcloud compute firewall-rules create allow-network-lb-l3-default-ipv6 \ --network=lb-network \ --target-tags network-lb-l3-default \ --allow tcp:8080,udp,esp,58 \ --source-ranges=::/0
Mengonfigurasi load balancer
Selanjutnya, siapkan load balancer. Konfigurasi satu load balancer untuk menangani traffic TCP di port 80 dan load balancer lainnya untuk menangani TCP pada traffic port 8080, UDP, ESP, dan ICMP. Kedua load balancer akan menggunakan alamat IP eksternal yang sama dengan aturan penerusannya.
Ketika Anda mengonfigurasi load balancer, instance VM backend Anda akan menerima paket yang ditujukan untuk alamat IP eksternal statis yang dikonfigurasi. Jika Anda menggunakan image yang disediakan oleh Compute Engine, instance Anda akan otomatis dikonfigurasi untuk menangani alamat IP ini. Jika menggunakan image lain, Anda harus mengonfigurasi alamat ini sebagai alias pada eth0
atau sebagai loopback pada setiap instance.
Konsol
gcloud
Lakukan reservasi alamat IP eksternal statis.
Untuk traffic IPv4: Buat alamat IP eksternal statis untuk load balancer Anda.
gcloud compute addresses create network-lb-ipv4 \ --region us-central1
Untuk traffic IPv6: Buat rentang alamat IPv6 eksternal statis untuk load balancer Anda. Subnet yang digunakan harus berupa subnet dual stack dengan rentang subnet IPv6 eksternal.
gcloud compute addresses create network-lb-ipv6 \ --region us-central1 \ --subnet lb-subnet \ --ip-version IPV6 \ --endpoint-type NETLB
Buat health check TCP untuk port
80
. Health check ini digunakan untuk memverifikasi respons backend di grup instanceig-us-tcp-80
.gcloud compute health-checks create tcp tcp-health-check-80 \ --region us-central1 \ --port 80
Buat health check TCP untuk port
8080
. Health check ini digunakan untuk memverifikasi kondisi backend di grup instanceig-us-l3-default
.gcloud compute health-checks create tcp tcp-health-check-8080 \ --region us-central1 \ --port 8080
Buat load balancer pertama untuk traffic TCP pada port
80
.Buat layanan backend dengan protokol yang ditetapkan ke
TCP
.gcloud compute backend-services create backend-service-tcp-80 \ --protocol TCP \ --health-checks tcp-health-check-80 \ --health-checks-region us-central1 \ --region us-central1
Tambahkan grup instance backend ke layanan backend.
gcloud compute backend-services add-backend backend-service-tcp-80 \ --instance-group ig-us-tcp-80 \ --instance-group-zone us-central1-a \ --region us-central1
Untuk traffic IPv4: Buat aturan penerusan untuk merutekan traffic TCP masuk di port
80
ke layanan backend.TCP
adalah protokol aturan penerusan default dan tidak perlu ditetapkan secara eksplisit.Gunakan alamat IP yang dicadangkan di langkah 1 sebagai alamat IP eksternal statis load balancer.
gcloud compute forwarding-rules create forwarding-rule-tcp-80-ipv4 \ --load-balancing-scheme external \ --region us-central1 \ --ports 80 \ --address network-lb-ipv4 \ --backend-service backend-service-tcp-80
Untuk traffic IPv6: Buat aturan penerusan untuk merutekan traffic TCP masuk di port
80
ke layanan backend.TCP
adalah protokol aturan penerusan default dan tidak perlu ditetapkan secara eksplisit.Gunakan rentang alamat IPv6 yang dicadangkan di langkah 1 sebagai alamat IP eksternal statis load balancer. Subnet yang digunakan harus berupa subnet dual-stack dengan rentang subnet IPv6 eksternal.
gcloud compute forwarding-rules create forwarding-rule-tcp-80-ipv6 \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports 80 \ --backend-service backend-service-tcp-80
Buat load balancer kedua untuk TCP pada port
8080
, UDP, ESP, dan ICMP.Buat layanan backend dengan protokol yang ditetapkan ke
UNSPECIFIED
.gcloud compute backend-services create backend-service-l3-default \ --protocol UNSPECIFIED \ --health-checks tcp-health-check-8080 \ --health-checks-region us-central1 \ --region us-central1
Tambahkan grup instance backend ke layanan backend.
gcloud compute backend-services add-backend backend-service-l3-default \ --instance-group ig-us-l3-default \ --instance-group-zone us-central1-c \ --region us-central1
Untuk traffic IPv4: Buat aturan penerusan dengan protokol yang ditetapkan ke
L3_DEFAULT
untuk menangani semua traffic protokol IP yang didukung (TCP pada port8080
, UDP, ESP, dan ICMP). Semua port harus dikonfigurasi dengan aturan penerusanL3_DEFAULT
.Gunakan alamat IPv4 eksternal yang sama dengan yang Anda gunakan untuk load balancer sebelumnya.
gcloud compute forwarding-rules create forwarding-rule-l3-default-ipv4 \ --load-balancing-scheme external \ --region us-central1 \ --ports all \ --ip-protocol L3_DEFAULT \ --address network-lb-ipv4 \ --backend-service backend-service-l3-default
Untuk traffic IPv6: Buat aturan penerusan dengan protokol yang ditetapkan ke
L3_DEFAULT
untuk menangani semua traffic protokol IP yang didukung (TCP pada port8080
, UDP, ESP, dan ICMP). Semua port harus dikonfigurasi dengan aturan penerusanL3_DEFAULT
.Gunakan rentang alamat IPv6 yang dicadangkan di langkah 1 sebagai alamat IP eksternal statis load balancer. Subnet yang digunakan harus berupa subnet dual-stack dengan rentang subnet IPv6 eksternal.
gcloud compute forwarding-rules create forwarding-rule-l3-default-ipv6 \ --load-balancing-scheme external \ --region us-central1 \ --network-tier PREMIUM \ --ip-version IPV6 \ --subnet lb-subnet \ --address network-lb-ipv6 \ --ports all \ --ip-protocol L3_DEFAULT \ --backend-service backend-service-l3-default
Menguji load balancer
Setelah layanan load balancing dikonfigurasi, Anda dapat mulai mengirim traffic ke alamat IP eksternal load balancer dan melihat traffic didistribusikan ke backend instance.
Mencari alamat IP eksternal load balancer
Konsol
- Di halaman load balancing Lanjutan, buka tab Aturan Penerusan.
Buka tab Aturan Penerusan - Temukan aturan penerusan yang digunakan oleh load balancer.
- Di kolom IP Address, catat alamat IP eksternal yang tercantum untuk setiap aturan penerusan IPv4 dan IPv6.
gcloud: IPv4
Masukkan perintah berikut untuk melihat alamat IP eksternal dari aturan penerusan yang digunakan oleh load balancer.
gcloud compute forwarding-rules describe forwarding-rule-tcp-80-ipv4 \ --region us-central1
Contoh ini menggunakan alamat IP yang sama untuk kedua aturan penerusan IPv4, sehingga penggunaan forwarding-rule-l3-default-ipv4
juga akan berfungsi.
gcloud: IPv6
Masukkan perintah berikut untuk melihat alamat IPv6 eksternal dari aturan penerusan forwarding-rule-tcp-80-ipv6
yang digunakan oleh load balancer.
gcloud compute forwarding-rules describe forwarding-rule-tcp-80-ipv6 \ --region us-central1
Contoh ini menggunakan alamat IP yang sama untuk kedua aturan penerusan IPv6, sehingga penggunaan forwarding-rule-l3-default-ipv6
juga akan berfungsi.
Mengirim traffic ke load balancer
Prosedur ini mengirim traffic eksternal ke load balancer. Jalankan pengujian berikut
untuk memastikan bahwa traffic TCP di port 80 mengalami load balancing oleh
grup instance ig-us-tcp-80
, sementara semua traffic lainnya (TCP di port 8080, UDP, ESP,
dan ICMP) ditangani oleh grup instance ig-us-l3-default
.
Memverifikasi perilaku dengan permintaan TCP pada port 80
Buat permintaan web (melalui TCP pada port 80) ke load balancer menggunakan
curl
untuk menghubungi alamat IP-nya.Dari klien dengan konektivitas IPv4, jalankan perintah berikut:
$ while true; do curl -m1 IP_ADDRESS; done
Dari klien dengan konektivitas IPv6, jalankan perintah berikut:
$ while true; do curl -m1 http://IPV6_ADDRESS; done
Misalnya, jika alamat IPv6 yang ditetapkan adalah
[2001:db8:1:1:1:1:1:1/96]
, perintahnya akan terlihat seperti ini:$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]; done
Perhatikan teks yang ditampilkan oleh perintah
curl
. Nama VM backend yang menghasilkan respons ditampilkan dalam teks tersebut; misalnya:Page served from: VM_NAME
. Respons harus berasal dari instance dalam grup instanceig-us-tcp-80
saja.Jika respons di awal tidak berhasil, Anda mungkin harus menunggu sekitar 30 detik hingga konfigurasi dimuat sepenuhnya dan instance dianggap responsif sebelum mencoba lagi.
Memverifikasi perilaku dengan permintaan TCP pada port 8080
Buat permintaan web (melalui TCP pada port 8080
) ke load balancer menggunakan curl
untuk menghubungi alamat IP-nya.
Dari klien dengan konektivitas IPv4, jalankan perintah berikut:
$ while true; do curl -m1 IPV4_ADDRESS:8080; done
Dari klien dengan konektivitas IPv6, jalankan perintah berikut:
$ while true; do curl -m1 http://IPV6_ADDRESS; done
Misalnya, jika alamat IPv6 yang ditetapkan adalah
[2001:db8:1:1:1:1:1:1/96]
, perintahnya akan terlihat seperti ini:$ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:8080; done
Perhatikan teks yang ditampilkan oleh perintah curl
. Respons harus berasal dari
instance dalam grup instance ig-us-l3-default
saja.
Hal ini menunjukkan bahwa setiap traffic yang dikirim ke alamat IP load balancer di port 8080
hanya ditangani oleh backend di grup instance ig-us-l3-default
.
Memverifikasi perilaku dengan permintaan ICMP
Untuk memverifikasi perilaku dengan traffic ICMP, Anda merekam output dari perintah tcpdump
untuk mengonfirmasi bahwa hanya VM backend dalam grup instance ig-us-l3-default
yang menangani permintaan ICMP yang dikirim ke load balancer.
SSH ke VM backend.
Di konsol Google Cloud, buka halaman Instance VM.
Buka halaman VM instancesDalam daftar instance virtual machine, klik SSH di baris instance yang ingin dihubungkan.
Jalankan perintah berikut untuk menggunakan
tcpdump
guna mulai memproses traffic ICMP.sudo tcpdump icmp -w ~/icmpcapture.pcap -s0 -c 10000 tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Biarkan jendela SSH terbuka.
Ulangi langkah 1 dan 2 untuk keempat VM backend.
Membuat permintaan ICMP ke load balancer.
Untuk menguji respons IPv4, gunakan
ping
untuk menghubungi alamat IPv4 load balancer.ping IPV4_ADDRESS
Untuk menguji respons IPv6, gunakan
ping6
untuk menghubungi alamat IPv6 load balancer.ping6 IPV6_ADDRESS
Misalnya, jika alamat IPv6 yang ditetapkan adalah
[2001:db8:1:1:1:1:1:1/96]
, perintahnya akan terlihat seperti ini:ping6 2001:db8:1:1:1:1:1:1
Kembali ke jendela SSH setiap VM yang terbuka dan hentikan perintah perekaman
tcpdump
. Anda dapat menggunakan Ctrl+C untuk melakukannya.Untuk setiap VM, periksa output perintah
tcpdump
dalam fileicmpcapture.pcap
.sudo tcpdump -r ~/icmpcapture.pcap -n
Untuk VM backend dalam grup instance
ig-us-l3-default
, Anda akan melihat entri file seperti:reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet) 22:13:07.814486 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 1, length 64 22:13:07.814513 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 1, length 64 22:13:08.816150 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 2, length 64 22:13:08.816175 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 2, length 64 22:13:09.817536 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 3, length 64 22:13:09.817560 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 3, length 64 ...
Untuk VM backend dalam grup instance
ig-us-tcp-80
, Anda akan melihat bahwa tidak ada paket yang diterima dan file harus kosong:reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
Langkah selanjutnya
- Untuk mengonfigurasi Load Balancer Jaringan passthrough eksternal dengan backend NEG zona yang memungkinkan Anda meneruskan paket ke antarmuka jaringan non-
nic0
instance VM, lihat Menyiapkan Load Balancer Jaringan passthrough eksternal dengan NEG zona. - Untuk mengetahui informasi tentang cara kerja Load Balancer Jaringan passthrough eksternal dengan layanan backend, baca Ringkasan Load Balancer Jaringan passthrough eksternal berbasis layanan backend.
- Untuk mempelajari cara mentransisikan Load Balancer Jaringan passthrough eksternal dari backend kumpulan target ke layanan backend regional, lihat Memigrasikan Load Balancer Jaringan passthrough eksternal dari kumpulan target ke layanan backend
- Jika ingin mengonfigurasi perlindungan DDoS jaringan lanjutan untuk Load Balancer Jaringan passthrough eksternal menggunakan Google Cloud Armor, lihat Mengonfigurasi perlindungan DDoS jaringan lanjutan.
- Untuk menghapus resource, lihat Membersihkan penyiapan load balancer.