Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?
Wir untersuchen einige Leistungsprobleme mit unserem ES-Cluster. Wir haben die Shard-Verteilung auf Datenknoten untersucht. Ich weiß, dass es einen Rat gibt, Shards gleichmäßig auf die Knoten zu verteilen - und hier ist meine Frage:
Für den Cluster mit 8 Datenknoten haben wir einige Indizes mit 2 primären Shards und 3 Replikaten (also insgesamt 8 Shards). Wir haben auch einige Indizes mit 1 primären Shard und 3 Replikaten (also insgesamt 4).
Meine Frage ist - kann dieses Setup als "gleichmäßig verteilt" betrachtet werden? Wir dachten, dass dies nicht der Fall ist, und wir dachten darüber nach, Indizes mit 1 primären Shard zu haben - 7 Replikate (damit jeder Index auf 8 Knoten gehostet wird) - aber wir wissen nicht, ob ein solches Setup Sinn macht? Wenn nicht - was würden Sie empfehlen, um Scherben gleichmäßiger zu verteilen?
Hier ist das Ergebnis der Shard Cat-Abfrage:
id1 0 p STARTED 2138 16.1mb x.x.x.x node1
id1 0 r STARTED 2138 16.1mb x.x.x.x node2
id1 0 r STARTED 2138 16.1mb x.x.x.x node3
id1 0 r STARTED 2138 16.1mb x.x.x.x node4
id2 0 r STARTED 3379 26.8mb x.x.x.x node5
id2 0 r STARTED 3379 26.8mb x.x.x.x node3
id2 0 r STARTED 3379 26.8mb x.x.x.x node4
id2 0 p STARTED 3379 26.8mb x.x.x.x node6
id3 0 r STARTED 20086 76.1mb x.x.x.x node1
id3 0 r STARTED 20086 76.1mb x.x.x.x node5
id3 0 p STARTED 20086 76.1mb x.x.x.x node6
id3 0 r STARTED 20086 76.1mb x.x.x.x node7
id4 0 r STARTED 2754 7.3mb x.x.x.x node2
id4 0 r STARTED 2754 7.3mb x.x.x.x node3
id4 0 r STARTED 2754 7.3mb x.x.x.x node8
id4 0 p STARTED 2754 7.3mb x.x.x.x node7
id5 0 r STARTED 10239 42.3mb x.x.x.x node1
id5 0 p STARTED 10239 42.3mb x.x.x.x node4
id5 0 r STARTED 10239 42.3mb x.x.x.x node6
id5 0 r STARTED 10239 42.3mb x.x.x.x node8
id6 0 r STARTED 13388 42.4mb x.x.x.x node1
id6 0 p STARTED 13388 42.4mb x.x.x.x node5
id6 0 r STARTED 13388 42.4mb x.x.x.x node3
id6 0 r STARTED 13388 42.4mb x.x.x.x node8
id7 1 r STARTED 27483 136.2mb x.x.x.x node2
id7 1 r STARTED 27483 136.2mb x.x.x.x node3
id7 1 r STARTED 27483 136.3mb x.x.x.x node8
id7 1 p STARTED 27483 136.2mb x.x.x.x node7
id7 0 r STARTED 27189 146.5mb x.x.x.x node1
id7 0 p STARTED 27189 146.6mb x.x.x.x node5
id7 0 r STARTED 27189 146.6mb x.x.x.x node4
id7 0 r STARTED 27189 146.7mb x.x.x.x node6
.kibana 0 r STARTED 13 106.8kb x.x.x.x node2
.kibana 0 p STARTED 13 106.8kb x.x.x.x node3
id8 1 r STARTED 13555 80.8mb x.x.x.x node2
id8 1 r STARTED 13555 80.8mb x.x.x.x node4
id8 1 r STARTED 13555 80.8mb x.x.x.x node8
id8 1 p STARTED 13555 80.8mb x.x.x.x node7
id8 0 r STARTED 13390 63mb x.x.x.x node1
id8 0 p STARTED 13390 62.7mb x.x.x.x node5
id8 0 r STARTED 13390 62.7mb x.x.x.x node6
id8 0 r STARTED 13390 62.8mb x.x.x.x node7
Das Verteilen aller Shards auf alle ES- Datenknoten für jeden Index ist aus verschiedenen Gründen nicht sinnvoll. Weitere Informationen finden Sie in den Shards und im Replikat von opster .
- Die Anzahl der primären Shards sollte basierend auf ihrer Größe ausgewählt werden und hilft Ihnen, den Index horizontal zu skalieren.
- Die Anzahl der Replikatsplitter hilft Ihnen bei der Hochverfügbarkeit und der Steigerung der Suchleistung.
Es ist wirklich schwierig, das perfekte Shards-Gleichgewicht im ES-Cluster zu erreichen (basierend auf einer Anzahl von Shards, Größe und Verkehr). Obwohl basierend auf Ihrer Shards-Größe, die wirklich klein ist (weniger als 100 MB), können Sie mit 1 Shard und arbeiten 7 Replikate für alle Indizes. Nachdem Sie dies gesagt haben, müssen Sie die richtige Anzahl von Shards und Replikaten basierend auf Ihrem Cluster-Setup und Ihren Anwendungsfällen bewerten und auswählen.