DBAtlas · Atlas de operaciones de bases de datos

Reinicio rolling / actualización rolling (nodo a nodo, sin movimientos de shards innecesarios)

ElasticsearchClúster/Nodo

Comando

# 1) Disable replica allocation (only primaries are allocated):
PUT _cluster/settings
{
  "persistent": { "cluster.routing.allocation.enable": "primaries" }
}
# 2) Optional: stop indexing and flush to speed up recovery:
POST _flush
# 3) Stop one node, do the maintenance, start it; verify it joined:
GET _cat/nodes?v&h=name,version,node.role,master,heap.percent
# 4) Re-enable allocation:
PUT _cluster/settings
{
  "persistent": { "cluster.routing.allocation.enable": null }
}
# 5) Wait for green before moving to the next node:
GET _cluster/health?wait_for_status=green&timeout=10m

Qué hace

Indica el orden para reiniciar o actualizar los nodos de uno en uno evitando que las réplicas se vuelvan a copiar a otros nodos mientras un nodo está caído; cuando el nodo vuelve, los shards se recuperan rápidamente desde la copia local.

Cuándo usarlo

Al reiniciar nodos en secuencia por un parche del SO, un cambio de JVM/heap, un cambio en elasticsearch.yml o una actualización de versión menor/mayor.

Precaución

No pase al siguiente nodo sin esperar a green; con dos nodos caídos a la vez, pueden faltar todas las copias de un shard. Reinicie los nodos master-eligible al final y de uno en uno; si se pierde la mayoría, el clúster no puede elegir master. Si olvida volver a habilitar allocation.enable, las réplicas quedan sin asignar. Durante una actualización se actualizan primero los nodos de datos (primero frozen/cold, hot al final) y luego los masters.

Abrir en DBAtlas →

Relacionado