Menyiapkan load balancing lintas region untuk server web Microsoft IIS


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:

Load balancing lintas region

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 Cloudyang 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.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  7. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine, BigQuery, and Cloud Firestore APIs.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  13. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  14. Atau, Anda dapat menggunakan Cloud Shell di Google Cloud console untuk berinteraksi dengan Google Cloud, yang dalam hal ini Anda tidak perlu menginstal Google Cloud CLI.
  15. Instal klien Remote Desktop Protocol (RDP). Untuk informasi selengkapnya, lihat Klien Microsoft Remote Desktop. Jika klien RDP sudah terinstal, Anda dapat melewati tugas ini.
  16. 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.
  17. Opsional: Baca dan pahami Ringkasan Load Balancer Aplikasi Eksternal.
  18. 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:

    1. Di Google Cloud konsol, buka halaman Cloud Marketplace ASP.NET Framework.

      Buka Cloud Marketplace

    2. Klik Launch.

    3. Di kolom Deployment name, masukkan src-img.

    4. Di kolom Zone, pilih zona tempat Anda ingin men-deploy image.

    5. Di kolom Windows Server OS Version, pilih 2016.

    6. Di bagian Networking - Firewall, hanya pilih opsi berikut:

      • Allow HTTP traffic
      • Allow HTTPS traffic
      • Allow RDP traffic

    7. Setujui persyaratan layanan, lalu klik Deploy.

    8. 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:

    1. Di konsol Google Cloud , buka halaman VM instances.

      Buka instance VM

    2. Klik nama instance image sumber (src-img).

    3. Klik Set Windows password.

    4. Pada dialog Set new Windows password, tambahkan nama pengguna Anda, lalu klik Set untuk membuat akun pengguna di instance Anda.

    5. Salin sandi yang diberikan dan tutup dialog.

    6. 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:

    1. Di instance image sumber, buka PowerShell sebagai administrator.

    2. 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.

    Buka instance VM

    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:

    1. Di instance image sumber, buka PowerShell sebagai administrator.
    2. Jalankan perintah berikut untuk menyiapkan proses cloning sistem Anda:

      GCESysprep
      

      Setelah operasi GCESysprep selesai, koneksi Anda akan otomatis terputus dari sesi RDP.

    3. 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.

    4. 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:

    1. 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 terkelola
      • BASE_INSTANCE_NAME_1: nama instance dasar
      • ZONE_1: zona tempat Anda ingin men-deploy instance terkelola
    2. 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 terkelola
      • BASE_INSTANCE_NAME_2: nama instance dasar
      • ZONE_2: zona tempat Anda ingin men-deploy instance terkelola

    Memastikan backend instance berjalan

    1. Di konsol Google Cloud , buka halaman VM instances.

      Buka instance VM

    2. 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.

    1. 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
      
    2. 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.

    3. 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
      
    4. 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
      
    5. 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 sertifikat
      • KEY_FILE_PATH: jalur file kunci pribadi
    6. 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.
    7. 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.

    8. 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
      

    Setelah membuat aturan penerusan global, diperlukan waktu beberapa menit untuk menerapkan konfigurasi Anda. Untuk memeriksa progres penerapan, Anda dapat memantau konfigurasi diGoogle Cloud console 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:

    1. Di konsol Google Cloud , buka halaman Load balancing.

      Buka Load balancing

    2. Pilih tab Frontends.

    3. 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:

    1. Di konsol Google Cloud , buka halaman Firewall.

      Buka Firewall

    2. Klik nama aturan firewall yang mengizinkan akses eksternal ke port tcp:80.

    3. Klik Edit untuk mengedit aturan firewall.

    4. 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 rentang 130.211.0.0/22, yang merupakan rentang IP health check load balancing HTTPS.

    5. Klik Simpan.

    6. Di konsol Google Cloud , buka halaman VM instances.

      Buka instance VM

    7. 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:

    1. Buat koneksi RDP ke instance.
    2. Pada instance tersebut, buka PowerShell sebagai administrator.
    3. 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
      
    4. Di mesin lokal, jalankan perintah berikut untuk memverifikasi bahwa instance kini melaporkan status UNHEALTHY:

      gcloud compute backend-services get-health BACKEND_SERVICE_NAME
      
    5. Setelah instance mulai melaporkan status UNHEALTHY, kirim permintaan ke load balancer. Hanya instance responsif yang akan merespons.

    6. 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.

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    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:

    1. Menghapus aturan penerusan HTTP/S:
      gcloud compute forwarding-rules delete https-fwd-rule --global
      
      gcloud compute forwarding-rules delete http-fwd-rule --global
      
    2. Menghapus alamat IP statis global:
      gcloud compute addresses delete lb-ip --global
      
    3. Menghapus proxy HTTP/S:
      gcloud compute target-https-proxies delete https-lb-proxy
      
      gcloud compute target-http-proxies delete http-lb-proxy
      
    4. Menghapus sertifikat SSL:
      gcloud compute ssl-certificates delete SSL_CERT
      
    5. Menghapus peta URL:
      gcloud compute url-maps delete lb-map
      
    6. Menghapus layanan backend:
      gcloud compute backend-services delete BACKEND_SERVICE_NAME --global
      
    7. Menghapus health check HTTP:
      gcloud compute http-health-checks delete basic-check
      
    8. 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
      
    9. Hapus template instance:
      gcloud compute instance-templates delete win-be-tmpl
      
    10. In the Google Cloud console, go to the Images page.

      Go to Images

    11. Select the checkbox for the image that you want to delete.
    12. To delete the image, click Delete.
    13. In the Google Cloud console, go to the Disks page.

      Go to Disks

    14. Select the checkbox for the disk that you want to delete.
    15. To delete the disk, click Delete.

    Langkah berikutnya