2013-06-20 5 views
8

Nach der Elasticsearch Dokumentation, ist die Regel für write_consistency Ebene Quorum:undestanding die write_consistency und Quorum Regel Elasticsearch

Quorum (> Repliken/2 + 1)

ES Mit 0.19.10, auf einem Setup mit 16 Scherben/3 Repliken werden wir 16 primären Shards 48 Repliken

Lauf 2 Knoten erhalten, werden wir 16 (primär) + 16 (Repliken) = 32 aktive Scherben haben.

Damit die Quorumregel erfüllt wird, ist das Quorum> 48/2 + 1 = 25 aktive Shards.

Nun testet das Gegenteil, write_consistency level ist nicht erfüllt (Schreiboperationen sind abgelaufen), bis wir 3 Knoten laufen haben. Diese Art von Sinn macht Sinn, da wir in diesem Setup ein Split-Brain zwischen Gruppen von jeweils 2 Knoten bekommen können, aber ich verstehe nicht ganz, wie diese Regel funktionieren soll. Benutze ich hier die falschen Nummern?

+0

Es fühlt sich an, als ob Sie Schreibkonsistenz für alle haben. Überprüfen Sie, ob Ihre Schreibvorgänge "Konsistenz" haben: Alle – chaos

+0

^Ich meinte auf jeder einzelnen Indexanforderung. – chaos

Antwort

5

primären Shard-Anzahl tatsächlich spielt keine Rolle, also werde ich es ersetzen mit N.

Wenn Sie einen Index mit N Scherben und 2 Repliken haben, gibt es drei Scherben in der Replikationsgruppe. Dies bedeutet, dass das Quorum zwei ist: das primäre und eines der Replikate. Sie benötigen zwei aktive Shards, was normalerweise zwei aktive Maschinen bedeutet, um den Schreibkonsistenzparameter

zu erfüllen. Ein Index mit N Shards und 3 Replikaten hat vier Shards in der Replikationsgruppe (primäre + 3 Replikate), also ein Quorum von drei .

Ein Index mit N Shards und 1 Replik ist ein Sonderfall, da Sie nicht wirklich ein Quorum mit nur zwei Shards haben können. Mit nur einer Replik benötigt Elasticsearch nur einen einzigen aktiven Shard (z. B. den primären), so dass die quorum Einstellung mit der one Einstellung für diese bestimmte Anordnung identisch ist.

Ein paar Anmerkungen:

  • 0,19 ist wirklich alt, sollten Sie auf jeden Fall, absolut, Upgrade-positiv. Ich kann nicht einmal zählen, wie viele Bugfixes und Leistungsverbesserungen seit dieser Veröffentlichung hinzugefügt wurden :)

  • Schreibkonsistenz ist nur eine Gateway-Prüfung. Vor dem Ausführen der Indizierungsanforderung führt der Knoten eine Zufallsauswahl durch, um festzustellen, ob write_consistency erfüllt ist. Wenn dies der Fall ist, versucht es, den Index auszuführen und die Replikation zu schieben. Das garantiert nicht, dass die Replikate erfolgreich sein werden ... sie könnten leicht ausfallen und Sie werden es in der Antwort sehen. Es ist einfach ein Mechanismus, um den Indizierungsprozess anzuhalten, wenn die Konsistenzeinstellung nicht erfüllt ist.

  • Ein "vollständig repliziertes" Setup mit zwei Knoten ist 1 primärer Shard + 1 Replikat. Jeder Knoten hat einen vollständigen Satz von Daten. Es gibt keinen Grund mehr Replikate zu haben, da ES es ablehnt, die Kopien derselben Daten auf derselben Maschine zu speichern (macht keinen Sinn, hilft HA nicht). Die Unfähigkeit zu indizieren ist nur ein Nebeneffekt der Schreibkonsistenz, aber es weist auf ein größeres Problem mit Ihrem Setup hin :)