全部产品
Search
文档中心

Elasticsearch:Distribusi data panas yang tidak merata pada node

更新时间:Jul 06, 2025

Elasticsearch secara merata mengalokasikan shard ke node data dan menggunakan hash map untuk merutekan dokumen secara merata ke shard. Namun, dalam beberapa kasus, beberapa node mungkin menyimpan lebih banyak data panas dibandingkan yang lain, sehingga menyebabkan beban tinggi pada node tersebut. Untuk mengatasi masalah ini, Anda dapat memulai ulang kluster atau secara manual memigrasikan shard untuk mengalokasikan ulang shard. Topik ini menjelaskan cara memigrasikan shard secara manual.

Deskripsi masalah

  • Node dengan beban tinggi menyimpan sejumlah besar shard dengan atribut yang sama. Sebagai contoh, sebuah node hanya menyimpan shard primer.
  • Node dengan beban tinggi menyimpan lebih banyak shard untuk indeks bisnis dibandingkan node lainnya.

Tindakan pencegahan

  • Migrasi shard manual hanya merupakan solusi sementara untuk beban tinggi pada node. Jika beberapa node absen dari kluster dalam waktu singkat dan shard dialokasikan ulang, masalah ini mungkin terjadi lagi. Oleh karena itu, sebelum memigrasikan shard, kami menyarankan agar Anda mengoptimalkan alokasi shard berdasarkan petunjuk yang diberikan di Beban Tidak Seimbang pada Kluster.
  • Jika shard yang menyimpan data panas dialokasikan secara merata tetapi kluster berjalan dengan beban tinggi, kami menyarankan agar Anda memperbarui konfigurasi kluster.

Solusi

  1. Nonaktifkan alokasi shard.
    PUT /_cluster/settings
    {
      "transient" : {
         "cluster.routing.allocation.enable" : "none"
      }
    }
    Penting Perintah di atas hanya digunakan untuk sementara menonaktifkan alokasi shard. Setelah shard dimigrasikan, Anda harus mengaktifkan kembali alokasi shard. Untuk mengaktifkan alokasi shard, jalankan perintah PUT /_cluster/settings dengan cluster.routing.allocation.enable disetel ke all.
  2. Migrasikan shard secara manual.
    Dalam contoh ini, Shard 3 dari indeks index_parkingorder_v1 dimigrasikan dari node dengan alamat IP 192.168.130.77 ke node dengan alamat IP 192.168.130.78.
    POST /_cluster/reroute
    {
     "commands" : [
      {
       "move" : {
        "index" : "index_parkingorder_v1", 
        "shard" : 3,
        "from_node" : "192.168.130.77", 
        "to_node" : "192.168.130.78"
       }
      }
     ]
    }
    Catatan
    • Saat memigrasikan shard dari suatu indeks ke node, pastikan bahwa node tersebut tidak menyimpan shard yang termasuk dalam indeks yang sama atau memiliki nomor urutan yang sama. Sebagai contoh, Replica Shard 3 dari suatu indeks ada di Node A. Dalam hal ini, Primary Shard 3 dari indeks tersebut tidak dapat dimigrasikan ke Node A.
    • Untuk informasi lebih lanjut tentang cara memigrasikan shard secara manual, lihat cluster-reroute.
  3. Periksa status alokasi shard.
    GET _cat/shards?v
    Jika perintah berhasil dijalankan, hasil seperti yang ditunjukkan pada gambar berikut dikembalikan.View the shard migration status
  4. Setelah shard dimigrasikan, aktifkan alokasi shard.
    PUT /_cluster/settings
    {
     "transient" : {
      "cluster.routing.allocation.enable" : "all"
     }
    }