DBAtlas · Atlas de operaciones de bases de datos

Clúster Elasticsearch en red/yellow y shards sin asignar

Síntoma

_cluster/health 'red' o 'yellow'; shards sin asignar; lecturas/escrituras restringidas o datos inaccesibles.

1. Color y causa

yellow = hay shards réplica sin asignar (los datos están, la durabilidad se reduce). red = falta al menos un shard PRIMARIO (esos datos son inaccesibles). Determine primero cuál es el caso y por qué.

Elasticsearch

GET _cluster/health?level=indices
GET _cluster/allocation/explain

2. Liste los shards sin asignar y el motivo

La columna unassigned.reason indica la causa raíz (NODE_LEFT, ALLOCATION_FAILED, DISK, etc.).

Elasticsearch

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

3. Corrija las causas habituales

1) Disk watermark → por encima de low, el nodo no recibe nuevos shards; en flood_stage, los índices pasan a solo lectura. 2) Un nodo cayó / salió. 3) La asignación quedó deshabilitada. 4) Número de réplicas > número de nodos elegibles.

4. Corrija

Desbloquee según la causa que corresponda.

Elasticsearch

# If disk space was freed, remove the read-only block (7.4+ also lifts it automatically once below the high watermark):
PUT _all/_settings {"index.blocks.read_only_allow_delete": null}
# If allocation was left restricted, return it to the default (all):
PUT _cluster/settings {"persistent":{"cluster.routing.allocation.enable":null}}
# Retry failed allocations:
POST _cluster/reroute?retry_failed=true

5. Si sigue en rojo y el primario realmente se ha perdido

Restaure el índice afectado desde un snapshot o reindexe desde los datos de origen (_reindex). Permanente: alertas de disk watermark, un número de réplicas adecuado (≥1) y monitoreo de la salud de los nodos.

Abrir en DBAtlas →