全部产品
Search
文档中心

Elasticsearch:Error restart atau pembaruan kluster

更新时间:Mar 01, 2026

Saat melakukan restart atau memperbarui kluster Elasticsearch, operasi tersebut dapat gagal dengan error berikut:

Operasi tidak dapat dilakukan karena kluster tidak sehat atau berisi indeks dalam status close. Kami menyarankan agar Anda mengulangi operasi setelah kluster menjadi sehat atau indeks diaktifkan kembali.

Error ini terjadi ketika kluster memenuhi satu atau beberapa kondisi berikut:

  • Kluster berisi indeks dalam status close.

  • Status kesehatan kluster adalah red atau yellow.

  • Kluster sehat tetapi heavily loaded.

Bagian berikut menjelaskan cara mendiagnosis dan mengatasi setiap kondisi tersebut.

Indeks yang ditutup (Closed indexes)

Indeks dalam status close akan menghalangi restart dan pembaruan kluster. Jalankan perintah berikut untuk memeriksa status indeks:

GET /_cat/indices?v

Contoh output:

health status index       uuid                   pri rep docs.count docs.deleted store.size pri.store.size dataset.size
green  open   my-index-01 30h1EiMvS5uAFr2t5CEVoQ   5   1      820            0       14mb           7mb         7mb
       close  my-index-02 BJxfAErbTtu5HBjIXJV_7A   1   1
green  open   my-index-03 _8C6MIXOSxCqVYicH3jsEA   1   1        7            0     24.3kb        12.1kb       12.1kb

Pada contoh ini, my-index-02 berada dalam status close. Buka kembali indeks tersebut dengan perintah berikut:

POST /my-index-02/_open

Ganti my-index-02 dengan nama indeks yang ditutup. Jika terdapat beberapa indeks yang ditutup, buka masing-masing secara individual sebelum mencoba kembali operasi restart atau pembaruan.

Status kluster red atau yellow

Status red berarti satu atau lebih primary shard tidak ditugaskan (unassigned). Pencarian dan pengindeksan pada indeks yang terdampak mungkin gagal. Status yellow berarti semua primary shard telah ditugaskan, tetapi satu atau lebih replica shard tidak ditugaskan, sehingga meningkatkan risiko kehilangan data.

Mendiagnosis masalah

Periksa status kesehatan kluster:

GET /_cat/health?v

Jika statusnya red atau yellow, identifikasi shard yang tidak ditugaskan:

GET /_cat/shards?v&h=index,shard,prirep,state,node,unassigned.reason&s=state

Untuk memahami alasan spesifik mengapa suatu shard tidak dapat dialokasikan, jalankan:

GET _cluster/allocation/explain
Perintah ini akan mengembalikan error jika tidak ada shard yang tidak ditugaskan di kluster. Hal ini merupakan perilaku yang diharapkan.

Contoh output:

{
  "index": "my-index-02",
  "shard": 0,
  "primary": true,
  "current_state": "unassigned",
  "can_allocate": "no",
  "allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes"
}

Gunakan bidang allocate_explanation untuk mengidentifikasi akar penyebabnya. Bagian berikut mencakup penyebab umum beserta solusinya.

Retry alokasi shard telah habis

Shard dialokasikan secara otomatis dengan maksimal 5 kali retry. Jika seluruh retry telah habis, alokasikan ulang shard secara manual:

POST /_cluster/reroute?retry_failed=true

Primary dan replica shard berada di node yang sama

Jika penjelasan alokasi berisi pesan "the shard cannot be allocated to the same node on which a copy of the shard already exists", artinya primary dan replica shard dari suatu indeks ditugaskan ke node yang sama. Untuk mengatasinya:

  1. Atur jumlah replica shard menjadi 0:

       PUT /my-index/_settings
       {
         "index": {
           "number_of_replicas": 0
         }
       }
  2. Setelah status kluster kembali menjadi green, atur kembali jumlah replica menjadi 1:

       PUT /my-index/_settings
       {
         "index": {
           "number_of_replicas": 1
         }
       }

Batas maksimum alokasi shard simultan tercapai

Jika kluster telah mencapai batas alokasi shard-nya, tunggu hingga alokasi saat ini selesai. Jika shard masih belum ditugaskan setelah beberapa menit, periksa penjelasan alokasi:

GET _cluster/allocation/explain

Node terputus (Disconnected nodes)

Satu atau beberapa node mungkin terputus dari kluster. Periksa status node:

