Halaman ini menunjukkan cara men-deploy Load Balancer Aplikasi internal lintas region untuk melakukan load balancing pada traffic ke endpoint jaringan yang ada di infrastruktur lokal atau di cloud publik lain, serta yang dapat dijangkau menggunakan konektivitas hybrid.
Jika Anda belum melakukannya, tinjau ringkasan NEG konektivitas hybrid untuk memahami persyaratan jaringan guna menyiapkan load balancing hybrid.
Ringkasan penyiapan
Contoh ini menyiapkan Load Balancer Aplikasi internal lintas region untuk backend NEG konektivitas zona dan hybrid, seperti yang ditunjukkan dalam gambar berikut:
Anda harus mengonfigurasi konektivitas hybrid sebelum menyiapkan deployment load balancing hybrid. Gunakan Cloud VPN atau Cloud Interconnect (Dedicated atau Partner), bergantung pada pilihan produk konektivitas hybrid Anda.
Menyiapkan resource sertifikat SSL
Buat resource sertifikat SSL Pengelola Sertifikat seperti yang dijelaskan berikut ini:
- Deploy sertifikat global yang dikelola sendiri.
- Buat sertifikat yang dikelola Google yang diterbitkan oleh instance Certificate Authority Service Anda.
- Buat sertifikat yang dikelola Google dengan otorisasi DNS.
Sebaiknya gunakan sertifikat yang dikelola Google.
Izin
Untuk menyiapkan load balancing hybrid, Anda harus memiliki izin berikut:
Di Google Cloud
- Izin untuk membuat konektivitas hybrid antara Google Cloud dan lingkungan lokal Anda atau lingkungan cloud lainnya. Untuk daftar izin yang diperlukan, lihat dokumentasi produk Konektivitas Jaringan yang relevan.
- Izin untuk membuat NEG konektivitas hybrid dan load balancer.
Peran Admin Load Balancer Compute
(
roles/compute.loadBalancerAdmin
) berisi izin yang diperlukan untuk melakukan tugas-tugas yang dijelaskan dalam panduan ini.
Di lingkungan lokal Anda atau lingkungan cloud non-Google Cloud lainnya
- Izin untuk mengonfigurasi endpoint jaringan yang memungkinkan layanan di lingkungan lokal Anda atau lingkungan cloud lainnya dapat dijangkau dari Google Cloud menggunakan kombinasi
IP:Port
. Untuk mengetahui informasi selengkapnya, hubungi administrator jaringan lingkungan Anda. - Izin untuk membuat aturan firewall di lingkungan lokal Anda atau lingkungan cloud lainnya agar pemeriksaan health check Google dapat mencapai endpoint.
- Izin untuk mengonfigurasi endpoint jaringan yang memungkinkan layanan di lingkungan lokal Anda atau lingkungan cloud lainnya dapat dijangkau dari Google Cloud menggunakan kombinasi
Selain itu, untuk menyelesaikan petunjuk di halaman ini, Anda perlu membuat NEG konektivitas hybrid, load balancer, dan NEG zona (serta endpoint-nya) untuk berfungsi sebagai backend berbasis Google Cloud untuk load balancer.
Anda harus merupakan Pemilik atau Editor project, atau Anda harus memiliki peran IAM Compute Engine berikut.
Tugas | Peran yang diperlukan |
---|---|
Membuat jaringan, subnet, dan komponen load balancer | Admin Jaringan Compute (roles/compute.networkAdmin ) |
Menambahkan dan menghapus aturan firewall | Admin Keamanan Compute
(roles/compute.securityAdmin ) |
Membuat instance | Admin Instance Compute
(roles/compute.instanceAdmin ) |
Membangun konektivitas hybrid
Lingkungan Google Cloud dan lingkungan lokal Anda atau lingkungan cloud lainnya harus terhubung melalui konektivitas hybrid menggunakan lampiran VLAN Cloud Interconnect atau tunnel Cloud VPN dengan Cloud Router. Sebaiknya gunakan koneksi ketersediaan tinggi.
Cloud Router yang diaktifkan dengan perutean dinamis global mempelajari endpoint tertentu melalui Border Gateway Protocol (BGP) dan memprogramnya ke jaringan VPC Google Cloud Anda. Perutean dinamis regional tidak didukung. Rute statis juga tidak didukung.
Jaringan VPC yang digunakan untuk mengonfigurasi Cloud Interconnect atau Cloud VPN adalah jaringan yang sama dengan yang Anda gunakan untuk mengonfigurasi deployment load balancing hybrid. Pastikan rentang CIDR subnet jaringan VPC Anda tidak bertentangan dengan rentang CIDR jarak jauh Anda. Ketika alamat IP tumpang-tindih, rute subnet akan diprioritaskan daripada konektivitas jarak jauh.
Untuk mengetahui petunjuknya, lihat dokumentasi berikut:
Menyiapkan lingkungan Anda yang berada di luar Google Cloud
Lakukan langkah-langkah berikut untuk menyiapkan lingkungan lokal atau lingkungan cloud lainnya untuk load balancing hybrid:
- Konfigurasi endpoint jaringan untuk mengekspos layanan lokal ke Google Cloud (
IP:Port
). - Konfigurasikan aturan firewall di lingkungan lokal Anda atau lingkungan cloud lainnya.
- Konfigurasi Cloud Router untuk memberitahukan rute tertentu yang diperlukan ke lingkungan pribadi Anda.
Menyiapkan endpoint jaringan
Setelah menyiapkan konektivitas hybrid, Anda akan mengonfigurasi satu atau beberapa endpoint jaringan dalam lingkungan lokal Anda atau lingkungan cloud lain yang dapat dijangkau melalui Cloud Interconnect atau Cloud VPN menggunakan kombinasi IP:port
. Kombinasi IP:port
ini dikonfigurasi sebagai satu atau beberapa endpoint untuk NEG konektivitas hybrid yang dibuat di Google Cloud nanti dalam proses ini.
Jika ada beberapa jalur ke endpoint IP, perutean akan mengikuti perilaku yang dijelaskan dalam ringkasan Cloud Router.
Menyiapkan aturan firewall
Aturan firewall berikut harus dibuat di lingkungan lokal Anda atau lingkungan cloud lainnya:
- Buat aturan firewall izinkan masuk di lingkungan lokal atau lingkungan cloud lainnya untuk mengizinkan traffic dari subnet khusus proxy di region tersebut untuk mencapai endpoint.
Mengizinkan rentang pemeriksaan health check Google tidak diperlukan untuk NEG campuran. Namun, jika menggunakan kombinasi NEG campuran dan zona dalam satu layanan backend, Anda harus mengizinkan rentang pemeriksaan health check Google untuk NEG zona.
Iklankan rute
Konfigurasikan Cloud Router untuk mengiklankan rentang IP kustom berikut ke lingkungan lokal atau lingkungan cloud lainnya:
- Rentang subnet khusus proxy region.
Menyiapkan lingkungan Google Cloud
Untuk langkah berikut, pastikan Anda menggunakan jaringan VPC yang sama (disebut NETWORK
dalam prosedur ini) yang digunakan untuk mengonfigurasi konektivitas hybrid antar-lingkungan.
Selain itu, pastikan region yang digunakan (disebut REGION_A
dan REGION_B
dalam prosedur ini) sama dengan yang digunakan untuk membuat tunnel Cloud VPN atau lampiran VLAN Cloud Interconnect.
GEO
untuk merutekan traffic klien ke VIP load balancer di region yang terdekat dengan klien selama pemadaman layanan regional.
Mengonfigurasi subnet backend
Gunakan subnet ini untuk membuat backend NEG zona load balancer:
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Buka jaringan yang digunakan untuk mengonfigurasi konektivitas hybrid antar-lingkungan.
Di bagian Subnet:
- Setel Subnet creation mode ke Custom.
- Di bagian Subnet baru, masukkan informasi berikut:
- Berikan Name untuk subnet.
- Pilih Wilayah: REGION_A
- Masukkan rentang alamat IP.
- Klik Done.
Klik Create.
Untuk menambahkan lebih banyak subnet di region yang berbeda, klik Tambahkan subnet dan ulangi langkah sebelumnya untuk REGION_B
gcloud
Buat subnet di jaringan yang digunakan untuk mengonfigurasi konektivitas hybrid antar-lingkungan.
gcloud compute networks subnets create SUBNET_A \ --network=NETWORK \ --range=LB_SUBNET_RANGE1 \ --region=REGION_A
gcloud compute networks subnets create SUBNET_B \ --network=NETWORK \ --range=LB_SUBNET_RANGE2 \ --region=REGION_B
API
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/NETWORK", "ipCidrRange": "LB_SUBNET_RANGE1", "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": "LB_SUBNET_RANGE2", "region": "projects/PROJECT_ID/regions/REGION_B", }
Ganti kode berikut:
SUBNET_A
danSUBNET_B
: nama subnetLB_SUBNET_RANGE1
danLB_SUBNET_RANGE2
: rentang alamat IP untuk subnetREGION_A
danREGION_B
: region tempat Anda mengonfigurasi load balancer
Mengonfigurasi subnet khusus proxy
Subnet khusus proxy memberikan sekumpulan alamat IP yang digunakan Google untuk menjalankan proxy Envoy atas nama Anda. Proxy tersebut 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 pada jaringan VPC. Hanya boleh ada satu subnet khusus proxy yang aktif untuk tujuan tertentu, per region, 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.
- Pada tab Subnets, klik Add subnet.
- Berikan Nama untuk subnet khusus proxy.
- Dalam daftar Region, pilih REGION_A.
- Dalam daftar Destination, pilih Cross-region Managed Proxy.
- Di kolom Rentang alamat IP, masukkan
10.129.0.0/23
. - Klik Tambahkan.
Buat subnet khusus proxy di REGION_B
- Klik Tambahkan subnet.
- Berikan Nama untuk subnet khusus proxy.
- Dalam daftar Region, pilih REGION_B.
- Dalam daftar Destination, pilih Cross-region Managed Proxy.
- Di kolom Rentang alamat IP, 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=PROXY_ONLY_SUBNET_RANGE1
gcloud compute networks subnets create PROXY_SN_B \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION_B \ --network=NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE2
Ganti kode berikut:
PROXY_SN_A
danPROXY_SN_B
: nama subnet khusus proxyPROXY_ONLY_SUBNET_RANGE1
danPROXY_ONLY_SUBNET_RANGE2
: rentang alamat IP untuk subnet khusus proxyREGION_A
danREGION_B
: region tempat Anda mengonfigurasi load balancer
API
Buat subnet khusus proxy dengan
metode subnetworks.insert
, yang menggantikan
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": "PROXY_ONLY_SUBNET_RANGE1", "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": "PROXY_ONLY_SUBNET_RANGE2", "network": "projects/PROJECT_ID/global/networks/NETWORK", "region": "projects/PROJECT_ID/regions/REGION_B", "purpose": "GLOBAL_MANAGED_PROXY", "role": "ACTIVE" }
Membuat aturan firewall
Dalam contoh ini, Anda membuat aturan firewall berikut untuk backend NEG zona di Google Cloud:
fw-allow-health-check
: Aturan masuk, yang berlaku untuk instance yang di-load balanced, yang mengizinkan traffic dari sistem health check Google Cloud (130.211.0.0/22
dan35.191.0.0/16
). Contoh ini menggunakan tag targetallow-health-check
untuk mengidentifikasi NEG zona yang harus diterapkan.fw-allow-ssh
: Aturan masuk yang mengizinkan konektivitas SSH yang masuk di TCP port 22 dari alamat mana pun. Anda dapat memilih rentang IP sumber yang lebih ketat untuk aturan ini. Misalnya, Anda dapat menentukan hanya rentang IP sistem tempat Anda akan memulai sesi SSH. Contoh ini menggunakan tag targetallow-ssh
untuk mengidentifikasi instance mesin virtual (VM) yang harus diterapkan.fw-allow-proxy-only-subnet
: Aturan ingress yang memungkinkan koneksi dari subnet khusus proxy untuk menjangkau backend NEG zona.
Konsol
Di Konsol Google Cloud, buka halaman Firewall policies.
Klik Create firewall rule untuk membuat aturan guna mengizinkan traffic dari pemeriksaan health check:
- Masukkan Nama
fw-allow-health-check
. - Untuk Network, pilih NETWORK.
- Untuk Targets, pilih Specified target tags.
- Isi kolom Tag target dengan
allow-health-check
. - Tetapkan Filter sumber ke rentang IPv4.
- Setel Rentang IPv4 sumber ke
130.211.0.0/22
dan35.191.0.0/16
. - Untuk Protocols and ports, pilih Specified protocols and ports.
- Pilih TCP, lalu masukkan
80
untuk nomor port. - Klik Create.
- Masukkan Nama
Klik Create firewall rule lagi untuk membuat aturan guna mengizinkan koneksi SSH yang masuk:
- Name:
fw-allow-ssh
- Jaringan: NETWORK
- Prioritas:
1000
- Arah traffic: masuk
- Tindakan terhadap kecocokan: izinkan
- Targets: Tag target yang ditentukan
- Tag target:
allow-ssh
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
0.0.0.0/0
- Protocols and ports: Pilih Specified protocols and ports.
- Pilih TCP, lalu masukkan
22
untuk nomor port. - Klik Create.
- Name:
Klik Create firewall rule lagi untuk membuat aturan guna mengizinkan koneksi masuk dari subnet khusus proxy:
- Name:
fw-allow-proxy-only-subnet
- Jaringan: NETWORK
- Prioritas:
1000
- Arah traffic: masuk
- Tindakan terhadap kecocokan: izinkan
- Targets: Tag target yang ditentukan
- Tag target:
allow-proxy-only-subnet
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber: PROXY_ONLY_SUBNET_RANGE1 dan PROXY_ONLY_SUBNET_RANGE2
- Protocols and ports: Pilih Specified protocols and ports
- Pilih TCP, lalu masukkan
80
untuk nomor port. - Klik Create.
- Name:
gcloud
Buat aturan
fw-allow-health-check-and-proxy
untuk memungkinkan health check Google Cloud mencapai instance backend pada port TCP80
:gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80
Buat aturan firewall
fw-allow-ssh
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-allow-ssh \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Buat aturan firewall izinkan masuk untuk subnet khusus proxy agar load balancer dapat berkomunikasi dengan instance backend pada port TCP
80
:gcloud compute firewall-rules create fw-allow-proxy-only-subnet \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-proxy-only-subnet \ --source-ranges=PROXY_ONLY_SUBNET_RANGE1,PROXY_ONLY_SUBNET_RANGE2 \ --rules=tcp:80
Menyiapkan NEG zona
Untuk backend berbasis Google Cloud, sebaiknya konfigurasikan beberapa NEG zona di region yang sama tempat Anda mengonfigurasi konektivitas hybrid.
Untuk contoh ini, siapkan NEG zona (dengan endpoint jenis GCE_VM_IP_PORT
) di region REGION_A
. Pertama, buat VM di zona ZONE_A
. Kemudian, buat NEG zona di zona ZONE_A
, lalu tambahkan endpoint jaringan VM ke NEG.
Untuk mendukung ketersediaan tinggi, siapkan NEG zona serupa di region REGION_B
. Jika backend di satu region mengalami gangguan, traffic akan beralih ke region lain.
Membuat VM
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Ulangi langkah 3 hingga 8 untuk setiap VM, dengan menggunakan kombinasi nama dan zona berikut.
- Nama: dari
vm-a1
- Zona: ZONE_A di region REGION_A
- Subnet: SUBNET_A
- Nama: dari
vm-b1
- Zona: ZONE_B di region REGION_B
- Subnet: SUBNET_B
- Nama: dari
Klik Create instance.
Tetapkan nama seperti yang ditunjukkan pada langkah sebelumnya.
Untuk Region, pilih seperti yang ditunjukkan pada langkah sebelumnya.
Untuk Zone, pilih seperti yang ditunjukkan pada langkah sebelumnya.
Di bagian Boot disk, pastikan sistem operasi Debian dan versi 10 (buster) dipilih untuk opsi boot disk. Klik Choose untuk mengubah gambar jika perlu.
Di bagian Advanced options, luaskan Networking, lalu lakukan hal berikut:
- Tambahkan Tag jaringan berikut:
allow-ssh
,allow-health-check
, danallow-proxy-only-subnet
. - Di bagian Network interfaces, klik Add a network interface,
buat perubahan berikut, lalu klik Done:
- Jaringan: NETWORK
- Subnetwork: seperti yang ditunjukkan pada langkah sebelumnya.
- IP internal utama: Ephemeral (otomatis)
- IP Eksternal: Efemeral
Luaskan Pengelolaan. Di kolom Automation, salin dan tempel konten skrip berikut. Konten skrip identik untuk semua VM:
#! /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 Tag jaringan berikut:
Klik Create.
gcloud
Buat VM dengan menjalankan perintah berikut, menggunakan kombinasi ini untuk nama VM dan zonanya. Konten skrip serupa untuk kedua VM.
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \ --subnet=LB_SUBNET_NAME \ --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'
VM_NAME
darivm-a1
- Zona
GCP_NEG_ZONE
sebagaiZONE_A
di regionREGION_A
- Subnet
LB_SUBNET_NAME
sebagaiSUBNET_A
- Zona
VM_NAME
darivm-b1
- Zona
GCP_NEG_ZONE
sebagaiZONE_B
di regionREGION_B
- Subnet
LB_SUBNET_NAME
sebagaiSUBNET_B
- Zona
Membuat NEG zona
Konsol
Untuk membuat grup endpoint jaringan zona:
Di konsol Google Cloud, buka halaman Network Endpoint Groups.
Ulangi langkah 3 hingga 8 untuk setiap NEG zona, menggunakan kombinasi nama dan zona berikut:
- Nama:
neg-1
- Zona: ZONE_A di region REGION_A
- Subnet: SUBNET_A
- Nama:
neg-2
- Zona: ZONE_B di region REGION_B
- Subnet: SUBNET_B
- Nama:
Klik Create network endpoint group.
Tetapkan nama seperti yang ditunjukkan pada langkah sebelumnya.
Pilih Network endpoint group type: Network endpoint group (Zonal).
Pilih Jaringan: NETWORK
Pilih Subnetwork seperti yang ditunjukkan pada langkah sebelumnya.
Pilih Zone seperti yang ditunjukkan pada langkah sebelumnya.
Masukkan Port default:
80
.Klik Create.
Tambahkan endpoint ke NEG zona:
Di konsol Google Cloud, buka halaman Network Endpoint Groups.
Klik Nama grup endpoint jaringan yang dibuat pada langkah sebelumnya. Anda akan melihat halaman Detail grup endpoint jaringan.
Di bagian Network endpoint in this group, klik Add network endpoint. Anda akan melihat halaman Add network endpoint.
Pilih instance VM untuk menambahkan alamat IP internalnya sebagai endpoint jaringan. Di bagian Network interface, nama, zona, dan subnet VM ditampilkan.
Masukkan Alamat IP endpoint jaringan baru.
Pilih Port type.
- Jika Anda memilih Default, endpoint akan menggunakan port default
80
untuk semua endpoint dalam grup endpoint jaringan. Ini sudah memadai untuk contoh kita karena server Apache menayangkan permintaan pada port80
. - Jika Anda memilih Custom, masukkan Nomor port untuk endpoint yang akan digunakan.
- Jika Anda memilih Default, endpoint akan menggunakan port default
Untuk menambahkan endpoint lainnya, klik Tambahkan endpoint jaringan dan ulangi langkah sebelumnya.
Setelah Anda menambahkan semua endpoint, klik Buat.
gcloud
Buat NEG zona (dengan endpoint
GCE_VM_IP_PORT
) menggunakan kombinasi nama, zona, dan subnet. Gunakan perintahgcloud compute network-endpoint-groups create
.gcloud compute network-endpoint-groups create GCP_NEG_NAME \ --network-endpoint-type=GCE_VM_IP_PORT \ --zone=GCP_NEG_ZONE \ --network=NETWORK \ --subnet=LB_SUBNET_NAME
- Nama:
neg-1
- Zona
GCP_NEG_ZONE
:ZONE_A
di regionREGION_A
- Subnet
LB_SUBNET_NAME
:SUBNET_A
- Zona
- Nama:
neg-2
- Zona
GCP_NEG_ZONE
:ZONE_B
di regionREGION_B
- Subnet
LB_SUBNET_NAME
:SUBNET_B
- Zona
Anda dapat menentukan port menggunakan opsi
--default-port
saat membuat NEG, atau menentukan nomor port untuk setiap endpoint seperti yang ditunjukkan pada langkah berikutnya.- Nama:
Tambahkan endpoint ke
neg1
danneg2
.gcloud compute network-endpoint-groups update neg1 \ --zone=ZONE_A \ --add-endpoint='instance=vm-a1,port=80'
gcloud compute network-endpoint-groups update neg2 \ --zone=ZONE_B \ --add-endpoint='instance=vm-b1,port=80'
Menyiapkan NEG konektivitas hybrid
Saat membuat NEG, gunakan zona yang meminimalkan jarak geografis antara Google Cloud dan lingkungan lokal Anda atau lingkungan cloud lainnya. Misalnya, jika menghosting layanan di lingkungan lokal di Frankfurt, Jerman, Anda dapat menentukan zona europe-west3-a
Google Cloud saat membuat NEG.
Dan, jika Anda menggunakan Cloud Interconnect, zona yang digunakan untuk membuat NEG berada di region yang sama dengan tempat lampiran Cloud Interconnect dikonfigurasi.
NEG campuran hanya mendukung pemeriksaan kondisi Envoy terdistribusi.
Konsol
Untuk membuat grup endpoint jaringan konektivitas hybrid:
Di konsol Google Cloud, buka halaman Network Endpoint Groups.
Klik Create network endpoint group.
Ulangi langkah 4 hingga 9 untuk setiap NEG hibrida, menggunakan kombinasi nama dan zona berikut.
- Nama ON_PREM_NEG_NAME:
hybrid-1
- Zona: ON_PREM_NEG_ZONE1
- Subnet: SUBNET_A
- Nama ON_PREM_NEG_NAME:
hybrid-2
- Zona: ON_PREM_NEG_ZONE2
- Subnet: SUBNET_B
- Nama ON_PREM_NEG_NAME:
Tetapkan nama seperti yang ditunjukkan pada langkah sebelumnya.
Pilih Network endpoint group type: Hybrid connection network endpoint group (Zonal).
Pilih Jaringan: NETWORK
Untuk Subnet, pilih seperti yang ditunjukkan pada langkah sebelumnya.
Untuk Zone, pilih seperti yang ditunjukkan pada langkah sebelumnya.
Masukkan Port default.
Klik Buat
Tambahkan endpoint ke NEG konektivitas campuran:
Di konsol Google Cloud, buka halaman Network Endpoint Groups.
Klik Nama grup endpoint jaringan yang dibuat pada langkah sebelumnya. Anda akan melihat halaman Detail grup endpoint jaringan.
Di bagian Network endpoint in this group, klik Add network endpoint. Anda akan melihat halaman Add network endpoint.
Masukkan Alamat IP endpoint jaringan baru.
Pilih Port type.
- Jika Anda memilih Default, endpoint akan menggunakan port default untuk semua endpoint dalam grup endpoint jaringan.
- Jika memilih Custom, Anda dapat memasukkan Nomor port yang berbeda untuk digunakan oleh endpoint.
Untuk menambahkan endpoint lainnya, klik Tambahkan endpoint jaringan dan ulangi langkah sebelumnya.
Setelah menambahkan semua endpoint non-Google Cloud, klik Create.
gcloud
Buat NEG konektivitas campuran yang menggunakan kombinasi nama berikut. Gunakan perintah
gcloud compute network-endpoint-groups create
.gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ON_PREM_NEG_ZONE \ --network=NETWORK
- Nama
ON_PREM_NEG_NAME
:hybrid-1
- Zona
ON_PREM_NEG_ZONE
:ON_PREM_NEG_ZONE1
- Zona
- Nama
ON_PREM_NEG_NAME
:hybrid-2
- Zona
GCP_NEG_ZONE
:ON_PREM_NEG_ZONE2
- Zona
- Nama
Tambahkan endpoint VM backend lokal ke
ON_PREM_NEG_NAME
:gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \ --zone=ON_PREM_NEG_ZONE \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1" \ --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
Anda dapat menggunakan perintah ini untuk menambahkan endpoint jaringan yang sebelumnya Anda konfigurasi secara lokal atau di lingkungan cloud Anda.
Ulangi --add-endpoint
sebanyak yang diperlukan.
Mengonfigurasi load balancer
Konsol
gcloud
Tentukan health check HTTP dengan perintah
gcloud compute health-checks create http
.gcloud compute health-checks create http gil7-basic-check \ --use-serving-port \ --global
Buat layanan backend dan aktifkan logging dengan perintah
gcloud compute backend-services create
.gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --enable-logging \ --logging-sample-rate=1.0 \ --health-checks=gil7-basic-check \ --global-health-checks \ --global
Tambahkan backend ke layanan backend dengan perintah
gcloud compute backend-services add-backend
.gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=neg1 \ --network-endpoint-group-zone=ZONE_A \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=ZONE_B
Untuk mengetahui detail tentang cara mengonfigurasi mode balancing, baca dokumentasi gcloud CLI untuk melihat flag
--max-rate-per-endpoint
.Tambahkan NEG hybrid sebagai backend ke layanan backend.
gcloud compute backend-services add-backend BACKEND_SERVICE \ --global \ --balancing-mode=RATE \ --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \ --network-endpoint-group=hybrid1 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE1 \ --network-endpoint-group=hybrid2 \ --network-endpoint-group-zone=ON_PREM_NEG_ZONE2 \
Untuk mengetahui detail cara mengonfigurasi mode balancing, lihat dokumentasi gcloud CLI untuk parameter
--max-rate-per-endpoint
.Buat peta URL dengan perintah
gcloud compute url-maps create
.gcloud compute url-maps create gil7-map \ --default-service=BACKEND_SERVICE \ --global
Buat proxy target.
Untuk HTTP:
Buat proxy target dengan perintah
gcloud compute target-http-proxies create
.gcloud compute target-http-proxies create gil7-http-proxy \ --url-map=gil7-map \ --global
Untuk HTTPS:
Untuk membuat sertifikat yang dikelola Google, lihat dokumentasi berikut:
- Buat sertifikat yang dikelola Google yang diterbitkan oleh instance Certificate Authority Service Anda.
- Buat sertifikat yang dikelola Google dengan otorisasi DNS.
Setelah Anda membuat sertifikat yang dikelola Google, lampirkan sertifikat ke proxy target. Peta sertifikat tidak didukung oleh Load Balancer Aplikasi internal lintas region.
Untuk membuat sertifikat yang dikelola sendiri, lihat dokumentasi berikut:
Tetapkan jalur file Anda ke nama variabel.
export LB_CERT=PATH_TO_PEM_FORMATTED_FILE
export LB_PRIVATE_KEY=PATH_TO_PEM_LB_PRIVATE_FILE
Buat sertifikat SSL semua region menggunakan perintah
gcloud certificate-manager certificates create
.gcloud certificate-manager certificates create gilb-certificate \ --private-key-file=$LB_CERT \ --certificate-file=$LB_PRIVATE_KEY \ --scope=all-regions
Gunakan sertifikat SSL untuk membuat proxy target dengan perintah
gcloud compute target-https-proxies create
gcloud compute target-https-proxies create gil7-https-proxy \ --url-map=gil7-map \ --certificate-manager-certificates=gilb-certificate \ --global
Buat dua aturan penerusan, satu dengan
IP_ADDRESS1
VIP di regionREGION_A
dan satu lagi denganIP_ADDRESS2
VIP di regionREGION_B
. Untuk alamat IP aturan penerusan, gunakan rentang alamat IPLB_SUBNET_RANGE1
atauLB_SUBNET_RANGE2
. Jika Anda mencoba menggunakan subnet khusus proxy, pembuatan aturan penerusan akan gagal.Untuk jaringan kustom, Anda harus mereferensikan subnet dalam aturan penerusan. Perhatikan bahwa ini adalah subnet VM, bukan subnet proxy.
Untuk HTTP:
Gunakan perintah
gcloud compute forwarding-rules create
dengan tanda yang benar.gcloud compute forwarding-rules create FWRULE_A \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=80 \ --target-http-proxy=gil7-http-proxy \ --global
gcloud compute forwarding-rules create FWRULE_B \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=80 \ --target-http-proxy=gil7-http-proxy \ --global
Untuk HTTPS:
Buat aturan penerusan dengan perintah
gcloud compute forwarding-rules create
dengan flag yang benar.gcloud compute forwarding-rules create FWRULE_A \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_A \ --subnet-region=REGION_A \ --address=IP_ADDRESS1 \ --ports=443 \ --target-https-proxy=gil7-https-proxy \ --global
gcloud compute forwarding-rules create FWRULE_B \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK \ --subnet=SUBNET_B \ --subnet-region=REGION_B \ --address=IP_ADDRESS2 \ --ports=443 \ --target-https-proxy=gil7-https-proxy \ --global
Menghubungkan domain ke load balancer
Setelah Anda membuat load balancer, catat alamat IP yang terkait dengan load balancer, misalnya, IP_ADDRESS1
dan IP_ADDRESS2
.
Untuk mengarahkan domain ke load balancer, buat data A
menggunakan Cloud DNS atau layanan pendaftaran domain. Jika menambahkan beberapa domain ke sertifikat SSL, Anda harus menambahkan data A
untuk setiap domain, yang semuanya mengarah ke alamat IP load balancer.
Menguji load balancer
Buat instance VM untuk menguji konektivitas
Buat VM klien:
gcloud compute instances create l7-ilb-client-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --network=NETWORK \ --subnet=SUBNET_A \ --zone=ZONE_A \ --tags=allow-ssh
gcloud compute instances create l7-ilb-client-b \ --image-family=debian-10 \ --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 l7-ilb-client-a \ --zone=ZONE_A
gcloud compute ssh l7-ilb-client-b \ --zone=ZONE_B
Pastikan alamat IP menampilkan nama host.
Pastikan bahwa VM klien dapat menjangkau kedua alamat IP. Perintah akan berhasil dan menampilkan nama VM backend yang menyalurkan permintaan:
curl IP_ADDRESS1
curl IP_ADDRESS2
Untuk pengujian HTTPS, ganti
curl
dengan:curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS1:443
curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443
Flag
-k
menyebabkan curl melewati validasi sertifikat.Opsional: Gunakan data DNS yang telah dikonfigurasi untuk me-resolve alamat IP yang terdekat dengan VM klien. Misalnya, DNS_ENTRY dapat berupa
service.example.com
.curl DNS_ENTRY
Menjalankan 100 permintaan
Jalankan 100 permintaan curl dan konfirmasi dari respons bahwa bebannya seimbang.
Untuk HTTP:
Pastikan bahwa VM klien dapat menjangkau kedua alamat IP. Perintah akan berhasil dan menampilkan nama VM backend yang menayangkan permintaan:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS1)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl --silent IP_ADDRESS2)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Untuk HTTPS:
Pastikan bahwa VM klien dapat menjangkau kedua alamat IP. Perintah akan berhasil dan menampilkan nama VM backend yang menayangkan permintaan:
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS1:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS1: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " echo "***" echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c echo }
Menguji failover
Verifikasi failover ke backend di region
REGION_A
saat backend diREGION_B
tidak responsif atau tidak dapat dijangkau. Kami menyimulasikan hal ini dengan menghapus semua backend dariREGION_B
:gcloud compute backend-services remove-backend BACKEND_SERVICE \ --balancing-mode=RATE \ --network-endpoint-group=neg2 \ --network-endpoint-group-zone=ZONE_B
Gunakan SSH untuk terhubung ke VM klien di
REGION_B
.gcloud compute ssh l7-ilb-client-b \ --zone=ZONE_B
Kirim permintaan ke alamat IP yang di-load balanced di region
REGION_B
. Outputnya mirip dengan hal berikut ini:{ RESULTS= for i in {1..100} do RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS2:443)" done echo "***" echo "*** Results of load-balancing to IP_ADDRESS2: " 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.
Mengonfigurasi kebijakan perutean DNS
Jika klien Anda berada di beberapa region, Anda dapat membuat Load Balancer Aplikasi internal lintas region dapat diakses menggunakan VIP di region ini. Penyiapan multi-region ini meminimalkan latensi dan biaya transit jaringan. Selain itu, Anda juga dapat menyiapkan solusi load balancing global berbasis DNS yang memberikan ketahanan terhadap pemadaman layanan regional. Untuk informasi selengkapnya, lihat Mengelola kebijakan perutean dan health check DNS.
gcloud
Untuk membuat entri DNS dengan TTL 30 detik, gunakan perintah gcloud dns record-sets create
.
gcloud dns record-sets create DNS_ENTRY --ttl="30" \ --type="A" --zone="service-zone" \ --routing-policy-type="GEO" \ --routing-policy-data="REGION_A=gil7-forwarding-rule-a@global;REGION_B=gil7-forwarding-rule-b@global" \ --enable-health-checking
Ganti kode berikut:
DNS_ENTRY
: DNS atau nama domain kumpulan dataContoh,
service.example.com
REGION_A
danREGION_B
: region tempat Anda mengonfigurasi load balancer
API
Buat data DNS dengan membuat permintaan POST
ke metode ResourceRecordSets.create
.
Ganti PROJECT_ID dengan project ID Anda.
POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/SERVICE_ZONE/rrsets { "name": "DNS_ENTRY", "type": "A", "ttl": 30, "routingPolicy": { "geo": { "items": [ { "location": "REGION_A", "healthCheckedTargets": { "internalLoadBalancers": [ { "loadBalancerType": "globalL7ilb", "ipAddress": "gil7-forwarding-rule-a", "port": "80", "ipProtocol": "tcp", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "project": "PROJECT_ID" } ] } }, { "location": "REGION_B", "healthCheckedTargets": { "internalLoadBalancers": [ { "loadBalancerType": "globalL7ilb", "ipAddress": "gil7-forwarding-rule-b", "port": "80", "ipProtocol": "tcp", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "project": "PROJECT_ID" } ] } } ] } } }
Aktifkan deteksi pencilan
Anda dapat mengaktifkan deteksi pencilan pada layanan backend global untuk mengidentifikasi NEG serverless yang tidak responsif dan mengurangi jumlah permintaan yang dikirim ke NEG serverless yang tidak responsif.
Deteksi pencilan diaktifkan di layanan backend dengan menggunakan salah satu metode berikut:
- Metode
consecutiveErrors
(outlierDetection.consecutiveErrors
), saat kode status HTTP seri5xx
memenuhi syarat sebagai error. - Metode
consecutiveGatewayFailure
(outlierDetection.consecutiveGatewayFailure
), yang hanya menggunakan kode status HTTP502
,503
, dan504
yang memenuhi syarat sebagai error.
Gunakan langkah-langkah berikut untuk mengaktifkan deteksi pencilan untuk layanan backend
yang sudah ada. Perlu diperhatikan bahwa meskipun setelah mengaktifkan deteksi pencilan, beberapa permintaan dapat dikirim ke layanan yang tidak responsif dan menampilkan kode status 5xx
ke klien. Untuk mengurangi tingkat error lebih lanjut, Anda dapat mengonfigurasi nilai yang lebih agresif untuk parameter deteksi pencilan. Untuk mengetahui informasi selengkapnya, lihat
kolom outlierDetection
.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik nama load balancer yang layanan backend-nya ingin Anda edit.
Di halaman Load balancer details, klik
Edit.Di halaman Edit cross-region internal Application Load Balancer, klik Backend configuration.
Di halaman Backend configuration, klik
Edit untuk layanan backend yang ingin diubah.Scroll ke bawah, lalu luaskan bagian Advanced configurations.
Di bagian Deteksi luar, centang kotak Aktifkan.
Klik
Edit untuk mengonfigurasi deteksi pencilan.Pastikan opsi berikut dikonfigurasi dengan nilai ini:
Properti Nilai Error berkelanjutan 5 Interval 1.000 Waktu ejeksi dasar 30000 Persentase ejeksi maks. 50 Menimbulkan error berturut-turut 100 Dalam contoh ini, analisis deteksi pencilan berjalan setiap satu detik. Jika jumlah kode status
5xx
HTTP berturut-turut yang diterima oleh proxy Envoy adalah lima atau lebih, endpoint backend akan dikeluarkan dari kumpulan load balancing proxy Envoy tersebut selama 30 detik. Jika persentase yang berlaku ditetapkan ke 100%, layanan backend akan menerapkan penghapusan endpoint yang tidak responsif dari kumpulan load balancing proxy Envoy spesifik tersebut setiap kali analisis deteksi pencilan berjalan. Jika kondisi pengecualian terpenuhi, hingga 50% endpoint backend dari kumpulan load balancing dapat dikeluarkan.Klik Save.
Untuk mengupdate layanan backend, klik Update.
Untuk mengupdate load balancer, di halaman Edit cross-region internal Application Load Balancer, klik Update.
gcloud
Mengekspor layanan backend ke file YAML.
gcloud compute backend-services export BACKEND_SERVICE_NAME \ --destination=BACKEND_SERVICE_NAME.yaml --global
Ganti
BACKEND_SERVICE_NAME
dengan nama layanan backend.Edit konfigurasi YAML dari layanan backend guna menambahkan kolom untuk deteksi pencilan seperti yang ditandai dalam konfigurasi YAML berikut.
Dalam contoh ini, analisis deteksi pencilan berjalan setiap satu detik. Jika jumlah kode status
5xx
HTTP berturut-turut yang diterima oleh proxy Envoy adalah lima atau lebih, endpoint backend akan dikeluarkan dari kumpulan load balancing proxy Envoy tersebut selama 30 detik. Jika persentase yang berlaku ditetapkan ke 100%, layanan backend akan menerapkan penghapusan endpoint yang tidak responsif dari kumpulan load balancing proxy Envoy spesifik tersebut setiap kali analisis deteksi pencilan berjalan. Jika kondisi pengecualian terpenuhi, hingga 50% endpoint backend dari kumpulan load balancing dapat dikeluarkan.name: BACKEND_SERVICE_NAME backends: - balancingMode: UTILIZATION capacityScaler: 1.0 group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_A/networkEndpointGroups/SERVERLESS_NEG_NAME - balancingMode: UTILIZATION capacityScaler: 1.0 group: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_B/networkEndpointGroups/SERVERLESS_NEG_NAME_2 outlierDetection: baseEjectionTime: nanos: 0 seconds: 30 consecutiveErrors: 5 enforcingConsecutiveErrors: 100 interval: nanos: 0 seconds: 1 maxEjectionPercent: 50 port: 80 selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 ...
Ganti kode berikut:
BACKEND_SERVICE_NAME
: nama layanan backendPROJECT_ID
: ID project AndaREGION_A
danREGION_B
: region tempat load balancer dikonfigurasi.SERVERLESS_NEG_NAME
: nama NEG serverless pertamaSERVERLESS_NEG_NAME_2
: nama NEG serverless kedua
Update layanan backend dengan mengimpor konfigurasi terbaru.
gcloud compute backend-services import BACKEND_SERVICE_NAME \ --source=BACKEND_SERVICE_NAME.yaml --global
Deteksi pencilan kini diaktifkan di layanan backend.
Langkah selanjutnya
- Ringkasan Load Balancer Aplikasi Internal.
- Subnet khusus proxy untuk load balancer berbasis Envoy.
- Kelola sertifikat.
- Bersihkan penyiapan load balancing.