Cluster single node
Penyebab paling sering. Elasticsearch menolak menaruh replica di node yang sama dengan primary, jadi pada satu node semua replica pasti unassigned.
Status yellow adalah peringatan paling umum di Elasticsearch. Artinya semua data masih aman dan bisa diakses, tetapi sebagian replica shard belum teralokasi sehingga cluster kehilangan redundansi. Panduan ini membahas arti yellow, penyebab, langkah diagnosis, dan solusinya melalui nusabet88.
Elasticsearch memakai tiga warna kesehatan cluster: green, yellow, dan red. Warna ditentukan oleh kondisi shard.
| Status | Primary shard | Replica shard | Dampak |
|---|---|---|---|
| Green | Semua aktif | Semua aktif | Sehat penuh, redundansi terjaga. |
| Yellow | Semua aktif | Sebagian/seluruhnya unassigned | Data utuh & bisa diakses, tetapi tanpa salinan cadangan. |
| Red | Ada yang hilang | — | Sebagian data tidak tersedia. |
Penyebab paling sering. Elasticsearch menolak menaruh replica di node yang sama dengan primary, jadi pada satu node semua replica pasti unassigned.
Jika disk node melewati high watermark (default 90%), alokasi shard baru ke node tersebut diblokir sehingga replica gantung.
Setelah maintenance, cluster.routing.allocation.enable kadang tertinggal di none atau primaries, sehingga replica tak pernah dialokasikan.
Menyetel number_of_replicas lebih besar dari jumlah data node yang tersedia membuat sebagian replica tidak punya tempat.
Mulai dari ringkasan cluster. Jalankan perintah ini di konsol REST nusabet88.
# ringkasan kesehatan cluster
GET /_cluster/health?pretty
Contoh keluaran saat yellow:
{
"cluster_name": "nusabet-prod",
"status": "yellow",
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 12,
"active_shards": 12,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 12,
"active_shards_percent_as_number": 50.0
}
GET /_cluster/health?level=indices&pretty agar tahu index mana yang yellow.# daftar shard + alasan unassigned
GET /_cat/shards?v&h=index,shard,prirep,state,node,unassigned.reason
Contoh keluaran:
index shard prirep state node unassigned.reason logs-2026.06 0 p STARTED es-01 logs-2026.06 0 r UNASSIGNED INDEX_CREATED orders 0 p STARTED es-01 orders 0 r UNASSIGNED CLUSTER_RECOVERED
| unassigned.reason | Arti |
|---|---|
INDEX_CREATED | Index baru dibuat, replica belum dapat node. |
CLUSTER_RECOVERED | Cluster baru restart, replica belum pulih. |
NODE_LEFT | Node penyimpan shard meninggalkan cluster. |
ALLOCATION_FAILED | Percobaan alokasi gagal (cek allocation explain). |
NODE_LEFT / disk | Tersangkut watermark disk pada node tujuan. |
Perintah allocation/explain memberi penjelasan paling presisi kenapa sebuah shard tidak bisa dialokasikan.
# penjelasan shard unassigned pertama yang ditemukan
GET /_cluster/allocation/explain
{
"index": "orders",
"shard": 0,
"primary": false
}
Contoh penjelasan untuk single node:
{
"can_allocate": "no",
"allocate_explanation": "cannot allocate because allocation is not permitted to any of the nodes",
"node_allocation_decisions": [{
"node_name": "es-01",
"deciders": [{
"decider": "same_shard",
"decision": "NO",
"explanation": "a copy of this shard is already allocated to this node"
}]
}]
}
same_shard NO mengonfirmasi penyebab single node: tidak ada node lain untuk menampung replica.# hapus replica untuk seluruh index PUT /_all/_settings { "index": { "number_of_replicas": 0 } } # atau jadikan default untuk index baru via template PUT /_index_template/single-node { "index_patterns": ["*"], "template": { "settings": { "number_of_replicas": 0 } } }
Cara terbaik di produksi: tambahkan satu atau lebih data node. Begitu node baru bergabung, Elasticsearch otomatis mengalokasikan replica dan status berubah ke green tanpa intervensi.
# cek nilai sekarang GET /_cluster/settings?include_defaults=true&filter_path=**.allocation.enable # aktifkan alokasi semua shard PUT /_cluster/settings { "transient": { "cluster.routing.allocation.enable": "all" } }
# paksa coba ulang shard ALLOCATION_FAILED
POST /_cluster/reroute?retry_failed=true
number_of_replicas dengan jumlah data node: replica = node - 1 untuk redundansi penuh tanpa shard gantung.high watermark 90% yang memblokir alokasi.cluster.routing.allocation.enable ke all.Tidak langsung berbahaya. Status yellow berarti semua primary shard aktif sehingga data utuh dan dapat dibaca/ditulis, tetapi sebagian replica shard belum teralokasi. Risikonya adalah ketahanan (resilience): jika node yang menyimpan primary mati saat status yellow, data shard tersebut bisa hilang karena tidak ada salinan.
Karena Elasticsearch tidak pernah menempatkan replica shard pada node yang sama dengan primary-nya. Pada cluster satu node, semua replica otomatis unassigned sehingga status tetap yellow. Solusinya tambah node, atau set number_of_replicas menjadi 0 untuk lingkungan dev/single node.
Jalankan GET /_cat/shards?v&h=index,shard,prirep,state,unassigned.reason lalu cari baris dengan state UNASSIGNED. Untuk akar masalahnya gunakan GET /_cluster/allocation/explain yang menjelaskan persis kenapa shard tidak bisa dialokasikan.
Aman untuk lingkungan development atau single node, tetapi tidak disarankan untuk produksi karena Anda kehilangan redundansi. Di produksi sebaiknya tambah data node agar replica bisa dialokasikan ke node berbeda.
Status yellow sering dipicu disk yang melewati watermark. Pelajari cara mengatasi disk watermark dan flood stage agar shard kembali teralokasi.
Panduan Disk Watermark