Arsitektur aplikasi
Aplikasi ini mencakup komponen Compute Engine berikut:
- Template instance: Template yang digunakan untuk membuat setiap instance dalam grup instance.
- Grup instance: Beberapa grup instance yang menskalakan otomatis berdasarkan traffic masuk.
- Load balancer: Load balancer HTTP yang mendistribusikan traffic di antara grup instance.
- Instance: Beberapa instance pengujian untuk menghasilkan traffic pengujian dari berbagai bagian dunia.

Menyiapkan layanan web
Membuat grup instance
Konsol
- Buat jaringan untuk grup instance. - Di Google Cloud konsol, buka halaman VPC networks. 
- Klik Create VPC Network. 
- Tetapkan Name ke - fortressnet.
- Tetapkan Subnet creation mode ke Automatic. 
- Klik Create di bagian bawah halaman. 
 
- Buat aturan firewall untuk jaringan tersebut. Aturan ini akan mengizinkan semua permintaan HTTP dikirim ke instance Anda. - Di konsol Google Cloud , buka halaman Firewall rules. 
- Klik Create Firewall Rule. 
- Tetapkan Name ke - fortressnet-allow-http.
- Untuk Network, pilih - fortressnet.
- Untuk Target, pilih - All instances in the network.
- Tetapkan Source IPv4 ranges ke - 0.0.0.0/0.
- Untuk Protocols and ports, pilih Specified protocols and ports, lalu pilih kotak centang tcp dan masukkan - 80.
- Klik Buat. 
 
- Membuat template instance. Sertakan skrip startup yang memulai server web Apache sederhana di setiap instance. - Di konsol Google Cloud , buka halaman Instance templates. 
- Klik Create instance template. 
- Tetapkan Name ke - fort-template.
- Untuk Machine configuration, pilih - e2-micro(2 vCPU, 1 GB memory).
- Di bagian Advanced options, luaskan Networking, lalu lakukan hal berikut: - Di bagian Network interfaces, luaskan antarmuka jaringan untuk mengeditnya.
- Untuk Network, pilih fortressnet.
 
- Di bagian Management, untuk Automation, masukkan Startup script berikut: - apt update && apt -y install apache2 
- Klik Buat. 
 
- Buat beberapa grup instance terkelola regional menggunakan template instance. Konfigurasikan penskalaan otomatis untuk setiap grup instance. - Di konsol Google Cloud , buka halaman Instance groups. 
- Klik Create instance group untuk membuat grup instance terkelola baru. 
- Pilih New managed instance group (stateless). 
- Tetapkan Name ke - us-central1-pool.
- Untuk Instance template, pilih - fort-template.
- Untuk Location, pilih Multiple zones. 
- Untuk Region, pilih - us-central1. Untuk Zones, biarkan nilai yang telah ditetapkan dipilih.
- Untuk Autoscaling mode, pilih On: add and remove instances to the group. 
- Tetapkan Minimum number of instances ke - 1.
- Tetapkan Maximum number of instances ke - 5.
- Untuk Autoscaling signals, edit pilihan default (pemanfaatan CPU) dan tetapkan Signal type ke HTTP load balancing utilization. 
- Tetapkan Target HTTP load balancing utilization ke - 80.
- Klik Done. 
- Klik Buat. Dialog akan menampilkan pesan bahwa Anda juga harus menetapkan grup instance ke layanan backend load balancer HTTP. 
- Pada dialog konfirmasi, klik Confirm. Anda dapat mengonfigurasi load balancer setelah membuat semua grup instance. 
- Ulangi langkah-langkah ini untuk membuat dua grup instance lagi dengan perubahan berikut: - Buat grup dengan Name sebagai europe-west1-pooldan Region sebagaieurope-west1.
- Buat grup dengan Name sebagai asia-east1-pooldan Region sebagaiasia-east1.
 
- Buat grup dengan Name sebagai 
 
- (Opsional) Pastikan instance responsif dan menyalurkan traffic HTTP. Uji alamat IP eksternal dari satu atau beberapa instance. Anda mungkin perlu menunggu sebentar hingga instance menyelesaikan proses startup. - Di konsol Google Cloud , buka halaman VM instances. 
- Pastikan setiap instance yang berjalan memiliki tanda centang hijau di kolom Status di samping nama grup instance Anda. 
- Salin IP Eksternal instance dan tempelkan ke browser web. 
 - Anda akan melihat halaman web 'Apache2 Debian Default Page'. - Jika tampaknya tidak berhasil, coba tunggu beberapa saat. 
gcloud
- Buat jaringan untuk grup instance. - gcloud compute networks create fortressnet --subnet-mode auto 
- Buat aturan firewall untuk jaringan tersebut. Aturan ini akan mengizinkan semua permintaan HTTP dikirim ke instance Anda. - gcloud compute firewall-rules create fortressnet-allow-http \ --network fortressnet \ --allow tcp:80
- Membuat template instance. Sertakan skrip startup yang memulai server web Apache sederhana di setiap instance. - gcloud compute instance-templates create fort-template \ --machine-type e2-micro \ --network fortressnet \ --metadata startup-script='apt update && apt -y install apache2'
- Buat beberapa grup instance terkelola regional menggunakan template instance. Konfigurasikan penskalaan otomatis untuk setiap grup instance. - gcloud compute instance-groups managed create us-central1-pool \ --region us-central1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling us-central1-pool \ --region us-central1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8- gcloud compute instance-groups managed create europe-west1-pool \ --region europe-west1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling europe-west1-pool \ --region europe-west1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8- gcloud compute instance-groups managed create asia-east1-pool \ --region asia-east1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling asia-east1-pool \ --region asia-east1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
- (Opsional) Pastikan instance responsif dan menyalurkan traffic HTTP. Uji alamat IP eksternal dari satu atau beberapa instance. Anda mungkin perlu menunggu sebentar hingga instance menyelesaikan proses startup. - Cantumkan instance Anda, - gcloud compute instances list 
- Verifikasi di kolom - STATUSbahwa instance-nya adalah- RUNNING.
- Periksa instance dengan membuat kueri alamat IP-nya di kolom - EXTERNAL_IP.- curl http://EXTERNAL_IP | head 
 - Anda akan melihat beberapa teks HTML, termasuk baris - <title>Apache2 Debian Default Page: It works</title>.- Jika tampaknya tidak berhasil, coba tunggu beberapa saat. 
Mengonfigurasi load balancer
Load balancer akan mendistribusikan permintaan klien di antara beberapa backend.
Konsol
Pilih jenis load balancer
- Di konsol Google Cloud , buka halaman Load balancing. 
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
- Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
- Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
- Untuk Load balancer generation, pilih Global external Application Load Balancer, lalu klik Next.
- Klik Configure.
Konfigurasi dasar
- Tetapkan Load balancer name sebagai fortressnet-balancer.
Konfigurasi backend
- Di halaman Create global Application Load Balancer, klik Backend configuration.
- Di menu pull-down Create or select backend services & backend buckets, pilih Backend services, lalu Create a backend service. Anda akan melihat kotak dialog Create Backend Service.
- Tetapkan Name layanan backend ke fortressnet-backend-service.
- Di kotak dialog New backend, tetapkan Instance group ke
asia-east1-pool.
- Untuk Balancing mode, pilih Rate.
- Tetapkan Maximum RPS ke PRS 100per instance.
- Klik Done.
- Klik Add backend.
- Di kotak dialog New backend, tetapkan Instance group ke
europe-west1-pool.
- Untuk Balancing mode, pilih Rate.
- Tetapkan Maximum RPS ke PRS 100per instance.
- Klik Done.
- Klik Add backend.
- Di kotak dialog New backend, tetapkan Instance group ke
us-central1-pool.
- Untuk Balancing mode, pilih Rate.
- Tetapkan Maximum RPS ke PRS 100per instance.
- Klik Done.
- Di bagian Health check, pilih Create a health check.
- Tetapkan Name ke http-basic-check.
- Untuk Protocol, pilih HTTP.
- Tetapkan Port ke 80.
- Klik Simpan dan lanjutkan.
- Klik Buat.
Aturan host dan jalur
- Di panel kiri halaman Create global external Application Load Balancer, klik Host
and path rules.
 Untuk contoh ini, kita tidak perlu mengonfigurasi aturan host atau jalur apa pun karena semua traffic akan mengarah ke aturan default. Jadi, kita dapat menerima nilai default yang telah diisi otomatis.
