2017-12-27 9 views
0

Ich habe gerade meinen Cluster von 5.6 auf 6.1 aktualisiert. Ich habe eine rollende Aktualisierung wie die documentation angegeben. Es sieht so aus, als wäre eine Einstellung, die ich verwendet habe, in 6.1 nicht mehr verfügbar. Das wäre in Ordnung gewesen, aber jetzt kann ich nicht einmal meine Shard-Zuweisung aktivieren, also wird jetzt mein letzter Knoten seine Shards nicht zuweisen. etwas so einfach wie dies zu tun:Elasticsearch - So entfernen Sie festsitzende dauerhafte Einstellungen nach dem Upgrade

curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "persistent" : { 
     "cluster.routing.allocation.enable" : "all" 
    } 
} 

Ergebnisse in dieser:

{ 
    "error" : { 
    "root_cause" : [ 
     { 
     "type" : "remote_transport_exception", 
     "reason" : "[inoreader-es4][92.247.179.253:9300][cluster:admin/settings/update]" 
     } 
    ], 
    "type" : "illegal_argument_exception", 
    "reason" : "unknown setting [indices.store.throttle.max_bytes_per_sec] did you mean [indices.recovery.max_bytes_per_sec]?" 
    }, 
    "status" : 400 
} 

Egal welche Einstellung ich versuche ich immer, diesen Fehler zu ändern. Ja, ich habe indices.store.throttle.max_bytes_per_sec als persistente Einstellung einmal in 5.x eingestellt, und ich bin OK damit, es jetzt auf einen neuen Namen zu setzen, aber wie kann ich es sogar entfernen? Es ist nicht in elasticsearch.yml.

Antwort

2

Sie müssen diesen Wert aufheben. Wenn Sie noch auf der alten Version sind, können Sie den folgenden Befehl ein (in 5,0 Entschärfen mit null hinzugefügt wurde) verwenden:

PUT _cluster/settings 
{ 
    "persistent": { 
    "indices.store.throttle.max_bytes_per_sec": null 
    } 
} 

Dies wird jedoch mit einem „persistent Einstellung fail [indices.store.throttle.max_bytes_per_sec] wird in Ihrem Cluster nicht erkannt, wenn Sie bereits ein Upgrade durchgeführt haben.

Zur Zeit (Elasticsearch Version 6.1.1) wird die entfernte Einstellung unter archived.indices.store.throttle.max_bytes_per_sec archiviert. Sie können diese entfernen und andere archi Einstellung mit:

PUT _cluster/settings 
{ 
    "persistent": { 
    "archived.*": null 
    } 
} 

Allerdings gibt es a bug that only lets you unset archived settings before you change any other settings.

Wenn Sie bereits andere Einstellungen vorgenommen haben und von diesem Fehler betroffen sind, können Sie nur noch einmal auf Version 5.6 zurückstufen, die Konfiguration aufheben (Befehl oben in dieser Antwort) und dann das Upgrade erneut durchführen. Es ist wahrscheinlich genug, dies auf einem Knoten zu tun (alle anderen zu stoppen), solange es der Master ist und alle anderen Knoten diesem Master beitreten und seinen korrigierten Cluster-Zustand akzeptieren. Stellen Sie sicher, dass Sie auf jeden Fall einen Schnappschuss machen.

Für zukünftige Versionen des archived.* Verhalten wird wahrscheinlich wie angegeben in the ticket ändern (obwohl es jetzt gerade in der Planungsphase ist):

[...] wir sollten nicht unbekannt und gebrochene Cluster-Einstellungen archivieren. Stattdessen sollten wir den Clusterstatus nicht wiederherstellen können. Die Lösung für Benutzer in einem Upgrade-Fall wäre Rollback auf die vorherige Version, Adresse die Einstellungen, die in der nächsten großen -Version unbekannt oder gebrochen wären, und dann mit dem Upgrade fortfahren.

manuell bearbeiten oder auch den Cluster-Zustand auf der Festplatte zu löschen klingt sehr riskant: Der Cluster-Zustand eine Vielzahl von Informationen (Check für sich selbst mit GET /_cluster/state) wie Vorlagen enthält, Indizes, Routing-Tabelle, ... Auch wenn Sie Wenn Sie die Daten der Datenknoten verloren haben, aber den Clusterstatus verloren haben, können Sie nicht auf Ihre Daten zugreifen (die "Karte", wie Indizes aus den Shards gebildet werden, fehlt). Wenn ich mich recht erinnere, zwischenspeichern die Datenknoten in neueren ES-Versionen den Clusterstatus und versuchen, dies wiederherzustellen, aber das ist ein letzter Ausweg, und ich würde mich nicht darauf verlassen wollen. Ich bin mir auch nicht sicher, ob das nicht auch deine schlechte Einstellung zurückbringt.

PS: Ich kann das kostenlose upgrade assistant von 5.6 bis 6.x empfehlen.

+0

Ja, das Setzen dieser (und anderer temporärer oder permanenter Einstellungen) auf den Cluster schlägt mit der gleichen Meldung fehl. Das sind sehr schlechte Nachrichten ... mein Cluster ist 8 TB groß und ich mag die Idee, es herunterzustufen, wirklich nicht ... Ich denke daran, alle Knoten herunterzufahren, um die Cluster-Statusdatei in jedem zu löschen. Natürlich werde ich es zuerst unterstützen. Ich weiß, dass die Einstellung dort gespeichert ist, aber es ist eine Binärdatei und ich fühle mich nicht wohl dabei, sie zu bearbeiten. Denken Sie, dass es sicher ist, die Cluster-Statusdatei zu löschen? Werden die Master-Knoten es ohne diese lästige dauerhafte Einstellung neu erstellen? Vielen Dank! – Jacket

+0

Ich habe meine Antwort erweitert: Vielleicht können Sie einfach einen einzelnen Knoten herunterstufen und daraus Ihre Magie entwickeln. Und seien Sie vorsichtig mit dem Cluster-Zustand - das ist wirklich lebenswichtige Information für jeden Cluster und muss auch beibehalten und gesichert werden. – xeraa

+0

Vielen Dank für die Hilfe bis jetzt! Ich habe gerade diese Lösung ausprobiert - alle Knoten gestoppt, einen Master-fähigen Knoten heruntergestuft, die Einstellung aufgehoben und sie erneut aktualisiert. Es weigerte sich jedoch zu starten - "konnte nicht lesen [id: 84, legacy: false, file: /home/elasticsearch/nodes/0/_state/global-84.st] ' "Indexmuster dürfen nicht null oder leer sein; wurde null ". Ich musste manuell eine Zustandsdatei von einem anderen Knoten kopieren, damit ich meinen Cluster zum Leben erwecken kann ... Natürlich ist die Einstellung wieder da, aber umbenannt ... unbekannte Einstellung [archived.indices.store.throttle.max_bytes_per_sec]. Ich werde es später auf einem anderen Knoten erneut versuchen. – Jacket

Verwandte Themen