全部产品
Search
文档中心

Auto Scaling:Gunakan Function Compute untuk menyesuaikan kebijakan penskalaan masuk ECS

更新时间:Jul 06, 2025

Untuk menyesuaikan kebijakan penskalaan masuk pada instance Elastic Compute Service (ECS), seperti memprioritaskan yang memiliki utilisasi CPU terendah, Anda dapat menggunakan Function Compute. Selama peristiwa penskalaan masuk, Auto Scaling secara otomatis menghapus instance ECS yang memenuhi kondisi tertentu dari grup penskalaan.

Informasi latar belakang

Auto Scaling mendukung berbagai kebijakan penskalaan masuk. Saat melakukan penskalaan masuk, sistem menghapus instance dari grup penskalaan berdasarkan kriteria seperti waktu pembuatan instance dan konfigurasi penskalaan. Untuk informasi lebih lanjut, lihat Menggabungkan Kebijakan Penskalaan dan Kebijakan Penskalaan Masuk.

Untuk bisnis dengan kebutuhan penskalaan tinggi, Anda dapat membuat kebijakan penskalaan masuk kustom sesuai kebutuhan. Kami merekomendasikan menggunakan Function Compute bersama Auto Scaling dalam skenario berikut untuk menerapkan kebijakan penskalaan masuk kustom:

  • Skenario 1: Skalakan masuk instans dengan beban CPU terendah terlebih dahulu guna meminimalkan dampak bisnis.

  • Skenario 2: Menghapus instance idle berdasarkan penjadwalan terlebih dahulu untuk menjaga kontinuitas layanan sambil mengoptimalkan biaya dan penggunaan sumber daya.

Prasyarat

Prosedur

Langkah 1: Buat fungsi

Alibaba Cloud menyediakan Function Compute 2.0 dan 3.0. Panduan ini menjelaskan cara membuat kebijakan penskalaan masuk kustom menggunakan Function Compute 2.0.

  1. Masuk ke Konsol Function Compute.

    Jika Function Compute 3.0 ditampilkan, klik Back to Function Compute 2.0.

    函数计算2.0.jpg

  2. Di panel navigasi kiri, klik Services & Functions.

  3. Di bilah navigasi atas, pilih wilayah.

  4. Buat layanan.

    1. Di halaman Services, klik Create Service.

    2. Di panel Buat Layanan, konfigurasikan parameter Nama, Deskripsi, dan Pencatatan sesuai kebutuhan bisnis Anda, lalu klik OK.

      Tabel berikut menjelaskan pengaturan parameter yang digunakan dalam contoh ini. Untuk parameter yang tidak dijelaskan, gunakan nilai default. Untuk informasi lebih lanjut, lihat Buat Layanan.

      Parameter

      Deskripsi

      Deskripsi

      Name

      test-service

      Masukkan nama untuk layanan Function Compute. Nama tersebut harus mengikuti persyaratan format yang ditampilkan di UI.

      Description

      test

      Masukkan deskripsi untuk layanan Function Compute.

      Logging

      Aktifkan

      Tentukan apakah akan mengaktifkan fitur pencatatan. Jika Anda mengaktifkan fitur pencatatan, Function Compute mengirimkan log eksekusi fungsi ke Simple Log Service untuk penyimpanan permanen. Anda dapat men-debug kode, menganalisis kegagalan, dan menganalisis data berdasarkan log tersebut.

  5. Buat fungsi.

    1. Klik nama layanan yang dibuat untuk masuk ke halaman detail layanan. Lalu, klik Functions di panel navigasi kiri.

    2. Klik Create Function.

    3. Di halaman Create Function, konfigurasikan parameter untuk menyelesaikan pembuatan fungsi, lalu klik Create.

      Dalam contoh ini, metode Use Built-in Runtime dipilih untuk membuat fungsi. Tabel berikut menjelaskan pengaturan parameter yang digunakan dalam contoh ini. Untuk parameter yang tidak dijelaskan, gunakan nilai default. Untuk informasi lebih lanjut, lihat Buat Fungsi.

      Parameter

      Contoh

      Deskripsi

      Basic Settings

      Function Name

      test-fc

      Masukkan nama untuk fungsi. Nama tersebut harus mengikuti persyaratan format yang ditampilkan di UI.

      Handler Type

      Penangan Acara

      Nilai valid:

      • Event Handler: Fungsi memproses permintaan acara.

      • HTTP Handler: Fungsi memproses permintaan HTTP atau WebSocket.

      Code

      Runtime

      Python 3.9

      Pilih lingkungan runtime kode.

      Code Upload Method

      Halo, dunia!

      Pilih metode untuk mengunggah kode fungsi ke Function Compute.

  6. Kompilasi dan Terapkan Kode Fungsi.

    1. Klik nama fungsi untuk masuk ke halaman detail fungsi.

    2. Di tab Code, buat file bernama index.py di editor kode, lalu klik Deploy.

      Di kode fungsi, Anda dapat menetapkan kondisi penghapusan kustom berdasarkan kebutuhan bisnis, seperti utilisasi vCPU rendah atau persyaratan sistem penjadwalan.

      Contoh ini menggunakan jumlah instance ECS (Capacity) dan urutan ID instance tertentu (InstanceId) sebagai kondisi penskalaan masuk. Contoh kode:

      # -*- coding: utf-8 -*-
      import logging
      import json
      
      
      def handler(event, context):
          evt = json.loads(event)
          logger = logging.getLogger()
          logger.info(evt)
          removeCount = 0
          if "CapacityToRemove" in evt:
              for cp in evt["CapacityToRemove"]:
                  logger.info(cp["Capacity"])
                  removeCount += int(cp["Capacity"])
          instances_to_terminate = []
          if "Instances" in evt:
              for i in evt["Instances"]:
                  instances_to_terminate.append(i["InstanceId"])
          response = {
              'InstanceIds': instances_to_terminate[:removeCount]
          }
          logger.info(response)
          return response
      
  7. (Opsional) Uji Fungsi.

    1. Di tab Code, klik ikon 图标 di sebelah Test Function, lalu pilih Configure Test Parameters dari daftar drop-down.

    2. Masukkan kode uji, lalu klik OK.

      Dalam contoh ini, kode berikut diuji. Dalam kode tersebut, ScalingGroupId menentukan ID grup penskalaan yang ingin Anda kelola. CapacityToRemove menentukan bahwa Auto Scaling menghapus satu instance ECS dari zona cn-beijing-g. Instances menentukan ID instance ECS yang dapat diskalakan masuk.

      {
      	"ScalingGroupARN": "acs:ess:cn-beijing:160998252992****.scalinggroup/asg-2zei8mzn72rb115k****",
      	"ScalingGroupId": "asg-2zei8mzn72rb115k****",
      	"CapacityToRemove": [{
      		"ZoneId": "cn-beijing-g",
      		"Capacity": 1
      	}],
      	"Instances": [{
      			"InstanceId": "i-2zeinb37ovdsx6l0****",
      			"ZoneId": "cn-beijing-g",
      			"InstanceType": "ecs.g7.xlarge",
      			"ChargeType": "PostPaid"
      		},
      		{
      			"InstanceId": "i-2zeinb37ovdsx6l0****",
      			"ZoneId": "cn-beijing-g",
      			"InstanceType": "ecs.g7.xlarge",
      			"ChargeType": "PostPaid"
      		},
      		{
      			"InstanceId": "i-2zeinb37ovdsx6l0****",
      			"ZoneId": "cn-beijing-g",
      			"InstanceType": "ecs.g7.xlarge",
      			"ChargeType": "PostPaid"
      		}
      	],
      	"AdjustmentType": "SystemScaleIn"
      }
    3. Klik Test Function di tab Kode.

    4. Di tab Result, lihat hasil uji.

      Jika output serupa dengan kode berikut, Auto Scaling menghapus instance ECS yang ID-nya berada di posisi pertama selama peristiwa penskalaan masuk.

      {
          "InstanceIds": [
              "i-2zeinb37ovdsx6l0****"
          ]
      }
  8. Di bagian atas halaman yang muncul, klik Publish Version, lalu klik OK.

Langkah 2: Konfigurasikan kebijakan penghapusan instance

Bagian ini menjelaskan cara mengonfigurasi kebijakan penghapusan instance saat membuat grup penskalaan. Untuk grup penskalaan yang sudah ada, Anda dapat memodifikasi kebijakan sesuai kebutuhan.

  1. Masuk ke Konsol Auto Scaling.

  2. Buat grup penskalaan.

    1. Di halaman Scaling Groups, klik Create Scaling Group.

    2. Konfigurasikan parameter untuk menyelesaikan pembuatan grup, lalu klik Create.

      Tabel berikut menjelaskan pengaturan parameter yang digunakan dalam contoh ini. Untuk parameter yang tidak dijelaskan, gunakan nilai default. Untuk informasi lebih lanjut, lihat Kelola Grup Penskalaan.

      实例移出策略.png

      Parameter

      Contoh

      Deskripsi

      Scaling Group Name

      test

      Masukkan nama untuk grup penskalaan. Nama tersebut harus mengikuti persyaratan format yang ditampilkan di UI.

      Type

      ECS

      Tentukan tipe instance yang dikelola oleh grup penskalaan.

      Dalam contoh ini, parameter ini disetel ke ECS.

      Instance Configuration Source

      Buat dari Awal

      Pilih template berdasarkan mana Auto Scaling dapat membuat instance ECS.

      Dalam contoh ini, parameter ini disetel ke Create from Scratch. Nilai ini menunjukkan bahwa tidak ada template yang ditentukan saat Anda membuat grup penskalaan. Setelah Anda membuat grup penskalaan, buat konfigurasi penskalaan.

      Scale-In Policy

      Kebijakan Kustom

      • Layanan: test-service

      • Versi: TERBARU

      • Fungsi: test-fc

      Tentukan kebijakan penskalaan masuk instance.

      Dalam contoh ini, pilih Custom Policy lalu pilih fungsi yang telah dibuat.

      Minimum Number of Instances

      0

      Tentukan batas minimum instance. Jika jumlah instance dalam grup penskalaan kurang dari nilai parameter ini, Auto Scaling menambahkan instance ECS ke grup penskalaan hingga jumlah instance ECS dalam grup mencapai batas minimum.

      Maximum Number of Instances

      5

      Tentukan batas maksimum instance. Jika jumlah instance dalam grup penskalaan lebih besar dari nilai parameter ini, Auto Scaling menghapus instance ECS dari grup penskalaan hingga jumlah instance ECS dalam grup berkurang ke batas maksimum.

      Enable Expected Number of Instances dan Expected Number of Instances

      Aktifkan dan 3

      Aktifkan fitur Jumlah Instance yang Diharapkan dan tentukan jumlah instance yang diharapkan. Auto Scaling secara otomatis mempertahankan jumlah instance ECS yang diharapkan dalam grup penskalaan.

  3. Buat konfigurasi penskalaan. Untuk informasi lebih lanjut, lihat Buat Konfigurasi Penskalaan Tipe ECS.

  4. Aktifkan grup penskalaan. Untuk informasi lebih lanjut, lihat Aktifkan atau Nonaktifkan Grup Penskalaan.

    Dalam contoh ini, nilai Jumlah Instance yang Diharapkan adalah 3. Oleh karena itu, Auto Scaling secara otomatis membuat tiga instance ECS dalam grup penskalaan.

Langkah 3: Periksa efek penskalaan masuk

  1. Picu peristiwa penskalaan masuk dan periksa informasi tentang instance ECS yang diskalakan masuk.

    1. Ubah parameter Jumlah Instance yang Diharapkan untuk memicu peristiwa penskalaan masuk. Untuk informasi lebih lanjut, lihat Lihat atau Modifikasi Grup Penskalaan.

      Penting

      Anda dapat memicu peristiwa penskalaan masuk melalui tugas terjadwal, tugas berbasis acara, atau pelaksanaan manual aturan penskalaan. Namun, saat melakukan penskalaan masuk dengan mengubah parameter Jumlah Minimum Instance dan Jumlah Maksimum Instance, kebijakan penskalaan masuk kustom apa pun yang dibuat melalui Function Compute tidak akan berlaku.

      Dalam contoh ini, parameter Jumlah Instance yang Diharapkan disetel ke 2 untuk menguji efek penskalaan masuk kustom. Karena grup penskalaan awalnya memiliki tiga instance ECS, penyesuaian ini memicu peristiwa penskalaan masuk, menghapus satu instance.

    2. Lihat detail peristiwa penskalaan masuk dan periksa informasi tentang instance ECS yang diskalakan masuk. Untuk informasi lebih lanjut, lihat Lihat Detail Aktivitas Penskalaan.

      Dalam contoh ini, ID instance ECS yang diskalakan masuk adalah i-2ze2qdthrkpf****tldq.

      自定义缩容.png

  2. Lihat log pemanggilan fungsi untuk memeriksa catatan pemanggilan fungsi.

    1. Di halaman Services di Konsol Function Compute, klik nama layanan Anda.

    2. Di halaman Fungsi, klik nama fungsi Anda.

    3. Di halaman detail fungsi, klik tab Logs.

    4. Di tab Requests List dari tab Requests, temukan permintaan yang memicu peristiwa penskalaan masuk, lalu klik ID permintaan.

    5. Di halaman detail permintaan, klik Log Details untuk melihat log pemanggilan fungsi yang dipicu oleh peristiwa penskalaan masuk.

      Gambar tersebut menggambarkan bagaimana Auto Scaling memberikan Function Compute dengan jumlah target instance ECS untuk penskalaan masuk, beserta ID mereka. Function Compute kemudian mengeksekusi fungsi Anda, yang mengembalikan ID instance yang diskalakan masuk. Dalam contoh ini, ID yang dikembalikan (i-2ze2qdthrkpf****tldq) sesuai dengan instance yang sebenarnya diskalakan masuk.

      函数计算日志.png