Konfigurasi frontend
- Di panel kiri halaman Create global external Application Load Balancer, klik Frontend configuration.
- Tetapkan Nama ke fortressnet-http-rule.
- Untuk IP version, pilih IPv4.
- Untuk IP address, pilih Create IP address.
- Di kotak dialog Reserve a new static IP, tetapkan Name ke
fortressnet-ip.
- Klik Reserve dan tunggu beberapa saat.
- Klik Done di bagian bawah kotak dialog New Frontend IP and port.
- Klik Add Frontend IP and Port.
- Tetapkan Nama ke fortressnet-http-ipv6-rule.
- Untuk IP version, pilih IPv6.
- Untuk IP address, pilih Create IP address.
- Di kotak dialog, tetapkan Name ke fortressnet-ipv6.
- Klik Reserve dan tunggu beberapa saat.
- Klik Done di bagian bawah kotak dialog New Frontend IP and port.
Tinjau dan selesaikan
- Di panel kiri halaman Create global external Application Load Balancer, klik Review and finalize.
- Bandingkan setelan dengan yang ingin Anda buat.
- Jika setelan sudah benar, klik Create di bagian bawah panel kiri. Anda akan kembali ke layar Load Balancing. Setelah load balancer dibuat, tanda centang hijau di sampingnya menunjukkan bahwa load balancer sedang berjalan.
gcloud
Konfigurasi backend
- Membuat health check dasar. Tindakan ini akan memeriksa apakah backend load balancer merespons permintaan HTTP atau tidak. - gcloud compute health-checks create http http-basic-check 
- Membuat layanan backend global. Layanan backend ini akan menerima traffic HTTP dari load balancer. - gcloud compute backend-services create fortressnet-backend-service \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Tambahkan grup instance sebagai backend regional dari layanan backend. Konfigurasi ini akan mendistribusikan traffic di antara backend berdasarkan jumlah maksimum permintaan per detik (RPS) per instance. - gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group us-central1-pool \ --instance-group-region us-central1 \ --global gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group europe-west1-pool \ --instance-group-region europe-west1 \ --global gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group asia-east1-pool \ --instance-group-region asia-east1 \ --global
Aturan host dan jalur
- Tentukan peta URL. Peta URL mengarahkan URL yang berbeda ke layanan backend yang berbeda. Karena kita hanya memiliki satu layanan backend, kita cukup menyetel layanan backend tersebut sebagai layanan default untuk semua URL. - gcloud compute url-maps create fortressnet-balancer \ --default-service fortressnet-backend-service
- Buat rute proxy HTTP. Rute proxy HTTP menerima permintaan HTTP dan merutekannya sesuai dengan peta URL Anda. Dalam hal ini, metode ini akan mengirim semua permintaan ke layanan backend tunggal Anda. - gcloud compute target-http-proxies create fortressnet-http-proxy \ --url-map fortressnet-balancer
Konfigurasi frontend
- Buat dua alamat IP eksternal statis global: satu untuk IPv4 dan satu untuk IPv6. Ini akan menjadi alamat IP eksternal global dari load balancer. - gcloud compute addresses create fortressnet-ip \ --ip-version IPV4 \ --network-tier=PREMIUM \ --global gcloud compute addresses create fortressnet-ipv6 \ --ip-version IPV6 \ --network-tier=PREMIUM \ --global
- Cari alamat IP eksternal load balancer. - gcloud compute addresses list 
- Buat aturan penerusan global untuk alamat IP eksternal. Tindakan ini akan meneruskan permintaan HTTP IPv4 dan IPv6 ke proxy HTTP Anda. - gcloud compute forwarding-rules create fortressnet-http-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --global \ --target-http-proxy fortressnet-http-proxy \ --ports 80 \ --address LOAD_BALANCER_IP_ADDRESS- gcloud compute forwarding-rules create fortressnet-http-ipv6-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --global \ --target-http-proxy fortressnet-http-proxy \ --ports 80 \ --address LOAD_BALANCER_IPV6_ADDRESS
(Opsional) Pastikan load balancer berfungsi. Mungkin Anda perlu menunggu satu atau tiga menit,
Konsol
- Di konsol Google Cloud , buka halaman Load balancing. 
- Tunggu hingga - fortressnet-balancermemiliki tanda centang hijau di bawah kolom Backends.
- Klik - fortressnet-balancer.
- Di bagian Frontend, salin alamat IPv4 di kolom IP:Port. (Alamat IPv4 dalam bentuk - www.xxx.yyy.zzz. Anda tidak memerlukan nomor port akhir- :nn.) Jika bagian Frontend tidak ada, coba tunggu beberapa saat, lalu muat ulang halaman web.
- Masukkan alamat IP di browser web. 
Anda akan melihat halaman web 'Apache2 Debian Default Page'.
Jika Anda mendapatkan halaman web 'Error 404 (Not Found)', coba tunggu beberapa menit lagi.
gcloud
- Cari alamat IP eksternal load balancer. - gcloud compute addresses list 
- Buat kueri alamat IPv4. (Alamat IPv4 dalam bentuk - www.xxx.yyy.zzz.)- curl http://LOAD_BALANCER_IP_ADDRESS | head 
Anda akan melihat beberapa teks HTML, termasuk baris
<title>Apache2 Debian Default Page: It works</title>.
Jika Anda melihat <title>Error 404 (Not Found)!!1</title>, coba tunggu
beberapa menit lagi.
Praktik Terbaik: Buat firewall aman untuk hanya mengizinkan traffic internal dari load balancer dan health check. Kemudian hapus firewall asli yang mengizinkan semua permintaan HTTP. Hal ini mencegah setiap instance dapat diakses oleh klien luar.
Konsol
- Buat firewall baru yang hanya mengizinkan traffic dari load balancer dan health check. - Di konsol Google Cloud , buka halaman Firewall rules. 
- Klik Create Firewall Rule. 
- Tetapkan Name ke - fortressnet-allow-load-balancer.
- Untuk Network, pilih - fortressnet.
- Untuk Target, pilih - All instances in the network.
- Untuk Source IP ranges, ketik - 130.211.0.0/22dan tekan tombol Enter, lalu ketik- 35.191.0.0/16dan tekan Enter lagi.
- Pada bagian Protocols and ports, pilih tcp, lalu masukkan - 80.
- Klik Buat. 
 
- Hapus firewall allow-everything yang lama. - Pilih tanda centang di samping fortressnet-allow-http.
- Klik Delete di bagian atas halaman.
- Di kotak dialog, klik Delete.
 
- Pilih tanda centang di samping 
gcloud
- Buat firewall baru yang hanya mengizinkan traffic dari load balancer dan health check. - gcloud compute firewall-rules create fortressnet-allow-load-balancer \ --network fortressnet \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --allow tcp:80
- Hapus firewall allow-everything yang lama. - gcloud compute firewall-rules delete fortressnet-allow-http -q 
(Opsional) Pastikan penskalaan otomatis dan load balancing berfungsi
Membuat beberapa traffic pengujian
Misalkan saat itu pagi hari di Eropa dan layanan web Anda tiba-tiba menjadi viral di internet. Buat permintaan klien dalam jumlah besar sekaligus dari Eropa.
Konsol
- Buat instance yang diinstal dengan alat pengujian beban Siege. - Di konsol Google Cloud , buka halaman Create an instance. 
- Tetapkan Name ke - europe-loadtest.
- Untuk Region, pilih - europe-west1.
- Untuk setelan lanjutan, luaskan bagian Advanced options, lalu lakukan hal berikut: - Luaskan bagian Management.
- Di kolom Automation, masukkan skrip startup
berikut:
apt -y install siege 
 
- Untuk membuat VM, klik Create. 
 
- Dapatkan alamat IPv4 load balancer. - Di konsol Google Cloud , buka halaman Load balancing. 
- Klik - fortressnet-balancer.
- Di bagian Frontend, salin alamat IPv4 di kolom IP:Port. (Alamat IPv4 dalam bentuk - www.xxx.yyy.zzz.)
 
- SSH ke instance pengujian beban. - Di konsol Google Cloud , buka halaman VM instances. 
- Tunggu hingga instance - europe-loadtestmemiliki tanda centang hijau di bawah kolom Name.
- Klik SSH di - europe-loadtestpada kolom Connect.
 
- Mulai siege. Targetkan alamat IPv4 load balancer. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
gcloud
- Buat instance yang diinstal dengan alat pengujian beban Siege. - gcloud compute instances create europe-loadtest \ --network default \ --zone europe-west1-c \ --metadata startup-script='apt -y install siege'
- Dapatkan alamat IPv4 load balancer. - gcloud compute addresses list 
- Buka sesi shell baru tempat perintah - gcloudtersedia.- Di sesi shell baru Anda, terapkan SSH ke instance pengujian beban. - gcloud compute ssh --zone europe-west1-c europe-loadtest 
- Mulai siege. Targetkan alamat IPv4 load balancer. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
 
Setelah menjalankan perintah siege, Anda akan melihat output mendeklarasikan
The server is now under siege...
[alert] Zip encoding disabled; siege requires zlib support to enable it ** SIEGE 4.0.2 ** Preparing 150 concurrent users for battle. The server is now under siege...
Memantau load balancing dan penskalaan otomatis
- Di konsol Google Cloud , buka halaman Load balancing. 
- Klik load balancer bernama - fortressnet-balancer.
- Klik tab Monitoring. 
- Di drop-down Backend, pilih - fortressnet-backend-service.
Mungkin perlu waktu hingga sepuluh menit untuk menampilkan data yang cukup. Dalam waktu dekat Anda akan melihat tampilan yang mirip dengan berikut ini:

