Tentang codelab ini
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 dokumen tentang load balancing cloud terlebih dahulu ( https://cloud.google.com/load-balancing/docs/load-balancing-overview)
Gambar 1. Alur kerja memilih endpoint tujuan dengan load balancer aplikasi eksternal global.
Topologi Codelab dan kasus penggunaan
Gambar 2. Topologi Pemilihan Rute Load Balancer HTTP
Selama codelab 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 simulasi beban dan memverifikasi bahwa konfigurasi yang Anda tetapkan berfungsi dengan semestinya.
Yang akan Anda pelajari
- Cara mengonfigurasi ServiceLbPolicy untuk menyesuaikan load balancer.
Yang Anda butuhkan
- Pengetahuan tentang Load Balancing HTTPS Eksternal. Paruh pertama codelab ini cukup mirip dengan Codelab LB HTTPs Eksternal dengan Pengelolaan Traffic Lanjutan (Envoy) ( https://codelabs.developers.google.com/codelabs/externalhttplb-adv). Sebaiknya baca artikel tersebut 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
Mengaktifkan 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
Membuat jaringan VPC
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, sekarang 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 menyertakan 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 memiliki cakupan Zona atau Regional. 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. Silakan pelajari skrip ini.
Membuat 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 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
Membuat Grup Instance
Sekarang kita harus membuat grup instance terkelola dari template instance yang telah 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
Memverifikasi Fungsi Server Web
Setiap instance dikonfigurasi untuk menjalankan server web Apache dengan skrip PHP sederhana yang merender sesuatu seperti di bawah ini:
Halaman disajikan dari: us-east1-a-mig-ww2h
Untuk memastikan server web Anda berfungsi dengan benar, buka Compute Engine -> Instance VM. 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 memastikan server web berjalan (proses ini mungkin memerlukan waktu satu menit untuk dimulai). Di halaman VM instances pada bagian Compute Engine, pilih instance yang dibuat oleh grup instance Anda, lalu klik External (public) IP-nya.
Atau, di browser, buka http://<IP_Address>
5. Menyiapkan Load Balancer
Membuat Health Check
Pertama, kita harus membuat health check dasar untuk memastikan bahwa layanan kita aktif dan berjalan dengan sukses. Kita akan membuat health check dasar, ada banyak penyesuaian lanjutan 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 harus mencadangkan alamat IP statis yang tersedia secara global yang nantinya akan ditambahkan 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
Membuat Layanan Backend
Sekarang kita harus membuat layanan backend untuk grup instance terkelola yang telah 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, sekarang kita harus menambahkan Grup Instance Terkelola yang dibuat 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 memastikan 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
Membuat 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 HTTP Frontend
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. Memverifikasi bahwa 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 menggunakan SSH ke VM yang Anda buat. Setelah dibuat, klik SSH untuk meluncurkan terminal dan terhubung.
Setelah terhubung, jalankan perintah berikut untuk membuat 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.
Stop the Siege
Setelah Anda menunjukkan bahwa pemisahan traffic lanjutan berfungsi, sekarang saatnya menghentikan pengepungan. Untuk melakukannya, kembali ke terminal SSH siege-vm dan tekan CTRL+C untuk menghentikan siege yang sedang berjalan.
7. Mengonfigurasi Kebijakan LB 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 pengosongan kapasitas otomatis. Tetapi 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 kami 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 Kesehatan Backend
Pada tahap ini, kebijakan lb layanan baru telah diterapkan ke layanan backend Anda. Jadi, secara teknis Anda dapat langsung melakukan pembersihan. Namun sebagai bagian dari codelab, kita juga akan melakukan beberapa penyesuaian produksi tambahan untuk menunjukkan cara kerja kebijakan baru ini kepada Anda.
Fitur pengosongan kapasitas otomatis akan otomatis menghapus MIG backend dari load balancer saat jumlah total backend yang sehat turun di bawah batas tertentu (25%). Untuk menguji fitur ini, kita akan menggunakan SSH untuk terhubung ke VM di us-east1-b-mig dan membuatnya tidak sehat. Dengan nilai minimum 25%, Anda harus melakukan SSH ke empat VM dan menonaktifkan server Apache.
Untuk melakukannya, pilih empat VM dan SSH ke VM tersebut dengan mengklik SSH untuk meluncurkan terminal dan terhubung. Lalu jalankan perintah berikut.
sudo apachectl stop
Pada tahap ini, fitur pengurasan kapasitas otomatis akan dipicu dan us-east1-b-mig tidak akan mendapatkan permintaan baru.
9. Memastikan bahwa Fitur Pengosongan Kapasitas Otomatis Berfungsi
Memulai Ulang Siege
Untuk memverifikasi fitur baru, kita akan menggunakan kembali VM pengepungan. Mari kita gunakan SSH ke VM yang Anda buat di langkah sebelumnya. Setelah dibuat, klik SSH untuk meluncurkan terminal dan terhubung.
Setelah terhubung, jalankan perintah berikut untuk membuat 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.
Stop the Siege
Setelah Anda menunjukkan bahwa pemisahan traffic lanjutan berhasil, saatnya untuk menghentikan pengepungan. Untuk melakukannya, kembali ke terminal SSH siege-vm dan tekan CTRL+C untuk menghentikan siege yang sedang berjalan.
10. Langkah-langkah pembersihan
Setelah selesai dengan lingkungan lab, sekarang saatnya untuk 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.
- Konfigurasikan layanan backend Anda dengan fitur pengosongan kapasitas otomatis.
Langkah berikutnya
- Coba fitur lain yang disediakan oleh kebijakan lb layanan.