2017-01-24 5 views
1

Wir haben eine elastische Suche Cluster mit 5 Datenknoten und 2 Master-Knoten. Der elastische Suchdienst auf einem Master-Knoten ist immer deaktiviert, so dass immer nur ein Master aktiv ist. Heute war der aktuelle Master-Knoten aus irgendeinem Grund ausgefallen. Wir haben den Dienst auf dem zweiten Masterknoten gestartet. Alle Datenknoten, die mit dem neuen Master verbunden sind, alle primären Shards wurden erfolgreich zugewiesen, aber alle Replikate wurden nicht zugewiesen und mir blieben fast 384 nicht zugewiesene Shards.Elastische Suche Master Disaster Recovery

Was soll ich jetzt tun, um sie zuzuordnen?

Was ist die beste Vorgehensweise und welche Schritte müssen unter solchen Umständen durchgeführt werden?

Es folgt, wie mein http://es-master-node:9200/_settings wie folgt aussieht: http://pastebin.com/mK1QBfP6

Wenn ich versuche, die Scherben manuell zuzuweisen, ich die folgende Fehlermeldung erhalten:

➜ Desktop curl -XPOST http://localhost:9200/_cluster/reroute\?pretty -d '{ 
    "commands": [ 
    { 
     "allocate": { 
     "index": "logstash-1970.01.18", 
     "shard": 1, 
     "node": "node-name", 
     "allow_primary": true 
     } 
    } 
    ] 
}' 
{ 
    "error" : { 
    "root_cause" : [ { 
     "type" : "illegal_argument_exception", 
     "reason" : "[allocate] allocation of [logstash-1970.01.18][1] on node {node-name}{vrVG4CBbSvubWHOzn2qfQA}{10.100.0.146}{10.100.0.146:9300}{master=false} is not allowed, reason: [YES(allocation disabling is ignored)][NO(more than allowed [85.0%] used disk on node, free: [13.671127301258165%])][YES(shard not primary or relocation disabled)][YES(target node version [2.2.0] is same or newer than source node version [2.2.0])][YES(no allocation awareness enabled)][YES(shard is not allocated to same node or host)][YES(allocation disabling is ignored)][YES(below shard recovery limit of [2])][YES(total shard limit disabled: [index: -1, cluster: -1] <= 0)][YES(node passes include/exclude/require filters)][YES(primary is already active)]" 
    } ], 
    "type" : "illegal_argument_exception", 
    "reason" : "[allocate] allocation of [logstash-1970.01.18][1] on node {node-name}{vrVG4CBbSvubWHOzn2qfQA}{10.100.0.146}{10.100.0.146:9300}{master=false} is not allowed, reason: [YES(allocation disabling is ignored)][NO(more than allowed [85.0%] used disk on node, free: [13.671127301258165%])][YES(shard not primary or relocation disabled)][YES(target node version [2.2.0] is same or newer than source node version [2.2.0])][YES(no allocation awareness enabled)][YES(shard is not allocated to same node or host)][YES(allocation disabling is ignored)][YES(below shard recovery limit of [2])][YES(total shard limit disabled: [index: -1, cluster: -1] <= 0)][YES(node passes include/exclude/require filters)][YES(primary is already active)]" 
    }, 
    "status" : 400 
} 

jede mögliche Hilfe geschätzt wird. So

Antwort

0

, hier sind die Dinge, die ich tat, die nicht zugewiesenen Scherben zuzuteilen:

Spawn 5 neue ES-DATA-Server und wartete auf sie, dem Cluster beizutreten. Sobald sie im Cluster war, habe ich das folgende Skript:

#!/bin/bash 
array=(node1 node2 node3 node4 node5) 
node_counter=0 
length=${#array[@]} 
IFS=$'\n' 
for line in $(curl -s 'http://ip-adress:9200/_cat/shards'| fgrep UNASSIGNED); do 
    INDEX=$(echo $line | (awk '{print $1}')) 
    SHARD=$(echo $line | (awk '{print $2}')) 
    NODE=${array[$node_counter]} 
    echo $NODE 
    curl -XPOST 'http://IP-adress:9200/_cluster/reroute' -d '{ 
     "commands": [ 
     { 
      "allocate": { 
       "index": "'$INDEX'", 
       "shard": '$SHARD', 
       "node": "'$NODE'", 
       "allow_primary": true 
      } 
     } 
     ] 
    }' 
    node_counter=$(((node_counter)%length +1)) 
done 

die nicht zugewiesenen Scherben auf den neuen Datenknoten zuweisen. Es dauerte ungefähr 5 bis 6, bis sich der Cluster wieder erholte. Obwohl das Hack ist, würde eine relevante Antwort mehr Sinn machen.

Im Folgenden sind die offenen Fragen sind:

  • Die Scherben auf den alten Knoten, die bereits dort waren, warum ES-Meister nicht erkennen, dass?
  • Wie können wir explizit ES-MASTER stellen die bereits vorhandene Datenknoten zu scannen und Informationen von ihnen zu erhalten (über ihren aktuellen Zustand, Repliken sie haben, Scherben, die sie enthalten, usw.)