Widersteht der write_consistency- und quorum-Regel von Elasticsearch

8

Gemäß der elasticsearch-Dokumentation lautet die Regel für das quorum der write_consistency-Ebene:

Quorum (& gt; Replikate / 2 + 1)

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

Wenn 2 Knoten ausgeführt werden, haben wir 16 (primäre) + 16 (Replikate) = 32 aktive Shards.

Damit die Quorumregel erfüllt wird, muss das Quorum & gt; 48/2 + 1 = 25 aktive Shards.

Nun, das Testen beweist, dass die write_consistency level nicht erreicht wird (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 Zahlen?

    
runarM 20.06.2013, 11:48
quelle

1 Antwort

5

Die primäre Anzahl der Splitter spielt keine Rolle, deshalb werde ich sie durch N ersetzen.

Wenn Sie einen Index mit N Shards und 2 Replikaten haben, gibt es drei Shards 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), sodass ein Quorum drei ist.

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

Einige Anmerkungen:

  • 0.19 ist wirklich alt, Sie sollten definitiv, absolut, positiv aufwerten. Ich kann nicht einmal zählen, wie viele Bugfixes und Leistungsverbesserungen seit dieser Version hinzugefügt wurden:)

  • Schreibkonsistenz ist lediglich 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 zum Indexieren ist nur ein Nebeneffekt der Schreibkonsistenz, aber es weist auf ein größeres Problem mit Ihrer Einrichtung hin:)

Zach 23.01.2014, 02:41
quelle

Tags und Links