Dengan Load Balancer Jaringan proxy klasik Google Cloud, Anda dapat menggunakan satu alamat IP untuk semua pengguna di seluruh dunia. Load Balancer Jaringan proxy klasik secara otomatis merutekan traffic ke instance backend yang terdekat dengan pengguna.
Halaman ini berisi petunjuk untuk menyiapkan Load Balancer Jaringan proxy klasik dengan backend grup instance VM dan proxy TCP target. Sebelum memulai, baca Ringkasan Load Balancer Jaringan proxy eksternal untuk mengetahui informasi mendetail tentang cara kerja load balancer ini.
Ringkasan penyiapan
Contoh ini menunjukkan cara menyiapkan Load Balancer Jaringan proxy eksternal untuk layanan yang ada di dua region: us-central1
dan us-east1
.
Untuk tujuan contoh, layanan ini adalah serangkaian server Apache
yang dikonfigurasi untuk merespons port 110
. Banyak browser tidak
mengizinkan port 110
, sehingga bagian pengujian menggunakan curl
.
Dalam contoh ini, Anda mengonfigurasi hal berikut:
- Empat instance didistribusikan di antara dua region
- Grup instance, yang berisi instance
- Health check untuk memverifikasi kondisi instance
- Layanan backend, yang memantau instance dan mencegahnya agar tidak melampaui penggunaan yang telah dikonfigurasi
- Proxy TCP target
- Alamat IPv4 statis eksternal dan aturan penerusan yang mengirimkan traffic pengguna ke proxy
- Alamat IPv6 statis eksternal dan aturan penerusan yang mengirimkan traffic pengguna ke proxy
- Aturan firewall yang memungkinkan traffic dari load balancer dan health checker menjangkau instance
Setelah load balancer dikonfigurasi, Anda akan menguji konfigurasi tersebut.
Izin
Untuk mengikuti panduan ini, Anda harus dapat membuat instance dan mengubah jaringan dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki semua peran IAM Compute Engine berikut:
Tugas | Peran yang Diperlukan |
---|---|
Membuat jaringan, subnet, dan komponen load balancer | Admin Jaringan |
Menambahkan dan menghapus aturan firewall | Security Admin |
Membuat instance | Compute Instance Admin |
Untuk informasi selengkapnya, lihat panduan berikut:
Mengonfigurasi backend grup instance
Bagian ini menunjukkan cara membuat grup instance sederhana, menambahkan instance ke dalamnya, lalu menambahkan instance tersebut ke layanan backend dengan health check. Sistem produksi biasanya akan menggunakan grup instance terkelola berdasarkan template instance, tetapi konfigurasi ini lebih cepat untuk pengujian awal.
Mengonfigurasi instance
Untuk tujuan pengujian, instal Apache pada empat instance, dua di masing-masing dari dua grup instance. Biasanya, Load Balancer Jaringan proxy eksternal tidak digunakan untuk traffic HTTP, tetapi Apache adalah software yang umum digunakan dan mudah disiapkan untuk pengujian.
Dalam contoh ini, instance dibuat dengan tag tcp-lb
. Tag ini digunakan nanti oleh aturan firewall.
Konsol
Membuat instance
Di konsol Google Cloud, buka halaman Instance VM.
Klik Create instance.
Tetapkan Nama ke
ig-us-central1-1
.Setel Region ke
us-central1
.Setel Zone ke
us-central1-b
.Klik Advanced options.
Klik Networking dan konfigurasikan kolom berikut:
- Untuk Tag jaringan, masukkan
tcp-lb
.
- Untuk Tag jaringan, masukkan
Klik Management. Masukkan skrip berikut ke kolom Skrip startup.
sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html
Klik Create.
Buat
ig-us-central1-2
dengan setelan yang sama, kecuali dengan skrip berikut di kolom Startup script:sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html
Buat
ig-us-east1-1
dengan setelan yang sama, kecuali dengan Region ditetapkan keus-east1
dan Zone ditetapkan keus-east1-b
. Masukkan skrip berikut di kolom Skrip startup:sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html
Buat
ig-us-east1-2
dengan setelan yang sama, kecuali dengan Region ditetapkan keus-east1
dan Zone ditetapkan keus-east1-b
. Masukkan skrip berikut di kolom Skrip startup:sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Buat
ig-us-central1-1
di zonaus-central1-b
gcloud compute instances create ig-us-central1-1 \ --image-family debian-10 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | tee /var/www/html/index.html EOF"
Buat
ig-us-central1-2
di zonaus-central1-b
gcloud compute instances create ig-us-central1-2 \ --image-family debian-10 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | tee /var/www/html/index.html EOF"
Buat
ig-us-east1-1
di zonaus-east1-b
gcloud compute instances create ig-us-east1-1 \ --image-family debian-10 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-east1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | tee /var/www/html/index.html EOF"
Buat
ig-us-east1-2
di zonaus-east1-b
gcloud compute instances create ig-us-east1-2 \ --image-family debian-10 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-east1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | tee /var/www/html/index.html EOF"
Membuat grup instance
Di bagian ini, Anda akan membuat grup instance di setiap zona dan menambahkan instance.
Konsol
Di Konsol Google Cloud, buka halaman Instance groups.
Klik Create grup instance.
Klik New unmanaged instance group.
Tetapkan Name ke
us-ig1
.Setel Zone ke
us-central1-b
.Di bagian Pemetaan port, klik Tambahkan port. Load balancer mengirimkan traffic ke grup instance melalui port bernama. Buat port bernama untuk memetakan traffic masuk ke nomor port tertentu.
- Setel Nama port ke
tcp110
. - Setel Transfer nomor ke
110
.
- Setel Nama port ke
Di bagian VM instances, pilih
ig-us-central1-1
danig-us-central1-2
.Biarkan setelan lain seperti apa adanya.
Klik Create.
Ulangi langkah-langkah tersebut, tetapi tetapkan nilai berikut:
- Name:
us-ig2
- Region:
us-east1
- Zona:
us-east1-b
- Nama port:
tcp110
- Nomor port:
110
- Instance: ig-us-east1-1 dan ig-us-east1-2.
- Name:
gcloud
Buat grup instance
us-ig1
.gcloud compute instance-groups unmanaged create us-ig1 \ --zone us-central1-b
Buat port bernama untuk grup instance.
gcloud compute instance-groups set-named-ports us-ig1 \ --named-ports tcp110:110 \ --zone us-central1-b
Menambahkan
ig-us-central1-1
danig-us-central1-2
keus-ig1
gcloud compute instance-groups unmanaged add-instances us-ig1 \ --instances ig-us-central1-1,ig-us-central1-2 \ --zone us-central1-b
Buat grup instance
us-ig2
.gcloud compute instance-groups unmanaged create us-ig2 \ --zone us-east1-b
Buat port bernama untuk grup instance.
gcloud compute instance-groups set-named-ports us-ig2 \ --named-ports tcp110:110 \ --zone us-east1-b
Menambahkan
ig-us-east1-1
danig-us-east1-2
keus-ig2
gcloud compute instance-groups unmanaged add-instances us-ig2 \ --instances ig-us-east1-1,ig-us-east1-2 \ --zone us-east1-b
Anda kini memiliki satu grup instance per region. Setiap grup instance memiliki dua instance VM.
Membuat aturan firewall untuk Load Balancer Jaringan proxy eksternal
Konfigurasikan firewall untuk mengizinkan traffic dari load balancer dan health checker ke instance. Dalam hal ini, kita akan membuka TCP port 110. Health check akan menggunakan port yang sama. Karena traffic antara load balancer dan instance Anda menggunakan IPv4, hanya rentang IPv4 yang perlu dibuka.
Konsol
Di Konsol Google Cloud, buka halaman Firewall policies.
Klik Create firewall rule.
Di kolom Name, masukkan
allow-tcp-lb-and-health
.Di bagian Network, pilih default.
Di bagian Target, pilih Tag target yang ditentukan.
Setel Target tags ke
tcp-lb
.Tetapkan Filter sumber ke rentang IPv4.
Tetapkan Source IPv4 ranges ke
130.211.0.0/22
,35.191.0.0/16
.Di bagian Protocols and ports, tetapkan Specified protocols and ports ke
tcp:110
.Klik Create.
gcloud
gcloud compute firewall-rules create allow-tcp-lb-and-health \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags tcp-lb \ --allow tcp:110
Mengonfigurasi load balancer
Konsol
Memulai konfigurasi Anda
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 Public facing (eksternal), lalu klik Next.
- Untuk Global or single region deployment, pilih Best for global Workload, lalu klik Next.
- Untuk Load balancer generasi, pilih classic proxy Network Load Balancer, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi dasar
Tetapkan Name ke my-tcp-lb
.
Konfigurasi backend
- Klik Backend configuration.
- Di bagian Backend type, pilih Instance groups.
- Di bagian Protocol, pilih TCP.
- Konfigurasi backend pertama:
- Di bagian New backend, pilih grup instance
us-ig1
. - Pertahankan nilai default yang tersisa.
- Di bagian New backend, pilih grup instance
- Konfigurasi backend kedua:
- Klik Add backend.
- Pilih grup instance
us-ig2
. - Di bagian Nomor port, hapus
80
, lalu tambahkan110
.
- Konfigurasi health check:
- Di bagian Health check, pilih Buat health check.
- Tetapkan Name health check ke
my-tcp-health-check
. - Di bagian Protocol, pilih TCP.
- Tetapkan Port ke
110
. - Pertahankan nilai default yang tersisa.
- Klik Simpan dan lanjutkan.
- Di Google Cloud Console, pastikan ada tanda centang di samping Backend configuration. Jika belum, periksa kembali apakah Anda sudah menyelesaikan semua langkah.
Konfigurasi frontend
- Klik Frontend configuration.
- Tambahkan aturan penerusan pertama:
- Masukkan Nama
my-tcp-lb-forwarding-rule
. - Di bagian Protocol, pilih TCP.
- Di bagian Alamat IP, pilih Buat alamat IP:
- Masukkan Nama
tcp-lb-static-ip
. - Klik Reserve.
- Masukkan Nama
- Tetapkan Port ke
110
. - Dalam contoh ini, jangan aktifkan Proxy Protocol karena tidak berfungsi dengan software Server HTTP Apache. Untuk mengetahui informasi selengkapnya, lihat Protokol proxy.
- Klik Done.
- Masukkan Nama
- Tambahkan aturan penerusan kedua:
- Klik Add frontend IP and port.
- Masukkan Nama
my-tcp-lb-ipv6-forwarding-rule
. - Di bagian Protocol, pilih TCP.
- Tetapkam Versi IP ke
IPv6
. - Pada bagian Alamat IP, klik Buat alamat IP.
- Masukkan nama
tcp-lb-ipv6-static-ip
. - Klik Reserve.
- Masukkan nama
- Tetapkan Port ke
110
. - Dalam contoh ini, jangan aktifkan Proxy Protocol karena tidak berfungsi dengan software Server HTTP Apache. Untuk mengetahui informasi selengkapnya, lihat Protokol proxy.
- Klik Done.
Di konsol Google Cloud, pastikan ada tanda centang di samping Frontend configuration. Jika belum, periksa kembali apakah Anda telah menyelesaikan semua langkah sebelumnya.
Tinjau dan selesaikan
- Klik Review and finalize.
- Tinjau setelan konfigurasi load balancer Anda.
- Opsional: Klik Equivalent code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
- Klik Create.
gcloud
- Membuat health check.
gcloud compute health-checks create tcp my-tcp-health-check --port 110
- Buat layanan backend.
gcloud compute backend-services create my-tcp-lb \ --load-balancing-scheme EXTERNAL \ --global-health-checks \ --global \ --protocol TCP \ --health-checks my-tcp-health-check \ --timeout 5m \ --port-name tcp110
- Tambahkan grup instance ke layanan backend Anda.
gcloud compute backend-services add-backend my-tcp-lb \ --global \ --instance-group us-ig1 \ --instance-group-zone us-central1-b \ --balancing-mode UTILIZATION \ --max-utilization 0.8
gcloud compute backend-services add-backend my-tcp-lb \ --global \ --instance-group us-ig2 \ --instance-group-zone us-east1-b \ --balancing-mode UTILIZATION \ --max-utilization 0.8
- Mengonfigurasi proxy TCP target. Jika Anda ingin mengaktifkan header proxy, tetapkan ke
PROXY_V1
, bukanNONE
.gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy \ --backend-service my-tcp-lb \ --proxy-header NONE
- Mencadangkan alamat IPv4 dan IPv6 statis global.
Pelanggan dapat menggunakan alamat IP ini untuk menjangkau layanan load balancing Anda.
gcloud compute addresses create tcp-lb-static-ipv4 \ --ip-version=IPV4 \ --global
gcloud compute addresses create tcp-lb-static-ipv6 \ --ip-version=IPV6 \ --global
- Mengonfigurasi aturan penerusan global untuk dua alamat.
gcloud compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \ --load-balancing-scheme EXTERNAL \ --global \ --target-tcp-proxy my-tcp-lb-target-proxy \ --address tcp-lb-static-ipv4 \ --ports 110
gcloud compute forwarding-rules create my-tcp-lb-ipv6-forwarding-rule \ --load-balancing-scheme EXTERNAL \ --global \ --target-tcp-proxy my-tcp-lb-target-proxy \ --address tcp-lb-static-ipv6 \ --ports 110
Menguji load balancer
Mendapatkan alamat IP load balancer.
Untuk mendapatkan alamat IPv4, jalankan perintah berikut:
gcloud compute addresses describe tcp-lb-static-ipv4
Untuk mendapatkan alamat IPv6, jalankan perintah berikut:
gcloud compute addresses describe tcp-lb-static-ipv6
Kirim traffic ke load balancer dengan menjalankan perintah berikut. Ganti
LB_IP_ADDRESS
dengan alamat IPv4 atau IPv6 load balancer Anda.curl -m1 LB_IP_ADDRESS:110
Misalnya, jika alamat IPv6 yang ditetapkan adalah
[2001:db8:1:1:1:1:1:1/96]:110
, perintahnya akan terlihat seperti ini:curl -m1 http://[2001:db8:1:1:1:1:1:1]:110
Jika Anda tidak dapat menjangkau load balancer, coba langkah-langkah yang dijelaskan di bagian Memecahkan masalah penyiapan.
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 menyimpan informasi koneksi klien
Load Balancer Jaringan proxy mengakhiri koneksi TCP dari klien dan membuat koneksi baru ke instance. Secara default, informasi porta dan IP klien asli tidak dipertahankan.
Untuk menyimpan dan mengirim informasi koneksi asli ke instance Anda, aktifkan protokol PROXY versi 1. Protokol ini mengirimkan 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 menjalankan server yang mendukung header protokol PROXY. Jika server tidak dikonfigurasi untuk mendukung header protokol PROXY, instance backend akan menampilkan respons kosong.
Jika menetapkan protokol PROXY untuk traffic pengguna, Anda juga dapat menetapkannya untuk health check. Jika Anda memeriksa konten kondisi dan penayangan di port yang sama, tetapkan --proxy-header
health check agar cocok dengan setelan load balancer.
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
Contoh berikut menunjukkan protokol PROXY:
PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n
Pada contoh sebelumnya, IP klien adalah 192.0.2.1
, IP load balancing adalah 198.51.100.1
, port klien adalah 15221
, dan port tujuannya adalah 110
.
Jika IP klien tidak diketahui, load balancer menghasilkan header protokol PROXY dalam format berikut:
PROXY UNKNOWN\r\n
Mengupdate header protokol PROXY untuk proxy target
Contoh penyiapan load balancer di halaman ini menunjukkan cara mengaktifkan header protokol PROXY saat membuat Load Balancer Jaringan proxy. Gunakan langkah-langkah ini untuk mengubah header protokol PROXY untuk proxy target yang ada.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
- Klik Edit untuk load balancer Anda.
- Klik Frontend configuration.
- Ubah nilai bidang Protokol proxy ke Aktif.
- Klik Update untuk menyimpan perubahan.
gcloud
Dalam perintah berikut, edit kolom --proxy-header
dan tetapkan ke NONE
atau PROXY_V1
, bergantung pada kebutuhan Anda.
gcloud compute target-tcp-proxies update TARGET_PROXY_NAME \ --proxy-header=[NONE | PROXY_V1]
Mengonfigurasi afinitas sesi
Contoh konfigurasi ini akan 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.
Saat 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 eksternal dari aturan penerusan eksternal).
Konsol
Untuk mengaktifkan afinitas sesi IP klien:
Di Konsol Google Cloud, buka halaman Load balancing.
Click Backends.
Klik my-tcp-lb (nama layanan backend yang Anda buat untuk contoh ini), lalu klik Edit.
Di halaman Backend service details, klik Advanced configuration.
Di bagian Afinitas sesi, pilih IP Klien dari menu.
Klik Perbarui.
gcloud
Gunakan perintah gcloud berikut untuk memperbarui layanan backend my-tcp-lb
, dengan menentukan afinitas sesi IP klien:
gcloud compute backend-services update my-tcp-lb \ --global \ --session-affinity=CLIENT_IP
API
Untuk menetapkan afinitas sesi IP klien, buat permintaan PATCH
ke metode backendServices/patch
.
PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-tcp-lb
{
"sessionAffinity": "CLIENT_IP"
}
Aktifkan pengosongan koneksi
Anda dapat mengaktifkan pengosongan koneksi pada layanan backend untuk memastikan gangguan yang minimal bagi pengguna saat instance yang menyalurkan traffic dihentikan, dihapus secara manual, atau dihapus oleh penskalaan otomatis. Untuk mempelajari lebih lanjut pengosongan koneksi, baca dokumentasi Mengaktifkan pengosongan koneksi.
Langkah selanjutnya
- Ringkasan Load Balancer Jaringan proxy eksternal
- Logging dan pemantauan Load Balancer Jaringan Proxy
- Membersihkan penyiapan load balancing