1. Pengantar
Selamat datang di codelab pengoptimalan load balancing lanjutan.
Dalam codelab ini, Anda akan mempelajari cara mengonfigurasi opsi load balancing lanjutan untuk load balancer aplikasi eksternal global. Sebelum memulai, sebaiknya baca terlebih dahulu dokumen tentang load balancing cloud ( https://cloud.google.com/load-balancing/docs/load-balancing-overview)

Gambar 1. Alur kerja memilih endpoint tujuan dengan Load Balancer Aplikasi eksternal global.
Topologi dan kasus penggunaan codelab

Gambar 2. Topologi Perutean Load Balancer HTTP
Selama lab kode ini, Anda akan menyiapkan dua grup instance terkelola. Anda akan membuat load balancer https eksternal global. Load balancer akan menggunakan beberapa fitur dari daftar kemampuan lanjutan yang didukung oleh load balancer berbasis envoy. Setelah di-deploy, Anda akan membuat beberapa beban simulasi dan memverifikasi bahwa konfigurasi yang Anda tetapkan berfungsi dengan tepat.
Yang akan Anda pelajari
- Cara mengonfigurasi ServiceLbPolicy untuk menyesuaikan load balancer.
Yang Anda butuhkan
- Pengetahuan tentang Load Balancing HTTPS Eksternal. Setengah bagian pertama codelab ini cukup mirip dengan Codelab Load Balancer HTTPs Eksternal dengan Pengelolaan Traffic Lanjutan (Envoy) ( https://codelabs.developers.google.com/codelabs/externalhttplb-adv). Sebaiknya pelajari terlebih dahulu.
2. Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Aktifkan API
Aktifkan semua layanan yang diperlukan
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com gcloud services enable networkservices.googleapis.com
3. Membuat jaringan VPC
Create a VPC network
Dari Cloud Shell
gcloud compute networks create httplbs --subnet-mode=auto
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs]. NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 httplbs AUTO REGIONAL
Membuat aturan firewall VPC
Setelah membuat VPC, Anda akan membuat aturan firewall. Aturan firewall akan digunakan untuk mengizinkan semua IP mengakses IP eksternal situs aplikasi pengujian di port 80 untuk traffic http.
Dari Cloud Shell
gcloud compute firewall-rules create httplb-allow-http-rule \ --allow tcp:80 \ --network httplbs \ --source-ranges 0.0.0.0/0 \ --priority 700
Output
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED httplb-allow-http-rule httplbs INGRESS 700 tcp:80 False
Dalam codelab ini, kita akan menyesuaikan kondisi VM. Jadi, kita juga akan membuat aturan firewall untuk mengizinkan SSH.
Dari Cloud Shell
gcloud compute firewall-rules create fw-allow-ssh \
--network=httplbs \
--action=allow \
--direction=ingress \
--target-tags=allow-ssh \
--rules=tcp:22
Output
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/fw-allow-ssh]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED fw-allow-ssh httplbs INGRESS 1000 tcp:22 False
4. Menyiapkan Grup Instance Terkelola
Anda perlu menyiapkan Grup Instance Terkelola yang mencakup pola untuk resource backend yang digunakan oleh Load Balancer HTTP. Pertama, kita akan membuat Template Instance yang menentukan konfigurasi untuk VM yang akan dibuat untuk setiap region. Selanjutnya, untuk backend di setiap region, kita akan membuat Grup Instance Terkelola yang mereferensikan Template Instance.
Grup Instance Terkelola dapat bersifat Zonal atau Regional dalam cakupannya. Untuk latihan lab ini, kita akan membuat Grup Instance Terkelola zonal.
Di bagian ini, Anda dapat melihat skrip startup yang telah dibuat sebelumnya yang akan dirujuk saat pembuatan instance. Skrip startup ini menginstal dan mengaktifkan kemampuan server web yang akan kita gunakan untuk menyimulasikan aplikasi web. Anda dapat mempelajari skrip ini.
Buat Template Instance
Langkah pertama adalah membuat template instance.
Dari Cloud Shell
gcloud compute instance-templates create test-template \
--network=httplbs \
--tags=allow-ssh,http-server \
--image-family=debian-9 \
--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'
Output
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP test-template n1-standard-1 2021-11-09T09:24:35.275-08:00
Sekarang Anda dapat memverifikasi bahwa template instance telah berhasil dibuat dengan perintah gcloud berikut:
Dari Cloud Shell
gcloud compute instance-templates list
Output
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP test-template n1-standard-1 2021-11-09T09:24:35.275-08:00
Buat Grup Instance
Sekarang kita harus membuat grup instance terkelola dari template instance yang kita buat sebelumnya.
Dari Cloud Shell
gcloud compute instance-groups managed create us-east1-a-mig \ --size=1 \ --template=test-template \ --zone=us-east1-a
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-a/instanceGroupManagers/us-east1-a-mig]. NAME LOCATION SCOPE BASE_INSTANCE_NAME SIZE TARGET_SIZE INSTANCE_TEMPLATE AUTOSCALED us-east1-a-mig us-east1-a zone us-east1-a-mig 0 1 test-template no
Dari Cloud Shell
gcloud compute instance-groups managed create us-east1-b-mig \ --size=5 \ --template=test-template \ --zone=us-east1-b
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-b-mig]. NAME LOCATION SCOPE BASE_INSTANCE_NAME SIZE TARGET_SIZE INSTANCE_TEMPLATE AUTOSCALED us-east1-b-mig us-east1-b zone us-east1-b-mig 0 5 test-template no
Kita dapat memverifikasi bahwa grup instance berhasil dibuat dengan perintah gcloud berikut:
Dari Cloud Shell
gcloud compute instance-groups list
Output
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES us-east1-a-mig us-east1-a zone httplbs Yes 1 us-east1-b-mig us-east1-b zone httplbs Yes 5
Verifikasi Fungsi Server Web
Setiap instance dikonfigurasi untuk menjalankan server web Apache dengan skrip PHP sederhana yang merender sesuatu seperti di bawah:
Halaman ditayangkan dari: us-east1-a-mig-ww2h
Untuk memastikan server web Anda berfungsi dengan benar, buka Compute Engine -> VM instances. Pastikan instance baru Anda (misalnya, us-east1-a-mig-xxx) telah dibuat sesuai dengan definisi grup instance-nya.
Sekarang, buat permintaan web di browser Anda untuk memastikannya server web berjalan (mungkin perlu waktu satu menit untuk memulai). Di halaman instance VM di bagian Compute Engine, pilih instance yang dibuat oleh grup instance Anda, lalu klik IP Eksternal (publik) instance tersebut.
Atau, di browser Anda, buka http://<IP_Address>
5. Menyiapkan Load Balancer
Buat Health Check
Pertama, kita harus membuat health check dasar untuk memastikan layanan kita berjalan dengan lancar dan berhasil. Kita akan membuat health check dasar, dan ada banyak penyesuaian lanjutan lainnya yang tersedia.
Dari Cloud Shell
gcloud compute health-checks create http http-basic-check \
--port 80
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/healthChecks/http-basic-check]. NAME PROTOCOL http-basic-check HTTP
Mencadangkan Alamat IP Eksternal
Untuk langkah ini, Anda perlu mencadangkan alamat IP statis yang tersedia secara global yang nantinya akan dilampirkan ke Load Balancer.
Dari Cloud Shell
gcloud compute addresses create lb-ipv4-2 \
--ip-version=IPV4 \
--global
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/lb-ipv4-2].
Pastikan untuk mencatat Alamat IP yang dicadangkan.
gcloud compute addresses describe lb-ipv4-2 \
--format="get(address)" \
--global
Buat Layanan Backend
Sekarang kita harus membuat layanan backend untuk grup instance terkelola yang kita buat sebelumnya.
Dari Cloud Shell
gcloud compute backend-services create east-backend-service \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTP \
--port-name=http \
--health-checks=http-basic-check \
--global
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/east-backend-service]. NAME BACKENDS PROTOCOL east-backend-service HTTP
Menambahkan MIG ke Layanan Backend
Setelah membuat layanan backend, kita harus menambahkan Grup Instance Terkelola yang kita buat sebelumnya ke setiap layanan backend.
Dari Cloud Shell
gcloud compute backend-services add-backend east-backend-service --instance-group us-east1-a-mig --instance-group-zone us-east1-a --global
Dari Cloud Shell
gcloud compute backend-services add-backend east-backend-service --instance-group us-east1-b-mig --instance-group-zone us-east1-b --global
Anda dapat memverifikasi bahwa backend telah ditambahkan dengan menjalankan perintah berikut.
Dari Cloud Shell
gcloud compute backend-services list
Output
NAME BACKENDS PROTOCOL east-backend-service us-east1-a/instanceGroups/us-east1-a-mig,us-east1-b/instanceGroups/us-east1-b-mig HTTP
Buat Peta URL
Sekarang kita akan membuat peta URL.
gcloud compute url-maps create web-map-http \
--default-service=east-backend-service \
--global
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http]. NAME DEFAULT_SERVICE web-map-http backendServices/east-backend-service
Membuat Frontend HTTP
Langkah terakhir dalam membuat load balancer adalah membuat frontend. Tindakan ini akan memetakan alamat IP yang Anda pesan sebelumnya ke peta URL load balancer yang Anda buat.
Dari Cloud Shell
gcloud compute target-http-proxies create http-lb-proxy-adv \
--url-map=web-map-http
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpProxies/http-lb-proxy-adv]. NAME URL_MAP http-lb-proxy-adv web-map-http
Selanjutnya, Anda perlu membuat aturan penerusan global yang akan memetakan alamat IP yang dicadangkan sebelumnya ke proxy HTTP.
Dari Cloud Shell
gcloud compute forwarding-rules create http-content-rule \
--load-balancing-scheme EXTERNAL_MANAGED \
--address=lb-ipv4-2 \
--global \
--target-http-proxy=http-lb-proxy-adv \
--ports=80
Pada tahap ini, Anda dapat mengonfirmasi bahwa load balancer berfungsi dengan alamat IP yang Anda catat sebelumnya.
6. Memastikan Load Balancer Berfungsi
Untuk memverifikasi bahwa fitur load balancing berfungsi, Anda perlu membuat beberapa beban. Untuk melakukannya, kita akan membuat VM baru untuk menyimulasikan beban.
Membuat Siege-vm
Sekarang Anda akan membuat siege-vm yang akan digunakan untuk menghasilkan beban
Dari Cloud Shell
gcloud compute instances create siege-vm \
--network=httplbs \
--zone=us-east1-a \
--machine-type=e2-medium \
--tags=allow-ssh,http-server \
--metadata=startup-script='sudo apt-get -y install siege'
Output
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-a/instances/siege-vm]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS siege-vm us-central1-ir1 e2-medium 10.132.0.15 34.143.20.68 RUNNING
Selanjutnya, Anda dapat melakukan SSH ke VM yang Anda buat. Setelah dibuat, klik SSH untuk meluncurkan terminal dan terhubung.
Setelah terhubung, jalankan perintah berikut untuk menghasilkan beban. Gunakan alamat IP yang Anda cadangkan sebelumnya untuk load balancer http eksternal.
Dari Cloud Shell
siege -c 20 http://$lb-ipv4-2
Output
New configuration template added to /home/cloudcurriculumdeveloper/.siege Run siege -C to view the current settings in that file
Memeriksa Distribusi Beban
Setelah Siege berjalan, saatnya memeriksa apakah traffic didistribusikan secara merata ke dua grup instance terkelola.
Hentikan Pengepungan
Setelah Anda menunjukkan bahwa pemisahan traffic lanjutan berfungsi, saatnya menghentikan serangan. Untuk melakukannya, kembali ke terminal SSH siege-vm dan tekan CTRL+C untuk menghentikan siege yang sedang berjalan.
7. Mengonfigurasi Kebijakan Load Balancer Layanan
Membuat Kebijakan LB Layanan
Setelah setelan dasar selesai, kita akan membuat Kebijakan Lb Layanan dan mencoba fitur lanjutan. Sebagai contoh, kita akan mengonfigurasi layanan untuk menggunakan beberapa setelan load balancing lanjutan. Dalam contoh ini, kita hanya akan membuat kebijakan untuk menggunakan fitur pengurasan kapasitas otomatis. Namun, jangan ragu untuk mencoba fitur lainnya.
Dari Cloud Shell
gcloud beta network-services service-lb-policies create http-policy \
--auto-capacity-drain --location=global
Kita dapat memverifikasi bahwa kebijakan berhasil dibuat dengan perintah gcloud berikut:
Dari Cloud Shell
gcloud beta network-services service-lb-policies list --location=global
Output
NAME http-policy
Melampirkan Kebijakan LB Layanan ke layanan backend
Sekarang kita akan melampirkan kebijakan baru ke layanan backend yang ada di atas.
Dari Cloud Shell
gcloud beta compute backend-services update east-backend-service \
--service-lb-policy=http-policy --global
8. Menyesuaikan Kualitas Backend
Pada tahap ini, kebijakan lb layanan baru telah diterapkan ke layanan backend Anda. Jadi, secara teknis Anda dapat langsung beralih ke pembersihan. Namun, sebagai bagian dari codelab, kita juga akan melakukan beberapa penyesuaian produksi tambahan untuk menunjukkan cara kerja kebijakan baru.
Fitur pengurasan kapasitas otomatis akan otomatis menghapus MIG backend dari load balancer saat jumlah total backend yang sehat turun di bawah beberapa nilai minimum (25%). Untuk menguji fitur ini, kita akan menjalankan SSH ke VM di us-east1-b-mig dan membuatnya tidak sehat. Dengan nilai minimum 25%, Anda harus menggunakan SSH untuk mengakses empat VM dan mematikan server Apache.
Untuk melakukannya, pilih empat VM dan SSH ke VM tersebut dengan mengklik SSH untuk meluncurkan terminal dan terhubung. Kemudian, jalankan perintah berikut.
sudo apachectl stop
Pada tahap ini, fitur pengurasan kapasitas otomatis akan dipicu dan us-east1-b-mig tidak akan menerima permintaan baru.
9. Memverifikasi bahwa Fitur Pengurasan Kapasitas Otomatis Berfungsi
Mulai ulang Siege
Untuk memverifikasi fitur baru, kita akan menggunakan kembali VM siege. Mari kita SSH ke VM yang Anda buat pada langkah sebelumnya. Setelah dibuat, klik SSH untuk meluncurkan terminal dan terhubung.
Setelah terhubung, jalankan perintah berikut untuk menghasilkan beban. Gunakan alamat IP yang Anda cadangkan sebelumnya untuk load balancer http eksternal.
Dari Cloud Shell
siege -c 20 http://$lb-ipv4-2
Output
New configuration template added to /home/cloudcurriculumdeveloper/.siege Run siege -C to view the current settings in that file
Pada tahap ini, Anda akan melihat bahwa semua permintaan dikirim ke us-east1-a-mig.
Hentikan Pengepungan
Setelah Anda menunjukkan bahwa pemisahan traffic lanjutan berfungsi, saatnya menghentikan serangan. Untuk melakukannya, kembali ke terminal SSH siege-vm dan tekan CTRL+C untuk menghentikan siege yang sedang berjalan.
10. Langkah-langkah pembersihan
Setelah selesai menggunakan lingkungan lab, sekarang saatnya menghapusnya. Jalankan perintah berikut untuk menghapus lingkungan pengujian.
Dari Cloud Shell
gcloud compute instances delete siege-vm --zone=us-east1-a gcloud compute forwarding-rules delete http-content-rule --global gcloud compute target-http-proxies delete http-lb-proxy-adv gcloud compute url-maps delete web-map-http gcloud compute backend-services delete east-backend-service --global gcloud compute addresses delete lb-ipv4-2 --global gcloud compute health-checks delete http-basic-check gcloud beta network-services service-lb-policies delete http-policy --location=global gcloud compute instance-groups managed delete us-east1-a-mig --zone=us-east1-a gcloud compute instance-groups managed delete us-east1-b-mig --zone=us-east1-b gcloud compute instance-templates delete test-template gcloud compute firewall-rules delete httplb-allow-http-rule gcloud compute firewall-rules delete fw-allow-ssh gcloud compute networks delete httplbs
11. Selamat!
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Membuat load balancer aplikasi eksternal dengan kebijakan lb layanan.
- Konfigurasi layanan backend Anda dengan fitur pengurasan kapasitas otomatis.
Langkah berikutnya
- Coba fitur lain yang disediakan oleh kebijakan penyeimbangan beban layanan.