Pengujian beban terdistribusi menggunakan Google Kubernetes Engine

Last reviewed 2024-08-13 UTC

Dokumen ini menjelaskan cara menggunakan Google Kubernetes Engine (GKE) untuk men-deploy framework pengujian beban terdistribusi yang menggunakan beberapa penampung untuk membuat traffic bagi API berbasis REST sederhana. Dokumen ini menguji beban aplikasi web yang di-deploy ke App Engine yang mengekspos endpoint bergaya REST untuk merespons permintaan POST HTTP yang masuk.

Anda dapat menggunakan pola yang sama ini untuk membuat framework pengujian beban untuk berbagai skenario dan aplikasi, seperti sistem fitur pesan, sistem pengelolaan aliran data, dan sistem database.

Tujuan

  • Menentukan variabel lingkungan guna mengontrol konfigurasi deployment.
  • Membuat cluster GKE.
  • Melakukan pengujian beban.
  • Secara opsional meningkatkan jumlah pengguna atau memperluas pola ke kasus pengguna lain.

Biaya

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

  • App Engine
  • Artifact Registry
  • Cloud Build
  • Cloud Storage
  • Google Kubernetes Engine

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

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. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the App Engine, Artifact Registry, Cloud Build, Compute Engine, Resource Manager, Google Kubernetes Engine, and Identity and Access Management APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the App Engine, Artifact Registry, Cloud Build, Compute Engine, Resource Manager, Google Kubernetes Engine, and Identity and Access Management APIs.

    Enable the APIs

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

  9. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/serviceusage.serviceUsageAdmin, roles/container.admin, roles/appengine.appAdmin, roles/appengine.appCreator, roles/artifactregistry.admin, roles/resourcemanager.projectIamAdmin, roles/compute.instanceAdmin.v1, roles/iam.serviceAccountUser, roles/cloudbuild.builds.builder, roles/iam.serviceAccountAdmin

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
    • Replace PROJECT_ID with your project ID.
    • Replace USER_IDENTIFIER with the identifier for your user account. For example, user:myemail@example.com.

    • Replace ROLE with each individual role.

Contoh workload

Diagram berikut menunjukkan contoh workload saat permintaan beralih dari klien ke aplikasi.

Permintaan beralih dari klien ke aplikasi.

Untuk membuat model interaksi ini, Anda dapat menggunakan Locust, alat pengujian beban berbasis Python terdistribusi yang dapat mendistribusikan permintaan di beberapa jalur target. Sebagai contoh, Locust dapat mendistribusikan permintaan ke jalur target /login dan /metrics Workload dimodelkan sebagai serangkaian tugas di Locust.

Arsitektur

Arsitektur ini melibatkan dua komponen utama:

  • Image container Docker Locust.
  • Orkestrasi container dan mekanisme pengelolaan.

Image container Docker Locust berisi software Locust. Dockerfile, yang Anda dapatkan saat meng-clone repositori GitHub yang menyertai dokumen ini, menggunakan gambar dasar Python dan menyertakan skrip untuk memulai layanan Locust dan menjalankan tugas. Untuk memperkirakan klien di dunia nyata, setiap tugas Locust diberi bobot. Sebagai contoh example, pendaftaran terjadi sekali per seribu total permintaan klien.

GKE menyediakan orkestrasi dan pengelolaan container. Dengan GKE, Anda dapat menentukan jumlah node container yang menyediakan dasar untuk framework pengujian beban. Anda juga dapat mengatur pekerja pengujian beban ke dalam Pod, dan menentukan berapa banyak Pod yang Anda inginkan agar GKE tetap berjalan.

Untuk men-deploy tugas pengujian beban, Anda dapat melakukan hal berikut:

  1. Men-deploy pengujian beban utama, yang disebut sebagai master oleh Locust.
  2. Men-deploy sekelompok pekerja pengujian beban. Dengan pekerja pengujian beban ini, Anda dapat membuat traffic dalam jumlah yang besar untuk tujuan pengujian.

Diagram berikut menunjukkan arsitektur yang mendemonstrasikan pengujian beban menggunakan contoh aplikasi. Pod master menayangkan antarmuka web yang digunakan untuk mengoperasikan dan memantau pengujian beban. Pod pekerja menghasilkan traffic permintaan REST untuk aplikasi yang sedang diuji, dan mengirimkan metrik ke master.

Pod utama menayangkan antarmuka web yang digunakan untuk mengoperasikan dan memantau pengujian beban. Pod pekerja menghasilkan traffic permintaan REST untuk aplikasi yang sedang diuji.