mein Cluster hat einen gelben Status, da einige Scherben nicht zugewiesen sind. was soll ich damit machen?
Ich habe versucht, cluster.routing.allocation.disable_allocation = false
für alle Indizes festzulegen, aber ich denke, dass dies nicht funktioniert, da ich Version 1.1.1 verwende.
Ich habe auch versucht, alle Maschinen neu zu starten, aber das passiert auch.
Irgendeine Idee?
BEARBEITEN:
Clusterstat:
{
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
}
Bei diesen nicht zugewiesenen Shards handelt es sich tatsächlich um nicht zugewiesene Replikate Ihrer tatsächlichen Shards vom Master-Knoten.
Um diese Shards zuordnen zu können, müssen Sie eine neue Instanz von Elasticsearch ausführen, um einen sekundären Knoten für die Datenreplikate zu erstellen.
EDIT: Manchmal gehören die nicht zugewiesenen Shards zu gelöschten Indizes und machen sie zu Waisen-Shards, die niemals zugewiesen werden, egal ob Knoten hinzugefügt werden oder nicht. Aber hier ist es nicht der Fall!
Es gibt viele mögliche Gründe, warum keine Zuweisung erfolgt:
In der Regel können Sie folgende Probleme beheben:
curl -s 'localhost:9200/_cat/nodes?v'
. Wenn Sie nur einen Knoten haben, müssen Sie number_of_replicas
auf 0 setzen. (Siehe ES-Dokumentation oder andere Antworten).curl -s 'localhost:9200/_cat/allocation?v'
curl 'http://localhost:9200/_cluster/settings?pretty'
und suchen Sie nach cluster.routing
-Einstellungencurl -s localhost:9200/_cat/shards?v | grep UNASS
Versuchen Sie, einen Shard zuzuweisen
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
Sehen Sie sich die Antwort an und sehen Sie, was darin steht. Es wird eine Reihe von JA geben, die in Ordnung sind, und dann ein NEIN. Wenn es keine NEIN gibt, handelt es sich wahrscheinlich um ein Firewall/SELinux-Problem.
Dies ist ein häufiges Problem, das sich aus der Standardindexeinstellung ergibt, insbesondere wenn Sie versuchen, auf einem einzelnen Knoten zu replizieren. Um dies mit der Einstellung für vorübergehende Cluster zu beheben, führen Sie folgende Schritte aus:
curl -XPUT http://localhost:9200/_settings -d '{ "number_of_replicas" :0 }'
Aktivieren Sie anschließend das Cluster zur Neuzuweisung von Shards (Sie können dies jederzeit aktivieren, wenn alles gesagt und erledigt ist):
curl -XPUT http://localhost:9200/_cluster/settings -d '
{
"transient" : {
"cluster.routing.allocation.enable": true
}
}'
Jetzt lehnen Sie sich zurück und beobachten Sie, wie der Cluster die nicht zugewiesenen Replikat-Shards aufräumt. Wenn Sie möchten, dass dies für zukünftige Indizes wirksam wird, vergessen Sie nicht, die Datei elasticsearch.yml mit der folgenden Einstellung zu ändern und den Cluster abzubrechen:
index.number_of_replicas: 0
Das einzige, was für mich funktionierte, war das Ändern der number_of_replicas (ich hatte 2 Repliken, also habe ich es auf 1 geändert und dann wieder auf 2 geändert).
Zuerst:
PUT /myindex/_settings
{
"index" : {
"number_of_replicas" : 1
}
}
Dann:
PUT /myindex/_settings
{
"index" : {
"number_of_replicas" : 2
}
}
Die ersten beiden Punkte der Antwort von Alcanzar haben es für mich getan, aber ich musste hinzufügen
"allow_primary" : true
wie so
curl -XPOST http://localhost:9200/_cluster/reroute?pretty -d '{
"commands": [
{
"allocate": {
"index": ".marvel-2014.05.21",
"shard": 0,
"node": "SOME_NODE_HERE",
"allow_primary": true
}
}
]
}'
Bei neueren ES-Versionen sollte dies den Trick erfüllen (läuft in Kibana DevTools):
PUT /_cluster/settings
{
"transient" : {
"cluster.routing.rebalance.enable" : "all"
}
}
Dies kann jedoch die Ursache nicht beheben. In meinem Fall gab es viele nicht zugewiesene Shards, da die Standardreplikatengröße 1 betrug, aber eigentlich nur ein einzelner Knoten verwendet wurde. Also fügte ich meinem elasticsearch.yml
diese Zeile hinzu:
index.number_of_replicas: 0