Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?


Michał Przybylak

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
Elasticsearch Ninja

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 .

  1. Die Anzahl der primären Shards sollte basierend auf ihrer Größe ausgewählt werden und hilft Ihnen, den Index horizontal zu skalieren.
  2. 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.

Verwandte Artikel