Skalabilitas adalah fitur penting yang mengukur kemampuan O&M aplikasi terdistribusi. Fitur ini secara otomatis menambah atau mengurangi jumlah instans untuk memperluas atau memperkecil kapasitas sistem, meningkatkan pemanfaatan sumber daya, dan mengurangi biaya penggunaan. Topik ini menjelaskan cara menggunakan Terraform untuk mengaktifkan dan menonaktifkan kebijakan penskalaan otomatis untuk aplikasi Serverless App Engine (SAE).
Latar Belakang
Kebijakan penskalaan otomatis SAE diklasifikasikan menjadi kebijakan penskalaan otomatis terjadwal, berbasis metrik, dan hibrida. Untuk mengaktifkan kebijakan penskalaan otomatis untuk aplikasi SAE, Anda harus mengonfigurasi sumber daya alicloud_sae_application_scaling_rule saat membuat aplikasi. Untuk menonaktifkannya, Anda perlu menghapus baik kebijakan penskalaan otomatis maupun aplikasi. Informasi lebih lanjut tentang cara menentukan periode waktu terjadwal dapat ditemukan di Gunakan ekspresi crontab.
Skenario
Kebijakan penskalaan otomatis terjadwal cocok untuk skenario di mana aplikasi memerlukan sumber daya dalam periode waktu tertentu. Jenis kebijakan ini sering digunakan di industri seperti sekuritas, kesehatan, administrasi publik, dan pendidikan.
Kebijakan penskalaan otomatis berbasis metrik cocok untuk skenario dengan lalu lintas mendadak atau periodik ketika aplikasi menggunakan sumber daya. Jenis kebijakan ini umumnya digunakan di industri seperti Internet, game, dan media sosial.
Kebijakan penskalaan otomatis hibrida cocok untuk skenario di mana aplikasi membutuhkan sumber daya dalam periode waktu tertentu serta menghadapi lalu lintas mendadak atau periodik. Jenis kebijakan ini sering digunakan di industri seperti Internet, pendidikan, dan perhotelan.
Untuk informasi lebih lanjut, lihat Konfigurasikan kebijakan penskalaan otomatis.
Anda dapat menjalankan kode contoh dalam topik ini dengan beberapa klik. Untuk informasi lebih lanjut, lihat Terraform Explorer.
Prasyarat
Akun Alibaba Cloud memiliki izin penuh pada semua sumber daya yang dimiliki oleh akun tersebut. Jika kredensial akun bocor, risiko keamanan mungkin timbul. Kami merekomendasikan agar Anda menggunakan Pengguna Resource Access Management (RAM) dan membuat pasangan AccessKey untuk Pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Buat Pasangan AccessKey.
Kebijakan berikut dilampirkan ke Pengguna RAM yang Anda gunakan untuk menjalankan perintah di Terraform. Kebijakan ini mencakup izin minimum yang diperlukan untuk menjalankan perintah di Terraform. Untuk informasi lebih lanjut, lihat Buat Kebijakan Kustom pada Tab JSON.
Kebijakan kustom ini memungkinkan Pengguna RAM atau peran untuk mengelola siklus hidup penuh aplikasi SAE, termasuk membuat, memperbarui, menghapus, memulai, menghentikan, menerapkan, dan menggulirkan aplikasi, serta mengelola aturan penskalaan otomatis.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "sae:CreateApplication", "sae:UpdateApplication", "sae:DeleteApplication", "sae:GetApplication", "sae:ListApplications", "sae:CreateScalingRule", "sae:UpdateScalingRule", "sae:DeleteScalingRule", "sae:GetScalingRule", "sae:ListScalingRules", "sae:StartApplication", "sae:StopApplication", "sae:DeployApplication", "sae:RollbackApplication" ], "Resource": "*" } ] }Lingkungan runtime untuk Terraform disiapkan dengan salah satu metode berikut:
Terraform tersedia sebagai layanan terkelola di ROS. Anda dapat menyebarkan Template Terraform di Konsol ROS. Untuk informasi lebih lanjut, lihat Buat Tumpukan Terraform.
Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan runtime online untuk Terraform. Anda dapat masuk ke Terraform Explorer untuk menggunakan Terraform tanpa perlu menginstalnya. Metode ini cocok untuk skenario di mana Anda ingin menggunakan dan men-debug Terraform dengan cepat dan nyaman tanpa biaya tambahan.
Cloud Shell: Alibaba Cloud Cloud Shell adalah produk O&M gratis yang sudah terinstal Terraform dan dikonfigurasi dengan kredensial otentikasi. Oleh karena itu, Anda dapat menjalankan perintah Terraform di Cloud Shell. Metode ini cocok untuk skenario di mana Anda ingin mengakses dan menggunakan Terraform dengan cepat dan nyaman dengan biaya rendah.
Instal dan konfigurasikan Terraform: Metode ini cocok untuk skenario di mana koneksi jaringan tidak stabil atau lingkungan pengembangan kustom diperlukan.
Sumber Daya
alicloud_sae_namespace digunakan untuk membuat namespace SAE.
alicloud_security_group digunakan untuk membangun dan mengelola grup keamanan.
alicloud_security_group_rule digunakan untuk menentukan aturan masuk atau keluar untuk grup keamanan.
alicloud_sae_application digunakan untuk membuat aplikasi SAE.
alicloud_sae_application_scaling_rule digunakan untuk membuat kebijakan penskalaan otomatis untuk aplikasi SAE.
Aktifkan kebijakan penskalaan otomatis terjadwal
Contoh ini menunjukkan cara membuat aplikasi di wilayah China (Shenzhen), menerapkan aplikasi dalam mode gambar, dan mengonfigurasi kebijakan penskalaan otomatis terjadwal untuk aplikasi.
Dalam contoh ini, kebijakan penskalaan otomatis terjadwal dijalankan setiap interval satu hari. Kebijakan mulai dijalankan pertama kali untuk lima instans pada pukul 19:35 suatu hari. Kebijakan mulai dijalankan kedua kalinya untuk dua instans pada pukul 20:35 hari yang sama. SAE mempertahankan lima instans aplikasi dari pukul 19:35 hingga 20:35 hari itu dan mempertahankan dua instans aplikasi dari pukul 20:35 hari itu hingga 19:35 hari berikutnya berdasarkan kebijakan penskalaan otomatis terjadwal.
Buat folder proyek bernama terraform untuk menyimpan sumber daya Terraform.
Jalankan perintah berikut untuk masuk ke direktori proyek:
cd terraformBuat file konfigurasi bernama main.tf.
# Konfigurasi Penyedia provider "alicloud" { region = var.region_id } # Definisi Variabel variable "region_id" { type = string default = "cn-shenzhen" } variable "app_name" { description = "Tentukan nama aplikasi" type = string default = "app-scaling" } variable "image_url" { description = "Tentukan URL gambar" type = string default = "registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-slim:0.9" } variable "namespace_name" { description = "Tentukan nama namespace" type = string default = "demo" } variable "namespace_id" { description = "Tentukan ID namespace" type = string default = "cn-shenzhen:demo" } # Namespace resource "alicloud_sae_namespace" "default" { namespace_description = var.namespace_description namespace_id = var.namespace_id namespace_name = var.namespace_name } # VPC resource "alicloud_vpc" "default" { vpc_name = var.name cidr_block = "10.0.0.0/16" } # VSwitch resource "alicloud_vswitch" "default" { vswitch_name = var.name cidr_block = "10.0.1.0/24" vpc_id = alicloud_vpc.default.id zone_id = var.zone_id } # Grup keamanan resource "alicloud_security_group" "sg" { name = var.name description = var.description vpc_id = alicloud_vpc.default.id } resource "alicloud_security_group_rule" "sg_rule" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = var.port_range priority = 1 security_group_id = alicloud_security_group.sg.id cidr_ip = var.cidr_ip } # Konfigurasi aplikasi resource "alicloud_sae_application" "default" { app_name = var.app_name app_description = var.app_description deploy = true image_url = var.image_url namespace_id = alicloud_sae_namespace.default.id vswitch_id = alicloud_vswitch.default.id vpc_id = alicloud_vpc.default.id security_group_id = alicloud_security_group.sg.id package_type = var.package_type timezone = "Asia/Beijing" replicas = var.replicas cpu = var.cpu memory = var.memory } # Kebijakan penskalaan otomatis resource "alicloud_sae_application_scaling_rule" "metrics" { app_id = alicloud_sae_application.default.id scaling_rule_name = "metric-dev" scaling_rule_enable = true scaling_rule_type = "mix" scaling_rule_timer { begin_date = "2024-11-26" end_date = "2024-11-30" period = "* * *" schedules { at_time = "19:45" max_replicas = 50 min_replicas = 10 } schedules { at_time = "20:45" max_replicas = 40 min_replicas = 3 } } scaling_rule_metric { max_replicas = 40 min_replicas = 3 metrics { metric_type = "CPU" metric_target_average_utilization = 1 } scale_up_rules { step = 10 disabled = false stabilization_window_seconds = 0 } scale_down_rules { step = 10 disabled = false stabilization_window_seconds = 10 } } } # Definisi variabel lainnya variable "namespace_description" { description = "Deskripsi Namespace" default = "sebuah namespace" } variable "name" { default = "tf" description = "Nama aturan grup keamanan" type = string } variable "description" { default = "Deskripsi aturan grup keamanan" description = "Deskripsi aturan grup keamanan" type = string } variable "port_range" { default = "1/65535" description = "Rentang port aturan grup keamanan" type = string } variable "cidr_ip" { description = "blok cidr yang digunakan untuk membuat aturan grup keamanan baru" type = string default = "0.0.0.0/0" } variable "zone_id" { description = "ID Zona Ketersediaan" type = string default = "cn-shenzhen-e" } variable "app_description" { default = "deskripsi dibuat oleh Terraform" description = "Deskripsi aplikasi" type = string } variable "package_type" { default = "Image" description = "Tipe paket aplikasi" type = string } variable "cpu" { default = "500" description = "CPU aplikasi, dalam satuan millicore" type = string } variable "memory" { default = "1024" description = "Memori aplikasi, dalam satuan MB" type = string } variable "replicas" { default = "1" description = "Replika aplikasi" type = string } variable "port" { description = "Port SLB" type = string default = "8000" } # Output output "namespace_id" { value = alicloud_sae_namespace.default.id description = "ID Namespace" } output "app_id" { description = "ID aplikasi" value = alicloud_sae_application.default.id } output "app_name" { description = "Nama aplikasi" value = var.app_name }Jalankan perintah berikut untuk menginisialisasi konfigurasi:
terraform initOutput yang Diharapkan:
Lakukan langkah-langkah berikut untuk membuat aplikasi SAE.
Jalankan perintah berikut untuk mengeksekusi file konfigurasi.Masukkan
yessesuai prompt dan tekan Enter. Tunggu hingga perintah selesai dijalankan. Jika output perintah berikut dikembalikan, otorisasi selesai.
terraform applyOutput yang Diharapkan:
Verifikasi
Jalankan perintah terraform show
Jalankan perintah berikut untuk menanyakan detail sumber daya yang dibuat oleh Terraform:
terraform show
Konsol SAE
Aplikasi app-scaling dibuat dan kebijakan penskalaan otomatis terjadwal diaktifkan untuk aplikasi. Anda dapat masuk ke SAE console dan melihat kebijakan penskalaan otomatis dan status instans pada tab Instance Information halaman Basic Information aplikasi.

