Tutorial ini menjelaskan cara menggunakan Load Balancer Aplikasi eksternal untuk mendistribusikan traffic ke server web Microsoft Internet Information Services (IIS) yang berjalan di VM Compute Engine yang disediakan di region yang berbeda.
Tujuan
Tutorial ini menunjukkan cara melakukan load balancing traffic untuk situs www.example.com
dan memastikan bahwa:
- Permintaan masuk dirutekan ke region terdekat.
- Jika sebuah instance gagal atau mencapai kapasitasnya, load balancer akan merutekan permintaan ke instance lain yang responsif di region yang sama atau berbeda.
Konfigurasi untuk skenario ini menggunakan Load Balancer Aplikasi eksternal yang mengambil permintaan melalui satu alamat IP global. Alamat IP ini dapat merutekan setiap permintaan masuk berdasarkan jenis koneksi—yaitu, HTTP atau HTTPS. Untuk permintaan HTTPS, load balancer menerapkan enkripsi SSL/TLS antara klien yang mengirim permintaan dan load balancer.
Diagram berikut menunjukkan arsitektur load balancer:
Perhatikan bahwa load balancer mencakup beberapa komponen untuk konfigurasi maksimum. Untuk deskripsi tentang fungsi setiap komponen, lihat Ringkasan Load Balancer Aplikasi Eksternal.
Tutorial ini menunjukkan cara menyelesaikan tugas berikut untuk mencapai tujuan Anda:
- Menyiapkan backend instance.
- Membuat dan mengonfigurasi layanan load balancing.
- Mengirim traffic ke backend.
- Membatasi akses ke backend.
- Menyimulasikan pemadaman layanan.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine virtual machine (VM) instances
- Compute Engine persistent disks
- Optional: Google-managed SSL certificate
- Windows Server 2016 machine images
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Instal klien Remote Desktop Protocol (RDP). Untuk informasi selengkapnya, lihat Klien Microsoft Remote Desktop. Jika klien RDP sudah terinstal, Anda dapat melewati tugas ini.
- Tentukan zona dan region tempat Anda ingin menyediakan resource. Diagram arsitektur menunjukkan resource yang di-deploy di berbagai zona di Amerika Serikat dan Uni Eropa. Deployment ini hanya sebagai referensi. Anda dapat men-deploy resource di region/zona mana pun yang Anda inginkan.
- Opsional: Baca dan pahami Ringkasan Load Balancer Aplikasi Eksternal.
Menyiapkan backend instance
Di bagian ini, Anda akan membuat dua layanan backend di region berbeda. Setiap layanan backend berisi dua backend instance, yang masing-masing menjalankan server web Microsoft IIS di Windows Server 2016. Untuk menghindari konfigurasi manual yang rumit dari setiap server, buat disk image dari satu instance server, lalu gunakan image ini untuk membuat instance server satunya.
Membuat dan mengonfigurasi instance Compute Engine
Untuk membuat instance yang akan digunakan sebagai image sumber:
Dari Google Cloud Marketplace, luncurkan instance Windows Server 2016 yang menjalankan Microsoft IIS di Compute Engine di zona pilihan Anda, lalu siapkan aturan firewall untuk mengizinkan traffic HTTP, HTTPS, dan RDP eksternal ke instance image sumber Anda:
Di Konsol Google Cloud, buka halaman Cloud Marketplace ASP.NET Framework.
Klik Launch.
Di kolom Deployment name, masukkan src-img.
Di kolom Zone, pilih zona tempat Anda ingin men-deploy image.
Di kolom Windows Server OS Version, pilih 2016.
Di bagian Networking - Firewall, hanya pilih opsi berikut:
- Allow HTTP traffic
- Allow HTTPS traffic
- Allow RDP traffic
Setujui persyaratan layanan, lalu klik Deploy.
Tunggu hingga instance Compute Engine dibuat.
Mengonfigurasi instance image sumber
Untuk mengonfigurasi instance image sumber baru, buat pengguna Windows baru pada instance image sumber, lalu buat koneksi RDP:
Di Konsol Google Cloud, buka halaman VM instances.
Klik nama instance image sumber (
src-img
).Klik Set Windows password.
Pada dialog Set new Windows password, tambahkan nama pengguna Anda, lalu klik Set untuk membuat akun pengguna di instance Anda.
Salin sandi yang diberikan dan tutup dialog.
Klik menu dropdown RDP, lalu pilih opsi Download the RDP file guna mendownload file RDP untuk instance Anda. Gunakan file ini untuk terhubung ke instance menggunakan klien RDP. Untuk informasi selengkapnya, lihat Klien Microsoft Remote Desktop.
Setelah Anda membuat koneksi RDP dengan instance image sumber, tambahkan halaman beranda default di direktori web default IIS:
Di instance image sumber, buka PowerShell sebagai administrator.
Buat halaman beranda baru di direktori web IIS default
C:\inetpub\wwwroot
:Echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' > C:\inetpub\wwwroot\index.html
Memverifikasi bahwa instance image sumber dapat menayangkan konten
Di Konsol Google Cloud, buka halaman VM instances.
Klik alamat IP eksternal instance untuk memverifikasi bahwa halaman beranda yang Anda buat sebelumnya ditayangkan.
Membuat image Windows Server 2016 yang dapat digunakan kembali dari instance image sumber
Setelah memverifikasi bahwa instance image sumber telah dikonfigurasi dengan benar dan dapat menayangkan konten, buat disk image yang dapat digunakan kembali dari persistent disk root instance:
- Di instance image sumber, buka PowerShell sebagai administrator.
Jalankan perintah berikut untuk menyiapkan proses cloning sistem Anda:
GCESysprep
Setelah operasi
GCESysprep
selesai, koneksi Anda akan otomatis terputus dari sesi RDP.Di mesin lokal, jalankan perintah berikut untuk menghapus instance sumber dengan tetap mempertahankan persistent disk root-nya:
gcloud compute instances delete src-img \ --keep-disks=boot \ --zone=INSTANCE_ZONE
Ganti
INSTANCE_ZONE
dengan zona instance sumber Anda.Setelah instance dihapus, buat image baru dari persistent disk root yang Anda pertahankan:
gcloud compute images create win-be-img \ --source-disk=src-img \ --source-disk-zone=IMAGE_ZONE
Ganti
IMAGE_ZONE
dengan zona tempat Anda ingin membuat image sumber.
Membuat template instance menggunakan image sumber
Gunakan disk image dari server Windows yang telah Anda konfigurasi sebagai image sumber untuk template instance. Nanti, Anda akan mengonfigurasi dua grup instance terkelola agar dapat menggunakan template ini untuk instance baru.
Di komputer lokal, jalankan perintah berikut untuk membuat template instance yang menggunakan win-be-img
sebagai image sumber serta rdp-tag
dan www-tag
sebagai tag instance:
gcloud compute instance-templates create win-be-tmpl \ --tags=rdp-tag,www-tag \ --image=win-be-img
Membuat grup instance terkelola untuk setiap region
Di setiap region, buat grup instance terkelola. Setelah Anda membuat setiap grup instance, grup tersebut akan otomatis diisi dengan dua instance yang identik berdasarkan template instance yang Anda tentukan sebelumnya. Nanti, Anda akan mengonfigurasi load balancer untuk memperlakukan grup instance ini sebagai target backend.
Untuk membuat grup instance terkelola:
Di komputer lokal, jalankan perintah berikut untuk membuat grup instance terkelola baru di zona tempat Anda membuat image dan otomatis mengisinya dengan dua instance identik:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_1 \ --base-instance-name=BASE_INSTANCE_NAME_1 \ --size=2 \ --zone=ZONE_1 \ --template=win-be-tmpl
Ganti kode berikut:
MANAGED_INSTANCE_GROUP_NAME_1
: nama instance terkelolaBASE_INSTANCE_NAME_1
: nama instance dasarZONE_1
: zona tempat Anda ingin men-deploy instance terkelola
Buat grup instance terkelola di zona kedua:
gcloud compute instance-groups managed create MANAGED_INSTANCE_GROUP_NAME_2 \ --base-instance-name=BASE_INSTANCE_NAME_2 \ --size=2 \ --zone=ZONE_2 \ --template=win-be-tmpl
Ganti kode berikut:
MANAGED_INSTANCE_GROUP_NAME_2
: nama instance terkelolaBASE_INSTANCE_NAME_2
: nama instance dasarZONE_2
: zona tempat Anda ingin men-deploy instance terkelola
Memastikan backend instance berjalan
Di Konsol Google Cloud, buka halaman VM instances.
Klik alamat IP eksternal setiap backend untuk memverifikasi bahwa backend menayangkan halaman beranda yang Anda buat sebelumnya.
Membuat dan mengonfigurasi layanan load balancing
Layanan load balancing Compute Engine mencakup beberapa komponen. Di bagian ini, Anda akan membuat komponen tersebut dan menghubungkannya bersama-sama.
Di komputer lokal, jalankan perintah berikut untuk membuat health check baru. Load balancer menggunakan health check ini untuk memeriksa responsivitas backend instance:
gcloud compute http-health-checks create basic-check
Buat layanan backend:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --protocol=HTTP \ --http-health-checks=basic-check \ --global
Ganti
BACKEND_SERVICE_NAME
dengan nama untuk layanan backend.Tambahkan grup instance Anda sebagai target backend untuk layanan backend Anda:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_1 \ --instance-group-zone=ZONE_1 gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=MANAGED_INSTANCE_GROUP_NAME_2 \ --instance-group-zone=ZONE_2
Buat peta URL default yang mengarahkan semua permintaan masuk ke semua instance Anda:
gcloud compute url-maps create lb-map \ --default-service=BACKEND_SERVICE_NAME
Buat resource sertifikat SSL. Load balancer menggunakan resource ini untuk mengenkripsi dan mendekripsi traffic.
Jika sudah memiliki kunci pribadi dan sertifikat SSL dari certificate authority, Anda dapat menggunakannya untuk membuat resource
SSLCertificate
baru dengan menjalankan perintah berikut. Jika belum, Anda dapat membuat dan menggunakan sertifikat SSL yang dikelola Google atau sertifikat yang ditandatangani sendiri untuk pengujian. Untuk informasi selengkapnya, lihat Sertifikat SSL.Jalankan perintah berikut untuk membuat resource sertifikat SSL:
gcloud compute ssl-certificates create www-cert \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Ganti kode berikut:
CRT_FILE_PATH
: jalur file lokal sertifikatKEY_FILE_PATH
: jalur file kunci pribadi
Buat proxy HTTP dan HTTPS target untuk merutekan permintaan ke peta URL. Proxy ini merupakan bagian dari load balancer yang menampung sertifikat SSL untuk load balancing HTTPS, sehingga Anda juga memuat sertifikat pada langkah ini:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=lb-map gcloud compute target-https-proxies create https-lb-proxy \ --url-map lb-map \ --ssl-certificate SSL_CERT
Ganti SSL_CERT berdasarkan pertimbangan berikut:
- Jika Anda telah membuat resource SSLCertificate dengan sertifikat SSL dan kunci pribadi, ganti
SSL_CERT
dengan www-cert. - Jika Anda menggunakan sertifikat SSL yang dikelola Google atau yang ditandatangani sendiri, ganti
SSL_CERT
dengan nama sertifikat Anda.
- Jika Anda telah membuat resource SSLCertificate dengan sertifikat SSL dan kunci pribadi, ganti
Agar load balancer dapat menerima traffic dengan andal, Anda perlu menetapkan alamat IP statis global ke aturan penerusan global load balancer.
Untuk membuat resource alamat IP statis global, jalankan perintah berikut:
gcloud compute addresses create lb-ip \ --global \ --network-tier=PREMIUM
Catat alamat IP-nya.
Buat dua aturan penerusan global untuk menangani permintaan HTTP dan HTTPS yang masuk. Setiap aturan penerusan mengirimkan traffic ke salah satu proxy target yang Anda buat, bergantung pada alamat IP, protokol IP, dan port yang ditentukan.
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
load-balancing-scheme=EXTERNAL_MANAGED
. Setelan ini menawarkan kapabilitas pengelolaan traffic tingkat lanjut. - Untuk Load Balancer Aplikasi klasik, gunakan
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80 gcloud compute forwarding-rules create https-fwd-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ip \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
Setelah membuat aturan penerusan global, diperlukan waktu beberapa menit untuk menerapkan konfigurasi Anda. Untuk memeriksa progres penerapan, Anda dapat memantau konfigurasi di Konsol Google Cloud atau menjalankan perintah berikut di komputer lokal:
gcloud compute backend-services get-health BACKEND_SERVICE_NAME
Mengirim traffic ke backend
Setelah mengonfigurasi layanan load balancing, Anda dapat mulai mengirimkan traffic ke aturan penerusan dan melihat traffic tersebut disebar ke berbagai instance.
Kirim traffic ke backend Anda sebagai berikut:
Di Konsol Google Cloud, buka halaman Load balancing.
Pilih tab Frontends.
Untuk melihat halaman beranda default, klik alamat IP di kolom Address.
Membatasi akses ke backend
Setelah memastikan bahwa semuanya berfungsi sebagaimana mestinya, ubah aturan firewall Anda sehingga traffic HTTP atau HTTPS hanya dapat berasal dari layanan load balancing Anda:
Di Konsol Google Cloud, buka halaman Firewall.
Klik nama aturan firewall yang mengizinkan akses eksternal ke port
tcp:80
.Klik Edit untuk mengedit aturan firewall.
Di kolom Source IPv4 ranges, hapus nilai
0.0.0.0/0
dan masukkan 130.211.0.0/22. Tindakan ini akan membatasi IP sumber yang diizinkan aturan firewall ke rentang130.211.0.0/22
, yang merupakan rentang IP health check load balancing HTTPS.Klik Simpan.
Di Konsol Google Cloud, buka halaman VM instances.
Klik alamat IP eksternal setiap instance untuk memverifikasi bahwa instance tersebut kini tidak dapat diakses.
Menyimulasikan pemadaman layanan
Untuk mengetahui bagaimana beban diseimbangkan di antara instance yang responsif, Anda dapat menyimulasikan pemadaman layanan untuk satu atau beberapa instance di sebuah region.
Untuk menghentikan instance menerima permintaan tambahan:
- Buat koneksi RDP ke instance.
- Pada instance tersebut, buka PowerShell sebagai administrator.
Jalankan perintah berikut untuk membuat aturan firewall baru pada instance. Perintah ini memblokir traffic health check dari health checker dan mencegah semua koneksi HTTP baru dari load balancer ke instance:
netsh advfirewall firewall add rule name="Outage Test" protocol=tcp dir=in localport=80 action=block remoteip=130.211.0.0/22
Di mesin lokal, jalankan perintah berikut untuk memverifikasi bahwa instance kini melaporkan status
UNHEALTHY
:gcloud compute backend-services get-health BACKEND_SERVICE_NAME
Setelah instance mulai melaporkan status
UNHEALTHY
, kirim permintaan ke load balancer. Hanya instance responsif yang akan merespons.Setelah selesai menyimulasikan pemadaman layanan, Anda dapat memulihkan konektivitas instance dengan menghapus aturan firewall. Setelah membuka PowerShell sebagai administrator di instance yang tidak responsif, jalankan perintah berikut untuk menghapus aturan:
netsh advfirewall firewall delete rule name="Outage Test"
Pembersihan
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
Anda harus menghapus semua resource yang dibuat untuk project ini satu per satu (image, template instance, grup instance, health check, layanan backend, peta URL, proxy http, alamat, aturan penerusan). Anda tidak dapat menghapus instance VM sebelum menjalankan perintah berikut.
Jalankan perintah berikut di komputer lokal guna menghapus resource yang dibuat untuk tutorial ini:
- Menghapus aturan penerusan HTTP/S:
gcloud compute forwarding-rules delete https-fwd-rule --global
gcloud compute forwarding-rules delete http-fwd-rule --global
- Menghapus alamat IP statis global:
gcloud compute addresses delete lb-ip --global
- Menghapus proxy HTTP/S:
gcloud compute target-https-proxies delete https-lb-proxy
gcloud compute target-http-proxies delete http-lb-proxy
- Menghapus sertifikat SSL:
gcloud compute ssl-certificates delete SSL_CERT
- Menghapus peta URL:
gcloud compute url-maps delete lb-map
- Menghapus layanan backend:
gcloud compute backend-services delete BACKEND_SERVICE_NAME --global
- Menghapus health check HTTP:
gcloud compute http-health-checks delete basic-check
- Menghapus grup instance terkelola:
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_1 --zone=ZONE_1
gcloud compute instance-groups managed delete MANAGED_INSTANCE_GROUP_NAME_2 --zone=ZONE_2
- Menghapus template instance:
gcloud compute instance-templates delete win-be-tmpl
-
Hapus gambar:
gcloud compute images delete IMAGE_NAME
-
Hapus disk:
gcloud compute disks delete DISK_NAME
Langkah berikutnya
- Selesaikan tutorial Men-deploy server web IIS yang di-load balanced.
- Pelajari praktik terbaik dalam Framework Arsitektur Google Cloud.
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.