18 votos

¿Elasticsearch: No asignado fragmentos, como solucionarlo?

Hola y gracias por leer!

Tengo un clúster ES con 4 nodos:

number_of_replicas: 1
search01 - master: false, data: false
search02 - master: true, data: true
search03 - master: false, data: true
search04 - master: false, data: true

Tuve que reiniciar search03, y cuando volvió, se reincorporó en el clúster no hay problema, pero a la izquierda 7 sin asignar fragmentos de la imposición sobre.

{
  "cluster_name" : "tweedle",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 4,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 15,
  "active_shards" : 23,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 7
}

Ahora mi agrupación es de color amarillo de estado. ¿Cuál es la mejor manera de resolver este problema?

  • Delete (eliminar) de los fragmentos?
  • Mover los fragmentos a otro nodo?
  • Asignar los fragmentos para el nodo?
  • Update 'number_of_replicas' 2?
  • Algo totalmente?

Curiosamente, cuando un nuevo índice se añadió, que el nodo comenzado a trabajar en ello y jugó bien con el resto de la agrupación, que acaba de salir de los no asignados fragmentos de la imposición sobre.

Siga a la pregunta: ¿estoy haciendo algo mal para hacer que esto suceda en el primer lugar? Yo no tengo mucha confianza en un grupo que se comporta de esta manera, cuando un nodo se reinicia. Gracias de antemano.

17voto

Spanky Puntos 778

OK, he resuelto esto con la ayuda de algunos ES de apoyo. Emita el comando siguiente a la API en todos los nodos (o los nodos que creen que es la causa del problema):

curl -XPUT 'localhost:9200/<index>/_settings' \
    -d '{"index.routing.allocation.disable_allocation": false}'

donde es el índice que creen ser el culpable. Si usted no tiene ninguna idea, sólo tiene que ejecutar en todos los nodos:

curl -XPUT 'localhost:9200/_settings' \
    -d '{"index.routing.allocation.disable_allocation": false}'

También he añadido esta línea a mi yml config y desde entonces, cualquier reinicios del servidor/servicio libre de problemas. Los fragmentos re-asignado inmediatamente.

FWIW, para responder a una frase muy buscado después de la pregunta, establecer MAX_HEAP_SIZE a 30 g, a menos que su máquina tiene menos de 60 g de RAM, caso en el cual establece que para la mitad de la memoria disponible.

4voto

Wilfred Hughes Puntos 3507

Forma explícita puede reasignar un fragmento a un nodo con el API de redireccionar

Supongamos que fragmento 4 del índice "mi-" está asignada, así que desea asignar al nodo search03:

curl -X POST \
    'http://localhost:9200/_cluster/reroute?pretty=true' \
    -d '{ "commands" : [ { "allocate" : { "index" : "my-index", "shard" : 4 , "node" : "search03", "allow_primary" : 1 }}]}'

0voto

Armstrongya Puntos 1

También me encuentro con esta situación y, finalmente, se corrigió.

En primer lugar, voy a discribe mi situación. Tengo dos nodos en ElasticSearch clúster, se puede encontrar uno al otro, pero cuando he creado un índice con la configuración de "number_of_replicas" : 2, "number_of_shards" : 5, ES mostrar la señal de color amarillo y unassigned_shards es 5.

El problema se produce porque el valor de number_of_replicas, cuando me establezca su valor en 1, todo está bien.

Espero que esta respuesta puede ayudar a alguien.

0voto

W. Andrew Loe III Puntos 308

Este script de bash poco será reasignar fuerza bruta, puede perder datos.

NODE="YOUR NODE NAME"
IFS=$'\n'
for line in $(curl -s 'localhost:9200/_cat/shards' | fgrep UNASSIGNED); do
  INDEX=$(echo $line | (awk '{print $1}'))
  SHARD=$(echo $line | (awk '{print $2}'))

  curl -XPOST 'localhost:9200/_cluster/reroute' -d '{
     "commands": [
        {
            "allocate": {
                "index": "'$INDEX'",
                "shard": '$SHARD',
                "node": "'$NODE'",
                "allow_primary": true
          }
        }
    ]
  }'
done

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X