GET _cat/nodes?v

Jika ada node yang tidak muncul dalam output, restart node tersebut melalui Konsol Elasticsearch.

Penggunaan disk tinggi

Elasticsearch tidak akan mengalokasikan shard ke node yang penggunaan disk space-nya melebihi 85%. Setelah penggunaan disk pada node yang terdampak turun di bawah 85%, restart node tersebut untuk memulihkan alokasi shard secara normal.

Untuk memeriksa penggunaan disk per node:

GET _cat/allocation?v

Untuk mengurangi penggunaan disk:

  • Hapus indeks historis yang tidak lagi diperlukan.

  • Tingkatkan kapasitas disk node.

  • Sementara waktu, atur jumlah replica shard menjadi 0.

Penggunaan heap memory tinggi

Ketika penggunaan heap memory tinggi, kluster mungkin menangguhkan operasi. Untuk membebaskan memori:

  • Terapkan pembatasan kecepatan (throttling) untuk mengurangi traffic masuk.

  • Tutup indeks historis untuk mengurangi konsumsi memori.

Penyebab lainnya

Jika tidak ada penyebab di atas yang berlaku, periksa utilisasi CPU dan penggunaan heap memory di Konsol Elasticsearch. Untuk shard yang tidak ditugaskan, jalankan perintah berikut untuk penjelasan lebih rinci:

GET _cluster/allocation/explain

Beban kluster tinggi (Heavy cluster load)

Meskipun kluster sehat (status green), operasi restart atau pembaruan dapat gagal jika kluster sedang heavily loaded. Periksa metrik berikut untuk mengidentifikasi dan mengatasi masalah beban.

Penggunaan disk mencapai 85%

Diagnosis:

  • Periksa data pemantauan penggunaan disk di Konsol Elasticsearch.

  • Jalankan GET _cat/allocation untuk melihat alokasi disk per node.

  • Jalankan GET _cluster/allocation/explain untuk memeriksa masalah alokasi.

  • Periksa log kluster untuk peringatan terkait disk.

Dampak: Saat penggunaan disk mencapai 85%, Elasticsearch berhenti mengalokasikan shard baru ke node yang terdampak.

Solusi:

  • Hapus indeks historis yang tidak lagi diperlukan.

  • Tingkatkan kapasitas disk.

  • Sementara waktu, atur jumlah replica shard menjadi 0.

Setelah tindakan diambil, verifikasi bahwa penggunaan disk telah turun di bawah 85% melalui data pemantauan.

Utilisasi CPU mencapai 85%

Diagnosis:

  • Periksa data pemantauan utilisasi CPU di Konsol Elasticsearch.

  • Tinjau informasi hot thread untuk mengidentifikasi operasi yang intensif CPU.

Dampak: Utilisasi CPU tinggi menurunkan stabilitas kluster.

Solusi:

  • Periksa QPS baca dan QPS tulis di data pemantauan, lalu kurangi traffic jika memungkinkan.

  • Lakukan scale out kluster dengan menambahkan data node.

  • Tingkatkan konfigurasi kluster menggunakan tipe instans yang lebih besar.

Penggunaan heap memory pada atau di atas 75%

Diagnosis:

  • Periksa data pemantauan penggunaan heap memory di Konsol Elasticsearch.

  • Tinjau log kluster untuk peringatan garbage collection (GC).

  • Periksa metrik old gc collection count dan old gc collecting.ms untuk mendeteksi jeda GC yang panjang.

Dampak: Penggunaan heap memory tinggi menurunkan stabilitas kluster dan dapat menyebabkan operasi hang.

Solusi:

  • Kurangi traffic baca dan tulis.

  • Tingkatkan konfigurasi kluster.

  • Tutup indeks historis untuk membebaskan heap memory.

Beban node melebihi jumlah vCPU

Diagnosis:

  • Periksa metrik NodeLoad_1m(value) di Konsol Elasticsearch.

  • Nilai yang lebih besar dari jumlah vCPU pada node menunjukkan beban berat.

Dampak: Node yang kelebihan beban dapat menjadi tidak responsif dan memengaruhi operasi kluster.

Solusi:

  • Periksa QPS baca, QPS tulis, dan throughput disk di data pemantauan.

  • Kurangi traffic baca atau tulis.

  • Lakukan scale out kluster dengan menambahkan data node.

  • Tingkatkan konfigurasi kluster.

Referensi