Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

elasticsearch - what to do with unassigned shards

my cluster is with yellow status because some shards are unassigned. what to do with this?

I tried set cluster.routing.allocation.disable_allocation = false to all indexes, but I think this don't work because I'm using version 1.1.1.

I also tried restarting all machines, but same happens.

Any idea?

EDIT :

  • Cluster stat :

    {    cluster_name: "elasticsearch",   status: "red",   timed_out: false,   number_of_nodes: 5,   number_of_data_nodes: 4,   active_primary_shards: 4689,   active_shards: 4689,   relocating_shards: 0,   initializing_shards: 10,   unassigned_shards: 758 } 
like image 252
user3175226 Avatar asked May 14 '14 13:05

user3175226


People also ask

How do you handle unassigned shards in Elasticsearch?

In this scenario, you have to decide how to proceed: try to get the original node to recover and rejoin the cluster (and do not force allocate the primary shard), or force allocate the shard using the Cluster Reroute API and reindex the missing data using the original data source, or from a backup.

What are unassigned shards in Elasticsearch?

Elasticsearch. Elasticsearch's shard allocation system can get complicated. When we create index, or have one of our nodes crashed, shards may go into unassigned state. Meaning, data is there but it is not assigned/replicated to a node to enable processing that shard.

How do I turn off shard allocation in Elasticsearch?

The new name of this setting is: cluster. routing. allocation. enable <code> Enable or disable allocation for specific kinds of shards: all - (default) Allows shard allocation for all kinds of shards.


1 Answers

There are many possible reason why allocation won't occur:

  1. You are running different versions of Elasticsearch on different nodes
  2. You only have one node in your cluster, but you have number of replicas set to something other than zero.
  3. You have insufficient disk space.
  4. You have shard allocation disabled.
  5. You have a firewall or SELinux enabled. With SELinux enabled but not configured properly, you will see shards stuck in INITIALIZING or RELOCATING forever.

As a general rule, you can troubleshoot things like this:

  1. Look at the nodes in your cluster: curl -s 'localhost:9200/_cat/nodes?v'. If you only have one node, you need to set number_of_replicas to 0. (See ES documentation or other answers).
  2. Look at the disk space available in your cluster: curl -s 'localhost:9200/_cat/allocation?v'
  3. Check cluster settings: curl 'http://localhost:9200/_cluster/settings?pretty' and look for cluster.routing settings
  4. Look at which shards are UNASSIGNED curl -s localhost:9200/_cat/shards?v | grep UNASS
  5. Try to force a shard to be assigned

    curl -XPOST -d '{ "commands" : [ {   "allocate" : {        "index" : ".marvel-2014.05.21",         "shard" : 0,         "node" : "SOME_NODE_HERE",        "allow_primary":true       }    } ] }' http://localhost:9200/_cluster/reroute?pretty 
  6. Look at the response and see what it says. There will be a bunch of YES's that are ok, and then a NO. If there aren't any NO's, it's likely a firewall/SELinux problem.

like image 115
Alcanzar Avatar answered Sep 23 '22 21:09

Alcanzar