Tutorial ini menjelaskan cara menggunakan kait siklus hidup Auto Scaling untuk menangguhkan instance ECS dan templat CloudOps Orchestration Service (OOS) guna mengeksekusi skrip secara otomatis pada instance tersebut selama aktivitas penskalaan.
Prasyarat
-
Grup penskalaan telah dibuat dan berada dalam status Enabled.
-
Anda telah menyiapkan skrip. Tutorial ini menggunakan skrip yang menginstal Apache pada instance Linux CentOS 7.6 sebagai contoh.
-
Peran Resource Access Management (RAM) telah dibuat untuk OOS. Entitas tepercaya peran RAM harus berupa Alibaba Cloud Service, layanan tepercaya harus berupa CloudOps Orchestration Service, dan peran RAM harus memiliki izin untuk melakukan operasi pada templat OOS. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk OOS dan berikan izin.
CatatanDalam topik ini, peran RAM OOSServiceRole digunakan sebagai contoh. Anda juga dapat menggunakan peran lainnya.
Prosedur
Tutorial ini menggunakan templat publik OOS ACS-ESS-LifeCycleRunCommand untuk menunjukkan cara menjalankan skrip secara otomatis pada instance ECS selama event scale-out.
Langkah 1: Konfigurasikan izin peran RAM OOS
Templat ACS-ESS-LifeCycleRunCommand memerlukan izin untuk melakukan operasi pada resource ECS dan Auto Scaling. Anda harus memberikan izin tersebut kepada peran RAM yang diasumsikan oleh OOS.
-
Masuk ke Konsol RAM.
-
Buat kebijakan.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Policies, klik Create Policy.
-
Pada halaman Create Policy, pilih tab JSON, konfigurasikan parameter, lalu klik OK.
Tabel berikut menjelaskan parameter yang digunakan dalam tutorial ini. Gunakan nilai default untuk parameter lainnya.
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" } ] }
-
-
Lampirkan kebijakan ke peran RAM OOSServiceRole.
-
Di panel navigasi sebelah kiri, pilih .
-
Temukan peran RAM OOSServiceRole dan klik Grant Permission di kolom Actions.
Tambahkan izin yang diperlukan untuk peran RAM OOSServiceRole yang diasumsikan oleh OOS guna menyelesaikan otorisasi.
-
Pada halaman Grant Permission, tentukan cakupan resource dan izin, lalu klik OK.
Tabel berikut menjelaskan parameter yang digunakan dalam tutorial ini. Gunakan nilai default untuk parameter lainnya.
Parameter
Deskripsi
Resource Scope
Pilih Account.
Policies
Tambahkan kebijakan kustom ESSHookPolicyForRunCommand.
-
Langkah 2: Buat kait siklus hidup untuk event scale-out
Saat membuat kait siklus hidup, konfigurasikan agar menggunakan templat OOS. Hal ini memastikan bahwa skrip dijalankan secara otomatis ketika event scale-out dipicu.
Masuk ke Auto Scaling console.
Di panel navigasi sebelah kiri, klik Scaling Groups.
Di bilah navigasi atas, pilih wilayah.
Temukan grup penskalaan yang ingin Anda kelola dan buka halaman detailnya dengan salah satu cara berikut:
Di kolom Scaling Group Name/ID, klik ID grup penskalaan.
Di kolom Actions, klik Details.
-
Buat kait siklus hidup untuk event scale-out.
Di bagian atas halaman, klik tab Event and adhesive hook.
-
Klik Create Lifecycle Hook.
-
Konfigurasikan parameter kait siklus hidup dan klik OK.
Tabel berikut menjelaskan parameter yang digunakan dalam tutorial ini. Gunakan nilai default untuk parameter lainnya.
Parameter
Deskripsi
Name
Masukkan ESSHookForRunCommand.
Scaling Activity Type
Pilih Scale-Out.
Timeout Period
Masukkan periode timeout, misalnya 300 detik.
CatatanTimeout menentukan berapa lama operasi kustom dapat berjalan. Jika timeout terlalu singkat, operasi mungkin gagal. Evaluasi waktu yang diperlukan untuk operasi kustom Anda dan atur timeout yang sesuai.
Default Execution Policy
Pilih Continue.
Send Notification When Lifecycle Hook Takes Effect
Konfigurasikan templat sebagai berikut:
-
Notification Method: Pilih OOS Template.
-
OOS Template Type: Pilih Public Templates.
-
Public Template: Pilih ACS-ESS-LifeCycleRunCommand.
Konfigurasikan parameter eksekusi untuk ACS-ESS-LifeCycleRunCommand sebagai berikut:
-
commandType: Pilih RunShellScript.
-
commandContent: Masukkan skrip yang akan dijalankan. Tutorial ini menggunakan skrip yang secara otomatis menginstal Apache sebagai contoh.
yum install -y httpd systemctl start httpd systemctl enable httpd -
OOSAssumeRole: Pilih OOSServiceRole. Di bagian Prosedur, Anda telah memberikan izin kepada peran ini untuk mengelola resource ECS dan Auto Scaling. OOS mengasumsikan peran RAM ini untuk mendapatkan izin tersebut.
-
-
Picu event scale-out.
Tutorial ini menggunakan aturan penskalaan yang dieksekusi secara manual sebagai contoh. Anda juga dapat memicu event scale-out dengan tugas terjadwal atau tugas berbasis peristiwa.
CatatanKait siklus hidup dipicu oleh aturan penskalaan, tetapi tidak oleh penambahan atau penghapusan instance ECS secara manual dari grup penskalaan.
-
Pada halaman detail grup penskalaan, klik tab Scaling Rules and Event-triggered Tasks.
-
Pada tab Scaling Rules, klik Create Scaling Rule.
-
Atur parameter aturan penskalaan dan klik OK.
Tabel berikut menjelaskan parameter yang digunakan dalam tutorial ini. Gunakan nilai default untuk parameter lainnya.
Parameter
Deskripsi
Rule Name
Masukkan Add1.
Rule Type
Pilih Simple Scaling Rule.
Operation
Atur untuk menambahkan 1 instans.
-
Di daftar aturan penskalaan, temukan aturan Add1 dan klik Recurrently di kolom Actions.
-
Klik OK.
Setelah aturan penskalaan dieksekusi, instance ECS dibuat secara otomatis. Karena kait siklus hidup ESSHookForRunCommand ada di grup penskalaan, instance baru memasuki status tunggu. OOS kemudian diberi notifikasi untuk melakukan operasi yang ditentukan dalam templat ACS-ESS-LifeCycleRunCommand.
-
-
Verifikasi bahwa instance ECS yang dibuat secara otomatis dikonfigurasi dengan benar.
Di bagian atas halaman, klik tab Instance Management.
-
Temukan instance ECS yang dibuat secara otomatis dan klik ID instance di kolom ECS Instance ID/Name.
-
Di panel navigasi sebelah kiri, klik Cloud Assistant.
-
Di pojok kanan atas halaman, klik Create/Run Command.
-
Jalankan perintah berikut untuk memeriksa status instalasi Apache.
Untuk informasi lebih lanjut, lihat Create and run a command. Konten perintah adalah sebagai berikut:
systemctl status httpd-
Di tab Command Execution Result, lihat detail eksekusi. Jika hasil menunjukkan bahwa layanan Apache telah terinstal dan statusnya aktif, maka skrip dalam parameter commandContent templat ACS-ESS-LifeCycleRunCommand berhasil dijalankan.
-
Jika instance ECS dibuat tetapi Apache gagal terinstal secara otomatis, buka konsol OOS untuk melihat detail eksekusi tugas. Untuk informasi lebih lanjut, lihat (Optional) Step 3: View the OOS execution details.
-
(Opsional) Langkah 3: Lihat detail eksekusi OOS
-
Masuk ke Konsol OOS.
-
Di panel navigasi sebelah kiri, pilih .
-
Temukan tugas eksekusi berdasarkan waktu dan klik Details di kolom Actions.
-
Halaman detail eksekusi menyediakan gambaran lengkap tentang tugas tersebut.
Sebagai contoh, Anda dapat melihat ID eksekusi dan status di bagian Basic Information. Anda juga dapat mengklik node tugas di bagian Execution Result untuk melihat detailnya. Untuk informasi lebih lanjut, lihat View the details of an execution.
CatatanJika eksekusi gagal, pesan error terkait akan ditampilkan di halaman detail eksekusi.
FAQ
Jika Anda gagal mengeksekusi tugas O&M, lakukan pemecahan masalah berdasarkan pesan error di hasil eksekusi. Untuk informasi lebih lanjut, lihat FAQ.
Tabel berikut menjelaskan pesan error umum.
|
Pesan error |
Penyebab |
Solusi |
|
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied. |
Anda belum memberi otorisasi kepada Auto Scaling untuk melakukan aksi saat ini. |
Periksa apakah peran RAM OOSServiceRole memiliki izin yang diperlukan. |
|
Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM. |
Pengguna RAM atau peran RAM tidak memiliki izin untuk mengoperasikan resource terkait. |
Periksa apakah peran RAM OOSServiceRole memiliki izin yang diperlukan. Misalnya, Anda dapat memberikan izin OOS kepada peran RAM tersebut. Sebelum OOS dapat mengelola resource yang dideklarasikan dalam templat OOS, Anda harus memberikan izin yang diperlukan kepada peran RAM tersebut. |
|
LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action. |
Aksi kait siklus hidup yang sedang berlangsung telah berakhir atau dihentikan. |
Evaluasi periode timeout kait siklus hidup untuk memastikan bahwa tugas O&M yang ditentukan dalam templat OOS dapat diselesaikan dalam batas waktu yang ditentukan. |
Referensi
Untuk menjalankan skrip pada instance ECS yang sudah ada di grup penskalaan, gunakan fitur rolling update. Untuk informasi lebih lanjut, lihat topik berikut: