Menggunakan penskalaan otomatis untuk aplikasi yang sangat skalabel


Tutorial ini menjelaskan cara menggunakan penskalaan otomatis untuk menyesuaikan jumlah instance VM yang menghosting aplikasi Anda secara otomatis, sehingga aplikasi Anda dapat beradaptasi dengan berbagai jumlah traffic.

Untuk menggunakan penskalaan otomatis, hosting aplikasi Anda di grup instance terkelola. Grup instance terkelola adalah kumpulan instance yang semuanya menjalankan aplikasi yang sama dan dapat dikelola sebagai satu entity. Jika grup instance terkelola mengaktifkan penskalaan otomatis, jumlah VM dalam grup instance akan otomatis meningkat (meningkatkan skala) atau menurun (menurunkan skala) sesuai dengan nilai target yang Anda tentukan untuk kebijakan penskalaan otomatis Anda.

Tutorial ini berisi langkah-langkah mendetail untuk meluncurkan aplikasi web pada grup instance terkelola, menyiapkan penskalaan otomatis, mengonfigurasi akses jaringan, dan mengamati penskalaan otomatis dengan menyimulasikan lonjakan dan penurunan beban. Tergantung pada pengalaman Anda dengan fitur ini, perlu waktu sekitar 20 menit untuk menyelesaikan tutorial ini.

Tujuan

  • Luncurkan aplikasi web demo pada grup instance terkelola.
  • Amati efek penskalaan otomatis dengan menyimulasikan lonjakan dan penurunan traffic.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • Compute Engine

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

Arsitektur aplikasi

Aplikasi ini mencakup komponen Compute Engine berikut:

  • Aturan firewall: firewall Google Cloud yang memungkinkan Anda mengizinkan atau menolak traffic ke instance.
  • Template instance: template yang digunakan untuk membuat setiap instance VM dalam grup instance terkelola.
  • Grup instance terkelola regional: grup instance VM yang menjalankan aplikasi yang sama di beberapa zona.

Meluncurkan aplikasi web

Tutorial ini menggunakan aplikasi web yang disimpan di GitHub. Jika Anda ingin mempelajari cara pengimplimentasian aplikasi lebih lanjut, lihat repositori GoogleCloudPlatform/python-docs-samples di GitHub.

Luncurkan aplikasi web di setiap VM dalam grup instance terkelola dengan menyertakan skrip startup dalam template instance. Untuk mengizinkan traffic HTTP ke aplikasi web, buat aturan firewall.

Membuat aturan firewall

Buat aturan firewall untuk mengizinkan traffic HTTP ke aplikasi web:

  1. Di konsol Google Cloud, buka halaman Firewall.

    Buka Firewall

  2. Klik Create firewall rule.

  3. Di bagian Name, masukkan default-allow-http.

  4. Tetapkan Jaringan ke default.

  5. Tetapkan Target untuk memilih Specified target tags.

  6. Di bagian Tag Target, masukkan http-server.

  7. Tetapkan Filter sumber ke IP ranges.

  8. Di bagian Rentang IP sumber, masukkan 0.0.0.0/0

    untuk mengizinkan akses ke semua alamat IP.

  9. Di bagian Port dan protokol, pilih Protokol dan port yang ditentukan. Kemudian, pilih tcp dan masukkan 80 untuk mengizinkan akses untuk traffic HTTP.

  10. Klik Create.

Membuat template instance

Buat template instance yang meluncurkan aplikasi web demo saat memulai:

  1. Di konsol Google Cloud, buka halaman Template instance.

    Buka Instance templates

  2. Klik Create instance template.

  3. Di bagian Name, masukkan autoscaling-web-app-template.

  4. Di bagian Konfigurasi mesin, tetapkan jenis mesin ke e2-standard-2.

  5. Di bagian Firewall, centang kotak Izinkan traffic HTTP. Tindakan ini akan menerapkan tag jaringan http-server ke setiap instance yang dibuat dari template ini.

  6. Klik Jaringan, disk, keamanan, pengelolaan, tenancy tunggal untuk melihat setelan lanjutan.

  7. Di tab Pengelolaan, cari Otomatisasi dan masukkan Skrip startup berikut:

    sudo apt update && sudo apt -y install git gunicorn3 python3-pip
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/compute/managed-instances/demo
    sudo pip3 install -r requirements.txt
    sudo gunicorn3 --bind 0.0.0.0:80 app:app --daemon
    

    Skrip ini menyebabkan setiap instance menjalankan aplikasi web selama startup.

  8. Klik Create.

Membuat grup instance terkelola

Buat grup instance regional untuk mulai menjalankan aplikasi web:

  1. Di konsol Google Cloud, buka halaman Grup instance.

    Buka Grup instance

  2. Klik Buat grup instance untuk membuat grup instance baru.

  3. Pilih Grup instance terkelola baru (stateless)."

  4. Untuk Name, masukkan autoscaling-web-app-group.

  5. Untuk Template instance, pilih autoscaling-web-app-template.

  6. Untuk Lokasi, pilih Beberapa zona.

  7. Untuk Region, pilih us-central1.

  8. Untuk Zones, pilih zona berikut dari menu drop-down:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  9. Konfigurasikan penskalaan otomatis untuk grup instance:

    1. Untuk Mode penskalaan otomatis, pilih Aktif: tambah dan hapus instance ke grup.
    2. Tetapkan Jumlah minimum instance ke 3.

    3. Tetapkan Jumlah minimum instance ke 6.

    4. Tetapkan Periode inisialisasi ke 120 detik.

    5. Di bagian Metrik Penskalaan Otomatis, pilih penggunaan CPU sebagai jenis metriknya. Untuk mempelajari metrik penskalaan otomatis lebih lanjut, lihat Kebijakan penskalaan otomatis.

    6. Tetapkan Target penggunaan CPU ke 60.

    7. Klik Done.

  10. Di bagian Autohealing, pilih Tidak ada health check dari menu drop-down Health check.

  11. Klik Buat. Tindakan ini akan mengalihkan Anda ke halaman Grup instance.

  12. Untuk memastikan bahwa instance Anda berjalan:

    1. Pada halaman Grup instance di konsol Google Cloud, klik autoscaling-web-app-group untuk melihat instance dalam grup tersebut.
    2. Di bagian IP Eksternal, klik alamat IP untuk menghubungkan instance tersebut. Tab browser baru akan terbuka dan menampilkan aplikasi web demo:

      Aplikasi web demo, yang mencantumkan informasi tentang instance dan memiliki tombol tindakan.

      Setelah selesai, tutup tab browser untuk aplikasi web demo.

Mengamati penskalaan otomatis

Untuk mengetahui informasi selengkapnya tentang perilaku penskalaan otomatis, lihat Memahami keputusan penskalaan otomatis.

Memantau penskalaan otomatis

Grup instance yang Anda buat menggunakan Kebijakan penskalaan otomatis berdasarkan penggunaan CPU. Artinya, autoscaler menambah atau mengurangi grup sesuai kebutuhan untuk mempertahankan target penggunaan CPU sebesar 60%.

Untuk memantau ukuran dan penggunaan CPU grup instance Anda, gunakan diagram penskalaan otomatis di konsol Google Cloud:

  1. Pada halaman Grup instance untuk grup instance autoscaling-web-app-group, klik tab Pemantauan.
  2. Anda dapat memantau penskalaan otomatis dari diagram Ukuran grup. Grafik menampilkan Instance, yang mewakili jumlah instance VM dalam grup dari waktu ke waktu.
  3. Opsional: Untuk memantau kapasitas versus penggunaan yang diskalakan otomatis, lihat diagram Penggunaan Autoscaler (CPU). Grafik menampilkan Pemanfaatan, yang merupakan total penggunaan CPU instance VM dalam grup, dan Kapasitas, yang merupakan target penggunaan CPU kumulatif grup (target penggunaan CPU dikalikan dengan jumlah instance VM).

    Penskalaan otomatis mencoba membuat Kapasitas cocok dengan Penggunaan dengan mengubah jumlah Instance, jika memungkinkan.

Biarkan jendela ini tetap terbuka.

Menyimulasikan penyebaran skala

Penyebaran skala terjadi saat penggunaan CPU rata-rata grup instance jauh lebih tinggi daripada nilai target. Selama penyebaran skala, autoscaler secara bertahap meningkatkan ukuran grup instance hingga penggunaan CPU berkurang ke nilai penggunaan CPU target atau sampai ukuran grup instance sama dengan Jumlah maksimum instance, yang sebelumnya ditetapkan ke 6.

