Topik ini menjelaskan cara menggabungkan fitur kait siklus hidup (lifecycle hook) Auto Scaling dan templat CloudOps Orchestration Service (OOS) untuk menempatkan instance Elastic Compute Service (ECS) ke dalam status Pending, lalu mengotomatiskan penambahan atau penghapusan alamat IP instance tersebut ke atau dari daftar putih alamat IP instance ApsaraDB for MongoDB (MongoDB).
Prasyarat
-
Grup penskalaan telah dibuat dan berada dalam status Enabled.
Instance MongoDB telah dibuat.
-
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 tersebut harus memiliki izin untuk melakukan operasi pada templat OOS. Untuk informasi selengkapnya, lihat Buat peran RAM untuk OOS dan berikan izin.
CatatanDalam topik ini, peran RAM OOSServiceRole digunakan sebagai contoh. Anda juga dapat menggunakan peran lain.
Informasi latar belakang
Saat ini, Auto Scaling hanya mendukung integrasi dengan Server Load Balancer (SLB) dan ApsaraDB RDS. Jika Anda menyimpan data aplikasi pada instance MongoDB, pembaruan manual daftar putih alamat IP instance MongoDB dengan alamat IP pribadi instance ECS akan menyebabkan operasi yang tidak efisien. Untuk meningkatkan efisiensi operasional, pertimbangkan untuk mengotomatiskan pembaruan daftar putih alamat IP instance MongoDB dengan menggabungkan fitur kait siklus hidup Auto Scaling dan templat OOS. Perhatikan catatan penggunaan berikut:
Jika grup penskalaan Anda berisi instance ECS yang sudah ada, Anda harus menambahkan secara manual alamat IP pribadi instance ECS tersebut ke daftar putih alamat IP instance MongoDB. Jika tidak, terjadi error saat Anda menghapus alamat IP instance dari daftar putih alamat IP instance MongoDB.
Anda harus menggunakan NotificationMetadata (metadata untuk singkatnya) untuk menentukan parameter yang diperlukan guna membuat eksekusi OOS.
Metadata harus dalam format string JSON.
Kunci dalam metadata harus sesuai dengan parameter dalam templat OOS.
Untuk parameter yang tidak memiliki pengaturan default dalam templat OOS, Anda harus menentukan nilainya. Untuk parameter yang memiliki pengaturan default dalam templat OOS, Anda dapat memilih apakah akan menimpa pengaturan default tersebut atau tidak.
Prosedur
Dalam contoh ini, templat OOS publik bernama LifeCycleModifyMongoDBIPWhitelist digunakan untuk menunjukkan cara mengotomatiskan penambahan alamat IP instance ke daftar putih alamat IP instance MongoDB selama event scale-out. Lakukan langkah-langkah berikut:
Jika Anda ingin mengotomatiskan penghapusan alamat IP instance dari daftar putih alamat IP instance MongoDB, Anda dapat membuat kait siklus hidup untuk tujuan scale-in dan menerapkan kait siklus hidup tersebut selama event scale-in.
Langkah 1: Berikan izin peran RAM pada OOS
Anda harus memiliki izin untuk mengeksekusi templat OOS. Templat ACS-ESS-LifeCycleModifyMongoDBIPWhitelist mencakup resource ECS, Auto Scaling, dan MongoDB yang diperlukan untuk menjalankan tugas O&M.
-
Masuk ke Konsol RAM.
-
Buat kebijakan.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Policies, klik Create Policy.
-
Pada halaman Create Policy, klik tab JSON Editor, atur parameter, lalu klik OK.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercantum dalam tabel berikut menggunakan pengaturan bawaannya.
Parameter
Deskripsi
Nama kebijakan
Masukkan ESSHookPolicyForMongoDBWhitelist.
Policy Document
Masukkan konten berikut:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "dds:ModifySecurityIps" ], "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 kebijakan, lalu klik OK.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercantum dalam tabel berikut menggunakan pengaturan bawaannya.
Parameter
Deskripsi
Authorized scope
Pilih Account.
Policy
Pilih kebijakan kustom berikut: ESSHookPolicyForMongoDBWhitelist.
-
Langkah 2: Buat kait siklus hidup untuk tujuan scale-out dan picu event scale-out
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.
Di bagian atas halaman, klik tab Event and adhesive hook.
-
Klik Create Lifecycle Hook.
-
Konfigurasikan kait siklus hidup dan klik OK.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercantum dalam tabel berikut menggunakan pengaturan bawaannya.
Parameter
Deskripsi
Name
Masukkan ESSHookForAddMongoDBWhitelist.
Scaling Activity Type
Pilih Scale-Out.
Timeout Period
Konfigurasikan Timeout Period sesuai kebutuhan bisnis Anda. Dalam contoh ini, atur nilainya menjadi 300. Satuan: detik.
CatatanPeriode timeout adalah periode waktu selama Anda dapat melakukan operasi kustom pada instance. Jika periode timeout lebih pendek daripada waktu yang diperlukan untuk menjalankan operasi kustom, operasi tersebut mungkin gagal. Kami menyarankan agar Anda memperkirakan waktu yang diperlukan untuk menjalankan operasi kustom pada instance dan mengonfigurasi Timeout Period berdasarkan perkiraan tersebut.
Default Execution Policy
Pilih Continue.
Send Notification When Lifecycle Hook Takes Effect
Konfigurasikan parameter berikut untuk templat:
-
Notification Method: Pilih OOS Template.
-
OOS Template Type: Pilih Public Templates.
Pilih LifeCycleModifyMongoDBIPWhitelist.
Dalam templat publik ACS-ESS-LifeCycleModifyMongoDBIPWhitelist, Anda juga harus mengonfigurasi parameter berikut:
-
MongoDB instance ID: Masukkan ID instance ApsaraDB for MongoDB Anda. Tutorial ini menggunakan instans set replika sebagai contoh.
-
Whitelist modification method: Pilih Append. Ini sesuai dengan event scale-out dan menambahkan instance ECS ke daftar putih alamat IP instance ApsaraDB for MongoDB.
-
The RAM role assumed by OOS. : Pilih
OOSServiceRole. Di bagian Prosedur, Anda telah memberikan izin yang diperlukan kepada peran RAMOOSServiceRoleuntuk mengelola resource ECS, Auto Scaling, dan ApsaraDB for MongoDB. OOS dapat mengasumsikan peran RAM ini untuk memperoleh izin yang diperlukan.
-
-
Picu event scale-out.
Dalam contoh ini, event scale-out dipicu secara manual dengan mengeksekusi aturan penskalaan. Anda juga dapat memicu event scale-out menggunakan tugas terjadwal atau tugas berbasis peristiwa.
CatatanJika event penskalaan dipicu saat Anda mengeksekusi aturan penskalaan secara manual, kait siklus hidup akan berlaku. Namun, kait siklus hidup tidak berlaku saat Anda menambahkan atau menghapus instance ECS ke atau dari grup penskalaan secara manual.
-
Di bagian atas halaman, klik tab Scaling Rules and Event-triggered Tasks.
-
Pada tab Scaling Rules, klik Create Scaling Rule.
-
Atur properti aturan penskalaan dan klik OK.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercantum dalam tabel berikut menggunakan pengaturan bawaannya.
Parameter
Deskripsi
Rule Name
Masukkan Add1.
Rule Type
Pilih Simple Scaling Rule.
Operation
Atur nilainya menjadi Add 1 Instances.
-
Dalam daftar aturan penskalaan, temukan aturan
Add1yang baru dibuat dan klik Recurrently di kolom Actions. -
Klik OK.
Setelah aturan penskalaan dieksekusi, Auto Scaling menambahkan satu instance ECS ke grup penskalaan. Namun, instance ECS tersebut masuk ke status Pending Add karena kait siklus hidup ESSHookForAddMongoDBWhitelist sedang berlaku. Selama periode timeout kait siklus hidup, Auto Scaling memberi notifikasi kepada OOS untuk mengeksekusi tugas O&M yang didefinisikan dalam templat publik ACS-ESS-LifeCycleModifyMongoDBIPWhitelist.
-
Langkah 3: Periksa daftar putih alamat IP instance MongoDB
Masuk ke Konsol MongoDB.
-
Di panel navigasi sebelah kiri, klik Replica Set Instances.
-
Temukan instance ApsaraDB for MongoDB dan klik ID-nya di kolom Instance ID/Name.
-
Di panel navigasi sebelah kiri, pilih .
Jika alamat IP pribadi instance ECS ditambahkan ke daftar putih alamat IP instance MongoDB, templat publik ACS-ESS-LifeCycleModifyMongoDBIPWhitelist berjalan sesuai harapan.
Jika instance ECS dibuat tetapi alamat IP pribadinya tidak ditambahkan ke daftar putih alamat IP instance MongoDB, buka Konsol OOS untuk melihat eksekusi tugas O&M. Untuk informasi selengkapnya, lihat (Opsional) Langkah 4: Lihat eksekusi OOS.
(Opsional) Langkah 4: Lihat eksekusi OOS
-
Masuk ke Konsol OOS.
-
Di panel navigasi sebelah kiri, pilih .
-
Temukan tugas eksekusi berdasarkan waktu dan klik Details di kolom Actions.
-
Di halaman detail eksekusi yang muncul, lihat informasi terkait.
Sebagai contoh, Anda dapat melihat ID eksekusi dan status di bagian Basic Information. Anda juga dapat mengklik node tugas di bagian Execution Steps and Results untuk melihat detailnya. Untuk informasi selengkapnya, lihat Lihat detail eksekusi.
CatatanJika eksekusi gagal, pesan error akan ditampilkan di halaman detail eksekusi.
FAQ
Jika Anda gagal mengeksekusi tugas O&M, lakukan pemecahan masalah berdasarkan pesan error dalam hasil eksekusi. Untuk informasi selengkapnya, lihat FAQ.
Tabel berikut menjelaskan pesan error umum.
|
Error message |
Cause |
Solution |
|
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied. |
Anda belum memberi otorisasi kepada Auto Scaling untuk menjalankan 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. Sebagai contoh, 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. |