Topik ini menjelaskan cara menggunakan Index Lifecycle Management (ILM) untuk menerapkan arsitektur hot-warm pada data time-series seperti log dan metrik. Arsitektur ini secara otomatis memindahkan data yang menua dari hot node ke warm node, sehingga meningkatkan performa pengindeksan dan mengurangi biaya penyimpanan.
Prasyarat
Untuk berhasil menerapkan Index Lifecycle Management (ILM), kluster Alibaba Cloud Elasticsearch Anda harus memenuhi kondisi berikut:
Elasticsearch V6.6.0 atau versi yang lebih baru.
Jika Anda belum memiliki kluster, buat satu dengan versi yang sesuai.
Jika kluster yang ada lebih lama dari V6.6.0, upgrade kluster tersebut.
Warm node telah dikonfigurasi.
Dapatkan warm node dengan salah satu cara berikut:
Saat pembuatan kluster
Untuk memastikan fungsi ILM berjalan dengan baik, pastikan semua node dalam kluster Anda (hot, warm, dll.) menjalankan versi yang sama.
Catatan penggunaan
Granularitas kebijakan: Konfigurasikan kebijakan ILM sesuai kebutuhan bisnis spesifik Anda. Kami menyarankan penggunaan alias dan kebijakan yang berbeda untuk indeks dengan struktur atau kebutuhan retensi yang berbeda guna menyederhanakan manajemen.
Operasi tulis: Hindari menulis data langsung ke indeks yang telah memasuki fase warm atau cold. Untuk menjaga urutan kronologis dan integritas data, atur aksi dalam kebijakan ILM agar membuat indeks menjadi read-only (misalnya, menggunakan aksi
shrinkatauread_only) setelah keluar dari fase hot.Pengujian sebelum produksi: Selalu uji kebijakan ILM secara menyeluruh di lingkungan non-produksi sebelum menerapkannya pada kluster produksi kritis.
Nama kebijakan tidak dapat diubah: Nama kebijakan tidak dapat diubah setelah dibuat. Rencanakan konvensi penamaan Anda dengan cermat.
Persyaratan alias rollover: Fitur rollover ILM memerlukan templat indeks yang menggunakan alias rollover.
Penamaan indeks awal: Nama indeks awal harus diakhiri dengan angka enam digit (misalnya,
-000001) agar fitur rollover berfungsi dengan benar.
Prosedur
Bagian ini memandu Anda melalui konfigurasi ILM di kluster Alibaba Cloud Elasticsearch Anda.
Langkah 1: Konfirmasi konfigurasi warm node
Sebelum melanjutkan, verifikasi bahwa kluster Anda telah menyediakan warm node dengan benar.
Konsol Alibaba Cloud Elasticsearch
Buka halaman informasi dasar kluster Elasticsearch Anda dan periksa arsitektur kluster di bagian Node Visualization.

Kibana
Buka Konsol Kibana, pilih Dev Tools, lalu jalankan perintah berikut di Console:
GET _cat/nodeattrs?v&h=node,attr,value&s=attr:descTanggapan yang berisi atribut box_type:warm menunjukkan bahwa kluster telah dikonfigurasi dengan warm node.
Langkah 2: Buat kebijakan ILM
Tentukan tahapan siklus hidup data Anda dengan membuat kebijakan ILM. Contoh ini membuat game-policy dengan fase hot, warm, cold, dan delete.
Di Konsol Kibana, jalankan perintah berikut:
PUT /_ilm/policy/game-policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "1GB",
"max_age": "1d",
"max_docs": 1000
}
}
},
"warm": {
"min_age": "30m",
"actions": {
"forcemerge": {
"max_num_segments":1
},
"shrink": {
"number_of_shards":1
}
}
},
"cold": {
"min_age": "1h",
"actions": {
"allocate": {
"require": {
"box_type": "warm"
}
}
}
},
"delete": {
"min_age": "2h",
"actions": {
"delete": {}
}
}
}
}
}Nama kebijakan tidak dapat diubah setelah dibuat.
Anda juga dapat membuat kebijakan di Konsol Kibana. Namun, satuan minimum untuk max_age di Kibana adalah jam. Jika menggunakan API, Anda dapat menentukan satuan minimum dalam detik.
Langkah 3: Buat templat indeks dan terapkan kebijakan ILM
Templat indeks secara otomatis menerapkan pengaturan, termasuk kebijakan ILM, ke indeks baru yang sesuai dengan pola tertentu.
Jalankan perintah berikut.
Pengaturan index.routing.allocation.require.box_type:"hot" memastikan indeks baru awalnya dibuat di hot node.
PUT _template/gamestabes_template
{
"index_patterns" : ["gamestabes-*"],
"settings": {
"index.number_of_shards": 5,
"index.number_of_replicas": 1,
"index.routing.allocation.require.box_type":"hot",
"index.lifecycle.name": "game-policy",
"index.lifecycle.rollover_alias": "gamestabes"
}
}Parameter:
index.routing.allocation.require.box_type: Menentukan atribut node yang harus dicocokkan oleh indeks baru.
index.lifecycle.name: Nama kebijakan ILM yang akan diterapkan.
index.lifecycle.rollover_alias: Alias yang digunakan untuk rollover.
Langkah 4: Buat indeks awal
Untuk menggunakan ILM dengan indeks rolling, Anda harus membuat indeks awal secara manual. Pastikan nama indeks mengikuti konvensi penamaan yang ditentukan.
Jalankan perintah berikut untuk membuat indeks dengan akhiran auto-increment dan mengatur is_write_index: true pada alias:
PUT gamestabes-000001
{
"aliases": {
"gamestabes":{
"is_write_index": true
}
}
}Agar fitur rollover berfungsi, nama indeks awal harus diakhiri dengan angka enam digit (misalnya, -000001). Indeks hasil rollover selanjutnya akan menambah angka tersebut.
Langkah 5: Verifikasi fungsionalitas ILM
Setelah mengonfigurasi ILM, verifikasi bahwa data berpindah dengan benar melalui tahapan siklus hidupnya.
Masukkan data ke indeks menggunakan alias.
PUT gamestabes/_doc/1 { "EU_Sales" : 3.58, "Genre" : "Platform", "Global_Sales" : 40.24, "JP_Sales" : 6.81, "Name" : "Super Mario Bros.", "Other_Sales" : 0.77, "Platform" : "NES", "Publisher" : "Nintendo", "Year_of_Release" : "1985", "na_Sales" : 29.08 }CatatanSistem secara berkala memeriksa kecocokan kebijakan ILM (default: setiap 10 menit, dapat dikonfigurasi melalui
indices.lifecycle.poll_interval). Ketika kondisi (misalnya,max_size,max_age,max_docs) terpenuhi, data akan berganti ke indeks baru, dan indeks saat ini akan memasuki fase berikutnya (warm).Filter indeks berdasarkan fase siklus hidup dan lihat detail indeks.
Di bilah navigasi kiri Kibana, klik Management.
Di bawah Elasticsearch, klik Index Management.
Filter indeks berdasarkan Lifecycle phase atau Lifecycle status untuk mengamati transisinya.

Klik nama indeks untuk melihat informasi dan status siklus hidupnya secara rinci.

Lihat distribusi data
Untuk memastikan indeks telah dipindahkan dengan benar ke warm node sesuai kebijakan Anda:
Kueri indeks dalam fase cold dan lihat konfigurasi indeks tersebut.

Jalankan Get shard information untuk mengkueri distribusi shard pada indeks cold.
GET _cat/shards?shrink-gamestables-000012Hasilnya menunjukkan bahwa indeks dalam fase cold berada di warm node:

Kelola kebijakan ILM
Setelah konfigurasi awal, Anda mungkin perlu memperbarui kebijakan yang ada atau beralih ke kebijakan baru.
Perbarui kebijakan yang ada
Ubah kebijakan
game-policyyang ada (misalnya, ubahmax_sizemenjadi3GB) lalu jalankan ulang perintahPUT /_ilm/policy/game-policy.
Lihat versi kebijakan yang diperbarui di Kibana.
Di bilah navigasi kiri, klik Management.
Di bagian Elasticsearch, klik Index Lifecycle Policies.
Amati nomor versi untuk game-policy. Nomor tersebut akan bertambah satu dari versi kebijakan sebelumnya.
CatatanKebijakan yang diperbarui mulai berlaku sejak event rollover berikutnya.
Beralih ke kebijakan ILM baru
Untuk menerapkan kebijakan baru sepenuhnya ke indeks, buat kebijakan baru lalu perbarui templat indeks.
Buat kebijakan ILM baru.
PUT /_ilm/policy/game-new { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "3GB", "max_age": "1d", "max_docs": 1000 } } }, "warm": { "min_age": "30m", "actions": { "forcemerge": { "max_num_segments":1 }, "shrink": { "number_of_shards":1 } } }, "cold": { "min_age": "1h", "actions": { "allocate": { "require": { "box_type": "warm" } } } }, "delete": { "min_age": "2h", "actions": { "delete": {} } } } } }Terapkan kebijakan ILM baru ke templat indeks dengan memperbarui
index.lifecycle.name:PUT _template/gamestabes_template { "index_patterns" : ["gamestabes-*"], "settings": { "index.number_of_shards": 5, "index.number_of_replicas": 1, "index.routing.allocation.require.box_type":"hot", "index.lifecycle.name": "game-new", "index.lifecycle.rollover_alias": "gamestabes" } }CatatanKebijakan baru akan berlaku mulai dari rollover berikutnya untuk indeks yang dibuat setelah pembaruan templat. Untuk memigrasikan indeks yang sudah ada ke kebijakan ILM baru, jalankan perintah
PUT <indexPatterns>/_settings(misalnya,PUT gamestabes-*/_settings). Untuk informasi lebih lanjut, lihat Switching policies for an index.
FAQ
Referensi
Create an index lifecycle management policy in Elasticsearch