全部产品
Search
文档中心

Auto Scaling:Menjalankan skrip secara otomatis pada instance ECS

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggabungkan fitur hook siklus hidup dari Auto Scaling dan template CloudOps Orchestration Service (OOS) untuk mengotomatiskan pelaksanaan skrip pada instance Elastic Compute Service (ECS) selama peristiwa penskalaan.

Prasyarat

  • Grup penskalaan telah dibuat dan berada dalam keadaan Diaktifkan.

  • Skrip telah disiapkan. Dalam contoh ini, sebuah skrip dijalankan untuk menginstal Apache secara otomatis pada instance ECS Linux (CentOS 7.6).

  • Peran RAM dibuat untuk OOS. Entitas tepercaya dari Peran RAM harus berupa Alibaba Cloud Service, layanan tepercaya harus berupa CloudOps Orchestration Service, dan Peran RAM harus memiliki izin untuk melakukan operasi pada template OOS. Untuk informasi lebih lanjut, lihat Buat Peran RAM untuk OOS dan Berikan Izin.

    Catatan

    Dalam topik ini, Peran RAM OOSServiceRole digunakan sebagai contoh. Anda juga dapat menggunakan peran lainnya.

Prosedur

Dalam contoh ini, template OOS publik bernama ACS-ESS-LifeCycleRunCommand digunakan untuk menunjukkan cara mengotomatiskan pelaksanaan skrip yang telah dipersiapkan pada instance ECS selama peristiwa penambahan skala. Lakukan langkah-langkah berikut:

Langkah 1: Berikan izin Peran RAM pada OOS

Anda harus memiliki izin untuk menjalankan template OOS. Template ACS-ESS-LifeCycleRunCommand mencakup sumber daya ECS dan Auto Scaling yang diperlukan untuk melaksanakan tugas O&M.

  1. Masuk ke Konsol RAM.

  2. Buat kebijakan.

    1. Di panel navigasi kiri, pilih Permissions > Policies.

    2. Pada halaman Kebijakan, klik Create Policy.

    3. Pada halaman Create Policy, klik tab JSON, konfigurasikan parameter berdasarkan kebutuhan bisnis Anda, lalu klik OK.

      Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut akan menggunakan pengaturan bawaannya.

      Parameter

      Deskripsi

      Name

      Masukkan ESSHookPolicyForRunCommand.

      Policy document

      Masukkan konten berikut:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ecs:DescribeInvocationResults",
                      "ecs:DescribeInvocations",
                      "ecs:RunCommand"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "ess:CompleteLifecycleAction"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }
  3. Lampirkan kebijakan ke Peran RAM OOSServiceRole.

    1. Di panel navigasi kiri, pilih Identities > Roles.

    2. Temukan Peran RAM OOSServiceRole dan klik Grant Permission di kolom Actions.

      Tambahkan izin yang diperlukan untuk Peran RAM OOSServiceRole yang diasumsikan oleh OOS untuk menyelesaikan otorisasi.

    3. Di panel Grant Permission, konfigurasikan Ruang Lingkup Sumber Daya dan Kebijakan. Setelah selesai mengonfigurasi, klik Grant permissions.

      Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut akan menggunakan pengaturan bawaannya.

      Parameter

      Deskripsi

      Resource Scope

      Atur nilai menjadi Account.

      Policy

      Pilih kebijakan kustom berikut: kebijakan ESSHookPolicyForRunCommand.

Langkah 2: Buat hook siklus hidup untuk tujuan penambahan skala dan picu peristiwa penambahan skala

