Topik ini menjelaskan cara menggabungkan fitur panggilan balik siklus hidup dari Auto Scaling dengan template CloudOps Orchestration Service (OOS) untuk menempatkan instance Elastic Compute Service (ECS) ke dalam status Pending, serta mengotomatiskan tugas penambahan atau penghapusan alamat IP instance ke atau dari daftar putih alamat IP cluster AnalyticDB for MySQL.
Prasyarat
Grup penskalaan telah dibuat dan berada dalam status Diaktifkan.
Cluster AnalyticDB for MySQL telah dibuat.
Peran RAM telah dibuat untuk OOS. Entitas tepercaya dari peran RAM harus Alibaba Cloud Service, layanan tepercaya harus 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.
CatatanDalam topik ini, peran RAM OOSServiceRole digunakan sebagai contoh. Anda juga dapat menggunakan peran lainnya.
Informasi latar belakang
Auto Scaling saat ini hanya mendukung integrasi dengan Server Load Balancer (SLB) dan ApsaraDB RDS. Jika Anda menyimpan data aplikasi di cluster AnalyticDB for MySQL, memperbarui daftar putih IP cluster secara manual dengan alamat IP pribadi instance ECS Anda mengarah pada operasi yang tidak efisien. Untuk meningkatkan efisiensi operasional, pertimbangkan untuk mengotomatiskan pembaruan daftar putih IP untuk cluster AnalyticDB for MySQL Anda dengan menggabungkan fitur hook siklus hidup Auto Scaling dan template OOS.
Prosedur
Dalam contoh ini, template OOS publik bernama LifeCycleModifyAnalyticDBIPWhitelist digunakan untuk menunjukkan cara mengotomatiskan penambahan alamat IP instance ke daftar putih IP cluster AnalyticDB for MySQL selama acara skala keluar. Lakukan langkah-langkah berikut:
Jika Anda ingin mengotomatiskan penghapusan alamat IP instance dari daftar putih IP cluster AnalyticDB for MySQL, Anda dapat membuat hook siklus hidup untuk tujuan skala masuk dan menerapkan hook siklus hidup selama acara skala masuk.
Langkah 1: Berikan peran RAM izin pada OOS
Anda harus memiliki izin untuk mengeksekusi template OOS. Template ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist mencakup sumber daya ECS, Auto Scaling, dan AnalyticDB for MySQL yang diperlukan untuk melaksanakan tugas O&M.
Masuk ke Konsol RAM.
Buat Kebijakan.
Di panel navigasi kiri, pilih .
Pada halaman Kebijakan, klik Create Policy.
Pada halaman Create Policy, klik tab JSON, konfigurasikan parameter sesuai kebutuhan bisnis Anda, lalu klik OK.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut menggunakan pengaturan default mereka.
Parameter
Deskripsi
Name
Masukkan ESSHookPolicyForAnalyticDBWhitelist.
Policy document
Masukkan konten berikut:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "adb:ModifyDBClusterAccessWhiteList" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
Lampirkan Kebijakan ke Peran RAM OOSServiceRole.
Di panel navigasi 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 untuk menyelesaikan otorisasi.
Di panel Grant Permission, konfigurasikan Ruang Lingkup Sumber Daya dan Kebijakan. Setelah selesai, klik Grant permissions.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut menggunakan pengaturan default mereka.
Parameter
Deskripsi
Resource Scope
Atur nilai menjadi Account.
Policy
Pilih kebijakan kustom berikut: ESSHookPolicyForAnalyticDBWhitelist.
Langkah 2: Buat hook siklus hidup untuk tujuan skala keluar dan picu acara skala keluar
Masuk ke Konsol Auto Scaling.
Di panel navigasi kiri, klik Scaling Groups.
Di bilah navigasi atas, pilih wilayah.
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 di kolom Actions.
Buat Hook Siklus Hidup.
Di bagian atas halaman detail, klik tab Lifecycle Hook.
Klik Create Lifecycle Hook.
Konfigurasikan parameter sesuai kebutuhan bisnis Anda dan klik OK.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut menggunakan pengaturan default mereka.
Parameter
Deskripsi
Name
Masukkan ESSHookForAddAnalyticDBWhitelist.
Scaling Activity
Pilih Scale-out Event.
Timeout Period
Konfigurasikan Periode Timeout berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, atur nilainya menjadi 300. Unit: detik.
CatatanPeriode timeout adalah periode waktu selama mana Anda dapat melakukan operasi kustom pada instance. Jika periode timeout lebih pendek daripada periode waktu yang diperlukan untuk melakukan operasi kustom, operasi tersebut mungkin gagal. Kami sarankan Anda memperkirakan periode waktu yang diperlukan untuk melakukan operasi kustom pada instance dan mengonfigurasi Periode Timeout berdasarkan perkiraan 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-LifeCycleModifyAnalyticDBIPWhitelist.
Dalam template publik ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist, Anda juga harus mengonfigurasi parameter berikut:
dbClusterId: Masukkan ID cluster AnalyticDB for MySQL.
modifyMode: Pilih Append. Nilai ini berlaku untuk acara skala keluar selama Auto Scaling menambahkan alamat IP pribadi instance ECS ke daftar putih IP cluster AnalyticDB for MySQL.
OOSAssumeRole: Pilih OOSServiceRole. Di Langkah 1, OOSServiceRole diberikan izin pada sumber daya ECS, Auto Scaling, dan AnalyticDB for MySQL. OOS memperoleh izin sebelumnya setelah mengasumsikan peran RAM.
Picu Acara Skala Keluar.
Dalam contoh ini, acara skala keluar dipicu secara manual dengan mengeksekusi aturan penskalaan. Anda juga dapat memicu acara skala keluar menggunakan tugas terjadwal atau tugas yang dipicu oleh acara.
CatatanJika aktivitas penskalaan dipicu ketika Anda secara manual mengeksekusi aturan penskalaan, hook siklus hidup berlaku. Hook siklus hidup tidak berlaku ketika Anda secara manual menambahkan atau menghapus instance ECS ke/dari grup penskalaan.
Di bagian atas halaman yang muncul, klik tab Scaling Rules and Event-triggered Tasks.
Pada tab Scaling Rules, klik Create Scaling Rule.
Dalam kotak dialog Buat Aturan Penskalaan, konfigurasikan parameter sesuai kebutuhan bisnis Anda dan klik OK.
Tabel berikut menjelaskan pengaturan yang digunakan dalam contoh ini. Parameter apa pun yang tidak tercakup dalam tabel berikut menggunakan pengaturan default mereka.
Parameter
Deskripsi
Rule Name
Masukkan Add1.
Rule Type
Pilih Simple Scaling Rule.
Operation
Atur nilainya menjadi Tambah 1 Instance.
Pada tab Aturan Penskalaan, temukan aturan penskalaan Add1 dan klik Execute di kolom Actions.
Dalam pesan Eksekusi Aturan Penskalaan, klik OK.
Setelah aturan penskalaan dieksekusi, Auto Scaling menambahkan satu instance ECS ke grup penskalaan. Namun, instance ECS memasuki status Pending Add karena hook siklus hidup ESSHookForAddAnalyticDBWhitelist yang sedang berlaku. Selama periode timeout hook siklus hidup, Auto Scaling memberi tahu OOS untuk mengeksekusi tugas O&M yang didefinisikan dalam template publik ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist.
Langkah 3: Periksa daftar putih IP cluster AnalyticDB for MySQL
Masuk ke Konsol AnalyticDB for MySQL.
Di panel navigasi kiri, klik Clusters.
Temukan cluster AnalyticDB for MySQL yang diinginkan dan klik ID-nya di kolom Cluster ID/Description.
Di panel navigasi kiri, klik Data Security.
Jika alamat IP pribadi instance ECS ditambahkan ke daftar putih IP cluster AnalyticDB for MySQL, template publik ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist berlaku sesuai harapan.
Jika instance ECS dibuat tetapi alamat IP pribadinya tidak ditambahkan ke daftar putih IP cluster AnalyticDB for MySQL, buka konsol OOS untuk melihat eksekusi tugas O&M. Untuk informasi lebih lanjut, lihat (Opsional) Langkah 4: Lihat Eksekusi OOS.
(Opsional) Langkah 4: Lihat eksekusi OOS
Masuk ke Konsol OOS.
Di panel navigasi kiri, pilih .
Temukan tugas eksekusi berdasarkan waktu dan klik Details di kolom Actions.
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.
CatatanJika eksekusi gagal, pesan kesalahan akan ditampilkan di halaman detail eksekusi.
FAQ
Jika Anda gagal mengeksekusi 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: Otorisasi yang diperlukan untuk tindakan yang ditentukan tidak disediakan. | Anda belum mengotorisasi Auto Scaling untuk melakukan tindakan saat ini. | Periksa apakah peran RAM OOSServiceRole memiliki izin yang diperlukan. |
Forbidden.RAM message: Pengguna tidak berwenang untuk mengoperasikan sumber daya yang ditentukan, 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 ke 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 timeout dari hook siklus hidup untuk memastikan bahwa tugas O&M yang ditentukan dalam template OOS dapat selesai dalam batas waktu yang dialokasikan. |