Aktifkan kebijakan penskalaan otomatis berbasis metrik
Contoh ini menunjukkan cara mengaktifkan kebijakan penskalaan otomatis berbasis metrik berdasarkan file main.tf yang dibuat untuk mengonfigurasi kebijakan penskalaan otomatis terjadwal. Pengaturan sumber daya alicloud_sae_application_scaling_rule digantikan oleh konfigurasi kebijakan penskalaan otomatis berbasis metrik. Pengaturan lainnya tetap tidak berubah. Untuk informasi lebih lanjut, lihat Aktifkan kebijakan penskalaan otomatis terjadwal.
# Kebijakan penskalaan otomatis
resource "alicloud_sae_application_scaling_rule" "metrics" {
app_id = alicloud_sae_application.default.id
scaling_rule_name = "metric-dev"
scaling_rule_enable = true
scaling_rule_type = "metric"
scaling_rule_metric {
max_replicas = 50
min_replicas = 3
metrics {
metric_type = "CPU"
metric_target_average_utilization = 1
}
scale_up_rules {
step = 10
disabled = false
stabilization_window_seconds = 0
}
scale_down_rules {
step = 10
disabled = false
stabilization_window_seconds = 10
}
}
}Dalam contoh ini, jika utilisasi CPU melebihi 1%, aplikasi secara otomatis diskalakan keluar dan maksimum 50 instans dapat digunakan. Jika utilisasi CPU turun di bawah 1%, aplikasi secara otomatis diskalakan masuk dan minimum tiga instans dapat digunakan.
Utilisasi CPU rendah ditentukan dalam kode contoh untuk menunjukkan hasil tes. Anda dapat menentukan nilai parameter berdasarkan kebutuhan bisnis Anda.
Jalankan perintah berikut untuk menginisialisasi konfigurasi:
terraform initOutput yang Diharapkan:
Lakukan langkah-langkah berikut untuk membuat aplikasi SAE.
Jalankan perintah berikut untuk mengeksekusi file konfigurasi.Masukkan
yessesuai prompt dan tekan Enter. Tunggu hingga perintah selesai dijalankan. Jika output perintah berikut dikembalikan, otorisasi selesai.
terraform applyOutput yang Diharapkan:
Verifikasi
Jalankan perintah terraform show
Jalankan perintah berikut untuk menanyakan detail sumber daya yang dibuat oleh Terraform:
terraform show
Konsol SAE
Aplikasi app-scaling dibuat dan kebijakan penskalaan otomatis berbasis metrik diaktifkan untuk aplikasi. Anda dapat masuk ke SAE console dan melihat kebijakan penskalaan otomatis dan status instans pada tab Instance Information halaman Basic Information aplikasi.

Aktifkan kebijakan penskalaan otomatis hibrida
Contoh ini menunjukkan cara mengaktifkan kebijakan penskalaan otomatis hibrida berdasarkan file main.tf yang dibuat untuk mengonfigurasi kebijakan penskalaan otomatis terjadwal. Pengaturan sumber daya alicloud_sae_application_scaling_rule digantikan oleh konfigurasi kebijakan penskalaan otomatis hibrida. Pengaturan lainnya tetap tidak berubah. Untuk informasi lebih lanjut, lihat Aktifkan kebijakan penskalaan otomatis terjadwal.
Kode contoh:
resource "alicloud_sae_application_scaling_rule" "metrics" {
app_id = alicloud_sae_application.default.id
scaling_rule_name = "metric-dev"
scaling_rule_enable = true
scaling_rule_type = "mix"
scaling_rule_timer {
begin_date = "2022-04-20"
end_date = "2022-05-31"
period = "* * *"
schedules {
at_time = "19:45"
max_replicas = 50
min_replicas = 10
}
schedules {
at_time = "20:45"
max_replicas = 40
min_replicas = 3
}
}
scaling_rule_metric {
max_replicas = 40
min_replicas = 3
metrics {
metric_type = "CPU"
metric_target_average_utilization = 1
}
scale_up_rules {
step = 10
disabled = false
stabilization_window_seconds = 0
}
scale_down_rules {
step = 10
disabled = false
stabilization_window_seconds = 10
}
}
}Berikut adalah deskripsi isi dari kebijakan penskalaan otomatis hibrida:
Periode waktu umum: Jika utilisasi CPU melebihi 1%, aplikasi secara otomatis diskalakan keluar dengan maksimum 40 instans. Jika utilisasi CPU turun di bawah 1%, aplikasi secara otomatis diskalakan masuk dengan minimum tiga instans.
Periode waktu khusus: Dari 26 November 2024 hingga 30 November 2022, kebijakan penskalaan otomatis terjadwal dijalankan berdasarkan ambang batas utilisasi CPU.
Dari pukul 19:45 hingga 20:45 suatu hari dalam periode waktu tersebut, minimum 10 instans dan maksimum 50 instans dapat digunakan dalam aplikasi.
Dari pukul 20:45 suatu hari hingga 20:45 hari berikutnya dalam periode waktu tersebut, minimum tiga instans dan maksimum 40 instans dapat digunakan dalam aplikasi.
Utilisasi CPU rendah ditentukan dalam kode contoh untuk menunjukkan hasil tes. Anda dapat menyesuaikan nilai parameter sesuai dengan kebutuhan bisnis Anda.
Jalankan perintah berikut untuk menginisialisasi konfigurasi:
terraform initOutput yang Diharapkan:
Lakukan langkah-langkah berikut untuk membuat aplikasi SAE.
Jalankan perintah berikut untuk mengeksekusi file konfigurasi.Masukkan
yessesuai prompt dan tekan Enter. Tunggu hingga perintah selesai dijalankan. Jika output perintah berikut dikembalikan, otorisasi selesai.
terraform applyOutput yang Diharapkan:
Verifikasi.
Jalankan perintah terraform show
Jalankan perintah berikut untuk menanyakan detail sumber daya yang dibuat oleh Terraform:
terraform show
Konsol SAE
Aplikasi app-scaling dibuat dan kebijakan penskalaan otomatis hibrida diaktifkan untuk aplikasi. Anda dapat masuk ke SAE console dan melihat kebijakan penskalaan otomatis serta status instans pada tab Instance Information halaman Basic Information aplikasi.

Nonaktifkan kebijakan penskalaan otomatis dan hapus aplikasi
Bagian ini memberikan contoh tentang cara menonaktifkan kebijakan penskalaan otomatis dan menghapus aplikasi yang memiliki kebijakan penskalaan otomatis diaktifkan. Dalam contoh ini, aplikasi app-scaling yang berada di wilayah China (Hangzhou) dihapus.
Jalankan perintah berikut di direktori proyek untuk mengeksekusi file konfigurasi:
terraform destroyOutput yang Diharapkan:

Kebijakan penskalaan otomatis dinonaktifkan dan aplikasi
app-scalingdihapus.Kode Lengkap
CatatanAnda dapat menjalankan kode contoh dalam topik ini dengan beberapa klik. Untuk informasi lebih lanjut, lihat Terraform Explorer.
# Konfigurasi Penyedia provider "alicloud" { region = var.region_id } # Definisi Variabel variable "region_id" { type = string default = "cn-shenzhen" } variable "app_name" { description = "Tentukan nama aplikasi" type = string default = "app-scaling" } variable "image_url" { description = "Tentukan URL gambar" type = string default = "registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-slim:0.9" } variable "namespace_name" { description = "Tentukan nama namespace" type = string default = "demo" } variable "namespace_id" { description = "Tentukan ID namespace" type = string default = "cn-shenzhen:demo" } # Namespace resource "alicloud_sae_namespace" "default" { namespace_description = var.namespace_description namespace_id = var.namespace_id namespace_name = var.namespace_name } # VPC resource "alicloud_vpc" "default" { vpc_name = var.name cidr_block = "10.0.0.0/16" } # VSwitch resource "alicloud_vswitch" "default" { vswitch_name = var.name cidr_block = "10.0.1.0/24" vpc_id = alicloud_vpc.default.id zone_id = var.zone_id } # Grup keamanan resource "alicloud_security_group" "sg" { name = var.name description = var.description vpc_id = alicloud_vpc.default.id } resource "alicloud_security_group_rule" "sg_rule" { type = "ingress" ip_protocol = "tcp" nic_type = "intranet" policy = "accept" port_range = var.port_range priority = 1 security_group_id = alicloud_security_group.sg.id cidr_ip = var.cidr_ip } # Konfigurasi aplikasi resource "alicloud_sae_application" "default" { app_name = var.app_name app_description = var.app_description deploy = true image_url = var.image_url namespace_id = alicloud_sae_namespace.default.id vswitch_id = alicloud_vswitch.default.id vpc_id = alicloud_vpc.default.id security_group_id = alicloud_security_group.sg.id package_type = var.package_type timezone = "Asia/Beijing" replicas = var.replicas cpu = var.cpu memory = var.memory } # Kebijakan penskalaan otomatis resource "alicloud_sae_application_scaling_rule" "metrics" { app_id = alicloud_sae_application.default.id scaling_rule_name = "metric-dev" scaling_rule_enable = true scaling_rule_type = "mix" scaling_rule_timer { begin_date = "2024-11-26" end_date = "2024-11-30" period = "* * *" schedules { at_time = "19:45" max_replicas = 50 min_replicas = 10 } schedules { at_time = "20:45" max_replicas = 40 min_replicas = 3 } } scaling_rule_metric { max_replicas = 40 min_replicas = 3 metrics { metric_type = "CPU" metric_target_average_utilization = 1 } scale_up_rules { step = 10 disabled = false stabilization_window_seconds = 0 } scale_down_rules { step = 10 disabled = false stabilization_window_seconds = 10 } } } # Definisi variabel lainnya variable "namespace_description" { description = "Deskripsi Namespace" default = "sebuah namespace" } variable "name" { default = "tf" description = "Nama aturan grup keamanan" type = string } variable "description" { default = "Deskripsi aturan grup keamanan" description = "Deskripsi aturan grup keamanan" type = string } variable "port_range" { default = "1/65535" description = "Rentang port aturan grup keamanan" type = string } variable "cidr_ip" { description = "blok cidr yang digunakan untuk membuat aturan grup keamanan baru" type = string default = "0.0.0.0/0" } variable "zone_id" { description = "ID Zona Ketersediaan" type = string default = "cn-shenzhen-e" } variable "app_description" { default = "deskripsi dibuat oleh Terraform" description = "Deskripsi aplikasi" type = string } variable "package_type" { default = "Image" description = "Tipe paket aplikasi" type = string } variable "cpu" { default = "500" description = "CPU aplikasi, dalam satuan millicore" type = string } variable "memory" { default = "1024" description = "Memori aplikasi, dalam satuan MB" type = string } variable "replicas" { default = "1" description = "Replika aplikasi" type = string } variable "port" { description = "Port SLB" type = string default = "8000" } # Output output "namespace_id" { value = alicloud_sae_namespace.default.id description = "ID Namespace" } output "app_id" { description = "ID aplikasi" value = alicloud_sae_application.default.id } output "app_name" { description = "Nama aplikasi" value = var.app_name }Referensi
Untuk informasi lebih lanjut tentang Terraform, lihat Apa itu Terraform?.