Saat membuat hook siklus hidup untuk tujuan penambahan skala, Anda harus mengatur Kirim Pemberitahuan Saat Hook Siklus Hidup Berlaku menjadi Template OOS. Dengan cara ini, pelaksanaan otomatis skrip yang telah dipersiapkan dapat dipicu pada instance ECS yang diinginkan selama peristiwa penambahan skala.

  1. Masuk ke Konsol Auto Scaling.

  2. Di panel navigasi kiri, klik Scaling Groups.

  3. Di bilah navigasi atas, pilih wilayah.

  4. Temukan grup penskalaan yang diinginkan dan gunakan salah satu metode berikut untuk membuka halaman detail grup penskalaan.

    • Klik ID grup penskalaan di kolom Scaling Group Name/ID.

    • Klik Details pada kolom Actions.

  5. Buat hook siklus hidup.

    1. Di bagian atas halaman detail, klik tab Lifecycle Hook.

    2. Klik Create Lifecycle Hook.

    3. Konfigurasikan parameter berdasarkan kebutuhan bisnis Anda dan klik OK.

      Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut akan menggunakan pengaturan bawaannya.

      Parameter

      Deskripsi

      Name

      Masukkan ESSHookForRunCommand.

      Scaling Activity

      Pilih Scale-out Event.

      Timeout Period

      Konfigurasikan Periode Waktu Tunggu berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, atur nilainya menjadi 300. Unit: detik.

      Catatan

      Periode waktu tunggu adalah periode waktu di mana Anda dapat melakukan operasi kustom pada instance. Jika periode waktu tunggu lebih pendek daripada waktu yang diperlukan untuk melakukan operasi kustom, operasi tersebut mungkin gagal. Kami sarankan Anda memperkirakan waktu yang diperlukan untuk melakukan operasi kustom pada instance dan mengonfigurasi Periode Waktu Tunggu berdasarkan estimasi Anda.

      Default Execution Policy

      Pilih Continue.

      Send Notification When Lifecycle Hook Takes Effect

      Konfigurasikan parameter berikut untuk template:

      • Pilih OOS Template.

      • Pilih Public Templates.

      • Pilih ACS-ESS-LifeCycleRunCommand.

      Dalam template publik ACS-ESS-LifeCycleRunCommand, Anda juga harus mengonfigurasi parameter berikut:

      • commandType: Pilih RunShellScript.

      • commandContent: Masukkan skrip yang ingin Anda jalankan pada instance ECS yang diinginkan. Dalam contoh ini, sebuah skrip dijalankan untuk menginstal Apache secara otomatis pada instance ECS.

        yum install -y httpd
        systemctl start httpd
        systemctl enable httpd
      • OOSAssumeRole: Pilih OOSServiceRole. Di Langkah 1, OOSServiceRole diberi izin pada sumber daya ECS dan Auto Scaling. OOS mendapatkan izin tersebut setelah mengasumsikan Peran RAM.

  6. Picu peristiwa penambahan skala.

    Dalam contoh ini, peristiwa penambahan skala dipicu secara manual dengan menjalankan aturan penskalaan. Anda juga dapat memicu peristiwa penambahan skala dengan menggunakan tugas terjadwal atau tugas berbasis peristiwa.

    Catatan

    Jika peristiwa penskalaan dipicu saat Anda menjalankan aturan penskalaan secara manual, hook siklus hidup berlaku. Namun, hook siklus hidup tidak berlaku saat Anda menambahkan atau menghapus instance ECS secara manual ke atau dari grup penskalaan.

    1. Di bagian atas halaman yang muncul, klik tab Scaling Rules and Event-triggered Tasks.

    2. Pada tab Scaling Rules, klik Create Scaling Rule.

    3. Di kotak dialog Buat Aturan Penskalaan, konfigurasikan parameter berdasarkan kebutuhan bisnis Anda dan klik OK.

      Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut akan menggunakan pengaturan bawaannya.

      Parameter

      Deskripsi

      Rule Name

      Masukkan Add1.

      Rule Type

      Pilih Simple Scaling Rule.

      Operation

      Atur nilainya menjadi Tambah 1 Instance.

    4. Pada tab Aturan Penskalaan, temukan aturan penskalaan Add1 dan klik Execute di kolom Actions.

    5. Dalam pesan Jalankan Aturan Penskalaan, klik OK.

    Setelah aturan penskalaan dijalankan, Auto Scaling menambahkan satu instance ECS ke grup penskalaan. Namun, instance ECS masuk ke status Pending Add karena hook siklus hidup ESSHookForRunCommand yang sedang berlaku. Selama periode waktu tunggu hook siklus hidup, Auto Scaling memberi tahu OOS untuk menjalankan tugas O&M yang didefinisikan dalam template publik ACS-ESS-LifeCycleRunCommand.

  7. Periksa apakah instance ECS yang dibuat secara otomatis sesuai dengan harapan Anda.

    1. Di bagian atas halaman detail, klik tab Instances.

    2. Temukan instance ECS yang dibuat secara otomatis dan klik ID-nya di kolom ECS Instance ID/Name.

    3. Di panel navigasi kiri, klik Cloud Assistant.

    4. Di sudut kanan atas, klik Create/Run Command.

    5. Jalankan perintah berikut untuk melihat hasil instalasi Apache:

      Untuk informasi lebih lanjut, lihat Buat dan Jalankan Perintah. Konten perintah:

      systemctl status httpd
      • Pada tab Command Execution Result, Anda dapat memeriksa hasil eksekusi perintah. Jika Apache diinstal pada instance ECS dan masuk ke status Aktif, template publik ACS-ESS-LifeCycleRunCommand berlaku.

      • Jika instance ECS dibuat tetapi Apache tidak diinstal pada instance ECS, Anda dapat pergi ke konsol OOS untuk memeriksa eksekusi tugas O&M. Untuk informasi lebih lanjut, lihat Langkah 3: (Opsional) Lihat Eksekusi OOS.

Langkah 3: (Opsional) Lihat eksekusi OOS

  1. Masuk ke Konsol OOS.

  2. Di panel navigasi kiri, pilih Automated Task > Task Execution Management.

  3. Temukan tugas eksekusi berdasarkan waktu dan klik Details di kolom Actions.

  4. Pada halaman detail eksekusi yang muncul, lihat informasi terkait.

    Sebagai contoh, di bagian Basic Information, Anda dapat melihat ID eksekusi dan status. Di bagian Execution Steps and Results, Anda dapat mengklik node tugas untuk melihat detail eksekusi. Untuk informasi lebih lanjut, lihat Lihat Detail Eksekusi.

    Catatan

    Jika eksekusi gagal, pesan kesalahan ditampilkan di halaman detail eksekusi.

FAQ

Jika Anda gagal menjalankan tugas O&M, lakukan pemecahan masalah berdasarkan pesan kesalahan dalam hasil eksekusi. Untuk informasi lebih lanjut, lihat FAQ.

Tabel berikut menjelaskan pesan kesalahan umum.

Pesan Kesalahan

Penyebab

Solusi

Forbidden.Unauthorized message: A required authorization for the specified action is not supplied.

Anda belum mengotorisasi Auto Scaling untuk melakukan tindakan saat ini.

Periksa apakah Peran RAM OOSServiceRole memiliki izin yang diperlukan.

Forbidden.RAM message: User not authorized to operate on the specified resource, atau API ini tidak mendukung RAM.

Pengguna RAM atau Peran RAM tidak memiliki izin untuk mengoperasikan sumber daya terkait.

Periksa apakah Peran RAM OOSServiceRole memiliki izin yang diperlukan. Sebagai contoh, Anda dapat memberikan izin OOS kepada Peran RAM. Sebelum OOS dapat mengelola sumber daya yang dideklarasikan dalam template OOS, Anda harus memberikan izin yang diperlukan kepada Peran RAM.

LifecycleHookIdAndLifecycleActionToken.Invalid message: lifecycleActionToken dan lifecycleActionId yang Anda berikan tidak cocok dengan tindakan siklus hidup yang sedang berlangsung.

Tindakan hook siklus hidup yang sedang berlangsung telah berakhir atau dihentikan.

Evaluasi periode waktu tunggu hook siklus hidup untuk memastikan bahwa tugas O&M yang ditentukan dalam template OOS dapat selesai dalam batas waktu yang dialokasikan.

Referensi

Jika Anda ingin menjalankan skrip pada instance ECS yang sudah ditambahkan ke grup penskalaan, Anda dapat menggunakan fitur pembaruan bergulir. Untuk informasi lebih lanjut, lihat topik-topik berikut: