How to gracefully stop or reload a node?

AFAIK, when you update the elasticsearch.yml configuration file, the only way to apply the changes is to restart your node.

Thus, does it exist a gracefully stop/reload process for a node?

I mean something like tagging a node as "Going to enter into maintenance". This should:

  • stop forwarding requests to this node
  • move shards, hosted by this node, to other ones

This could be useful in case some indexes have a replication factor of 0 and some primary shards are located on the node that is going to be stopped (i.e. avoid incomplete indexes during the maintenance procedure).

This is doable with Shard Allocation Filtering. You can exclude the node (via tags or IP) from your active indices, which will cause any allocated shards on that node to migrate away.

There's not really a way to stop requests going to the node per-se, but once all the shards migrate away from the node it will stop receiving forwarded requests. The other nodes will know it contains no shards, and won't have any need to forward requests to the node.

It won't stop requests that are directed at the node by external services (clients, applications, etc), so you'll have to stop those manually, or just let them bounce when the node goes down.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.