Apa yang terjadi sini:
- Pengujian beban mulai mengirimkan traffic dalam jumlah besar sekaligus. Pada awalnya, load balancer mendistribusikan permintaan secara merata di antara ketiga backend. Jumlah permintaan dengan cepat melebihi batas penskalaan otomatis, dan bahkan dapat menyebabkan server menampilkan - Backend 5xx errorsyang akan muncul di tampilan pemantauan. Autoscaler mulai menjalankan instance tambahan sesuai kebutuhan.
- Penskalaan otomatis dapat memenuhi kebutuhan kapasitas. Untuk meminimalkan latensi permintaan, load balancer Compute Engine mencoba merutekan permintaan ke backend yang terdekat dengan klien. Dalam hal ini, karena traffic pengujian beban berasal dari Eropa, load balancer akan lebih memilih untuk merutekan lebih banyak permintaan ke backend Eropa. Akibatnya, penskalaan otomatis dapat menjalankan lebih banyak instance di backend Eropa untuk menangani sebagian kecil permintaan yang lebih tinggi. 
Buat traffic pengujian di tempat lain
Misalkan layanan web Anda juga populer di Asia dengan banyaknya pengunjung internet di sore hari. Buat permintaan dalam jumlah tinggi dari Asia.
Konsol
- Untuk membuat instance lain yang diinstal dengan alat pengujian beban Siege, lakukan hal berikut: - Di konsol Google Cloud , buka halaman VM instances. 
- Klik Create instance. 
- Tetapkan Name ke - asia-loadtest.
- Untuk Region, pilih - asia-east1.
- Luaskan bagian Advanced options. 
- Luaskan bagian Management. 
- Di bagian Automation, masukkan skrip startup berikut: - apt -y install siege 
- Klik Buat. 
 
- Untuk mendapatkan alamat IP load balancer, lakukan hal berikut: - Di konsol Google Cloud , buka halaman Load balancing. 
- Klik - fortressnet-balancer.
- Di bagian Frontend, salin alamat IPv4 di kolom IP:Port. (Alamat IPv4 dalam bentuk - www.xxx.yyy.zzz.)
 
- SSH ke instance pengujian beban. - Tunggu hingga instance asia-loadtestmemiliki tanda centang hijau di bawah kolom Name.
- Klik SSH di asia-loadtestpada kolom Connect.
 
- Tunggu hingga instance 
- Mulai siege. Targetkan alamat IPv4 load balancer. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
gcloud
- Dalam sesi shell asli Anda, buat instance lain yang diinstal dengan alat pengujian beban Siege. - gcloud compute instances create asia-loadtest \ --network default \ --zone asia-east1-c \ --metadata startup-script='apt -y install siege'
- Dapatkan alamat IPv4 load balancer. - gcloud compute addresses list 
- Buka sesi shell baru tempat perintah - gcloudtersedia.- Di sesi shell baru Anda, terapkan SSH ke instance pengujian beban. - gcloud compute ssh --zone asia-east1-c asia-loadtest 
- Mulai siege. Targetkan alamat IPv4 load balancer. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
 
Sekali lagi, Anda akan melihat output yang mendeklarasikan The server is now under siege...
[alert] Zip encoding disabled; siege requires zlib support to enable it ** SIEGE 4.0.2 ** Preparing 150 concurrent users for battle. The server is now under siege...
Memantau load balancing dan penskalaan otomatis
Kembali ke tampilan pemantauan load balancing dari terakhir kali. Mungkin diperlukan waktu hingga sepuluh menit untuk menampilkan cukup data baru. Anda akan segera melihat tampilan yang mirip dengan berikut ini:

Apa yang terjadi sini:
- Sekali lagi, pengujian beban mengirim permintaan dalam jumlah besar sekaligus. Pada awalnya, load balancer mendistribusikan permintaan secara merata di antara tiga backend yang ada. Karena jumlah permintaan melebihi batas penskalaan otomatis, autoscaler mulai menjalankan instance tambahan sesuai kebutuhan. 
- Penskalaan otomatis akan memenuhi kebutuhan kapasitas baru. Load balancer masih lebih memilih untuk merutekan permintaan ke backend terdekat yang tersedia. Akibatnya, akhirnya backend Asia menerima permintaan sebagian besar dari Asia, backend Eropa menerima permintaan sebagian besar dari Eropa, dan backend AS menerima permintaan lainnya.