Untuk memicu penyebaran skala, tingkatkan penggunaan CPU untuk instance Anda:

  1. Di konsol Google Cloud, buka Cloud Shell.

    Buka Cloud Shell

    Cloud Shell akan terbuka di bagian bawah konsol Google Cloud. Perlu waktu beberapa detik untuk sesi dimulai.

  2. Buat variabel bash lokal untuk project ID:

    export PROJECT_ID=[PROJECT_ID]
    

    dengan PROJECT_ID adalah project ID untuk project Anda saat ini, yang ditampilkan pada setiap baris baru di Cloud Shell:

    user@cloudshell:~ ([PROJECT_ID])$
    
  3. Jalankan skrip bash berikut. Skrip ini menyebabkan instance aplikasi web demo mengalami peningkatan beban, sehingga meningkatkan penggunaan CPU. Setelah beberapa menit, penggunaan CPU akan melampaui nilai target, sehingga penskalaan otomatis akan meningkatkan ukuran grup instance.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating high load for instance $NAME"
      curl -q -s "http://$IP/startLoad" >/dev/null --retry 2
    done
    
  4. Buka tab Pemantauan di konsol Google Cloud.

    Setelah beberapa menit, tab Pemantauan menampilkan bahwa Penggunaan CPU meningkat, sehingga penskalaan otomatis meningkatkan Kapasitas dengan meningkatkan jumlah Instance.

    Anda mungkin juga akan melihat bahwa 6 instance kini tercantum di bagian tab Ringkasan.

Biarkan kedua jendela tetap terbuka.

Menyimulasikan penurunan skala

Penurunan skala terjadi saat penggunaan CPU rata-rata grup instance jauh lebih rendah daripada nilai target. Selama penurunan skala, autoscaler secara bertahap menurunkan ukuran grup instance hingga penggunaan CPU meningkat ke nilai penggunaan CPU target atau sampai ukuran grup instance sama dengan Jumlah minimum instance, yang sebelumnya ditetapkan ke 3.

Untuk memicu penurunan skala, kurangi penggunaan CPU untuk instance Anda:

  1. Jalankan skrip bash berikut. Skrip ini menyebabkan instance aplikasi web demo mengalami penurunan beban, sehingga mengurangi penggunaan CPU. Setelah beberapa menit, pemakaian CPU akan turun di bawah nilai target, sehingga autoscaler akan mengurangi ukuran grup instance.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating low load for instance $NAME"
      curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2
    done
    
  2. Buka tab Pemantauan di konsol Google Cloud.

    Setelah beberapa menit, tab Pemantauan menunjukkan bahwa Penggunaan CPU menurun. Setelah periode stabilisasi, yang memverifikasi bahwa beban secara konsisten berkurang, penskalaan otomatis mengurangi Kapasitas dengan mengurangi jumlah Instance.

    Anda mungkin juga akan melihat bahwa hanya 3 instance yang tercantum di bagian tab Ringkasan.

Tutup kedua jendela setelah selesai.

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.

Jika Anda membuat project terpisah untuk tutorial ini, hapus seluruh project tersebut. Atau, jika project memiliki resource yang ingin Anda pertahankan, hapus resource yang dibuat dalam tutorial ini saja.

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource tertentu

Menghapus grup instance

  1. Di Konsol Google Cloud, buka halaman Instance groups.

    Buka Instance groups

  2. Pilih kotak centang untuk grup instance autoscaling-web-app-group Anda.
  3. Untuk menghapus grup instance, klik Hapus.

Menghapus template instance

  1. Di konsol Google Cloud, buka halaman Template instance.

    Buka Template instance

  2. Klik kotak centang di samping autoscaling-web-app-template.

  3. Klik Hapus di bagian atas halaman. Di jendela baru, klik Hapus untuk mengonfirmasi penghapusan.

Menghapus aturan firewall

  1. Di konsol Google Cloud, buka halaman Aturan firewall.

    Buka Aturan firewall

  2. Klik kotak centang di samping aturan firewall bernama default-allow-http.

  3. Klik Hapus di bagian atas halaman. Di jendela baru, klik Delete untuk mengonfirmasi penghapusan.

Langkah selanjutnya