Das automatische Shard-Rebalancing entspricht Einschränkungen und Regeln wie Zuordnungsfilterung und erzwungener Awareness, was zu einem möglichst effizienten und ausgewogenen Cluster führt.
HINWEIS: Verwechseln Sie die Shard-Neuzuweisung nicht mit der Neuverteilung, bei der nicht zugewiesene Shards gefunden und auf die Knoten verschoben werden, in denen sie sich befinden. Das Rebalancing nimmt zugewiesene Shards und verschiebt sie gleichmäßig auf verschiedene Nodes, um die gleichmäßige Verteilung der Shards pro Node zu erreichen.
So aktivieren Sie die automatische Neuverteilung
Um das automatische Cluster-Rebalancing in Elasticsearch zu aktivieren, können wir den PUT-Request to_cluster API-Endpunkt verwenden und die benötigten Einstellungen hinzufügen add.
Folgende Einstellungen sind für das dynamische Shard-Rebalancing verfügbar:
- Cluster.Routing.ausgleichen.aktivieren: Steuert die automatische Neuverteilung für verschiedene Shard-Typen, wie zum Beispiel:
- Alle: Sets ermöglichen Shard-Rebalancing für alle Indizes.
- Keiner: Deaktiviert Shard-Neugewichtung für alle Indizes.
- Repliken: Nur die Neuverteilung von Replikat-Shards ist zulässig.
- Primär: Nur primäres Shard-Rebalancing ist zulässig.
- Cluster.Routing.Zuweisung.allow_rebalance: Legt den Wert für das Shard-Rebalancing fest. Zu den Optionen gehören:
- Immer: Ermöglicht das Rebalancing auf unbestimmte Zeit.
- Indizes_primaries_active: Ermöglicht die Neuverteilung nur, wenn alle primären Shards im Cluster zugewiesen sind.
- Indizes_all_active: Ermöglicht eine Neuverteilung, wenn nur die Shards im Cluster zugewiesen werden. Dies umfasst sowohl die primären als auch die Replikat-Shards.
- Cluster.Routing.Zuweisung.Cluster.gleichzeitig.neu ausbalancieren: Diese Option legt die Anzahl gleichzeitiger Rebalancings fest, die im Cluster zulässig sind. Der Standardwert ist 2.
Betrachten Sie die unten stehende Anfrage, um die automatische Shard-Neuverteilung für den Cluster zuzulassen.
PUT /_cluster/settings"beständig":
"Cluster.Routing.ausgleichen.enable": "primär",
"Cluster.Routing.Zuweisung.allow_rebalance": "immer" ,
"Cluster.Routing.Zuweisung.cluster_concurrent_rebalance":"2"
Das Folgende ist der cURL-Befehl:
curl -XPUT "http://localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d' "persistent": "cluster.Routing.ausgleichen.enable": "primaries","cluster.Routing.Zuweisung.allow_rebalance": "immer" ,"Cluster.Routing.Zuweisung.cluster_concurrent_rebalance":"2" 'Dieser Befehl sollte eine Antwort zurückgeben, da das JSON-Objekt die aktualisierten Einstellungen bestätigt.
„bestätigt“: wahr,
"dauerhaft" :
"cluster":
"Routing" :
"rebalance" :
"aktivieren" : "primär"
,
"Zuweisung" :
"allow_rebalance" : "immer",
"cluster_concurrent_rebalance" : "2"
,
"vorübergehend" :
Manueller Index-Neuausgleich
Sie können einen Shard auch manuell für einen bestimmten Index neu ausbalancieren. Ich würde diese Option nicht empfehlen, da die Standard-Rebalancing-Optionen von Elasticsearch sehr effizient sind.
Sollte dennoch ein manuelles Rebalancing erforderlich sein, können Sie die folgende Anfrage verwenden:
„bestätigt“: wahr,
"dauerhaft" :
"cluster":
"Routing" :
"rebalance" :
"aktivieren" : "primär"
,
"Zuweisung" :
"allow_rebalance" : "immer",
"cluster_concurrent_rebalance" : "2"
,
"vorübergehend" :
Der cURL-Befehl lautet:
curl -XPOST "http://localhost:9200/_cluster/reroute" -H 'Content-Type: application/json' -d' "commands" : [ "move" : ana" " "shard" : 0, "from_node" : "instance-0000000001", "to_node" : "instance-0000000002" ]'HINWEIS: Denken Sie daran, dass Elasticsearch bei einer manuellen Neuverteilung die Shards möglicherweise automatisch verschiebt, um die bestmögliche Neuverteilung zu gewährleisten.
Fazit
In dieser Anleitung wurden Sie durch die Aktualisierung und Änderung der Einstellungen für einen Elasticsearch-Cluster geführt, um das automatische Shard-Rebalancing zu aktivieren. Der Artikel behandelte auch das manuelle Rebalancing, wenn Sie es benötigen you.