2017-02-15 7 views
0

ich eine cassandra clustter mit 3 KnotenCassandra Clustering Failover-Hoch Avialability

Node1(192.168.0.2) , Node2(192.168.0.3), Node3(192.168.0.4) 

https://i.stack.imgur.com/vXqsi.png

Erstellt einen Schlüsselraum 'test' mit der Replikation konfiguriert haben Faktor als 2.

Create KEYSPACE test WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 2}

Wenn ich entweder Node2 oder Node3 (einen nach dem anderen und beide auf einmal) anhalten, kann ich die CRUD-Operationen in der keyplace.table ausführen.

Wenn ich Node1 stoppen und versuchen, eine Reihe von Knoten4 oder Node3 zu aktualisieren/erstellen, folgende Fehler bekommen, obwohl Node3 und Knoten4 und Laufsport- sind:

All host(s) tried for query failed (tried: /192.168.0.4:9042 (com.datastax.driver.core.exceptions.DriverException: Timeout while trying to acquire available connection (you may want to increase the driver number of per-host connections))) com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.0.4:9042 (com.datastax.driver.core.exceptions.DriverException: Timeout while trying to acquire available connection (you may want to increase the driver number of per-host connections)))

Ich bin nicht sicher, wie Cassandra einen Führer wählt wenn ein Leader-Knoten stirbt.

+1

Es gibt kein Konzept von Vorspann in Cassandra ... prüfen, ob Sie Telnet zu Host (192.168.0.4) auf Port 9042 –

+0

können Sie weitere Informationen über die Konsistenz Ebene für Warteschlangen (das hat einen großen Einfluss auf das Verhalten Sie erwarten)?Verwenden Sie einen Treiber oder greifen Sie mit cqlsh zu? –

+0

@undefined_variable .... ja Ich bin Telnet von meinem lokalen Desktop zu allen Knoten auf Port 9042. – UAnand

Antwort

0

Sie verwenden also replication_factor 2, sodass nur 2 Knoten eine Replik Ihres Schlüsselbereichs (nicht alle 3 Knoten) haben.

Sie diese calculator Ihr Setup, um herauszufinden, verwenden können, wenn eine anständige Konsistenz haben. In Ihrem Fall ist das Ergebnis Sie können den Verlust von Knoten ohne Auswirkungen auf die Anwendung überleben

+0

Ich änderte RF: 3 und versuchte es erneut mit angehaltenen Knoten1 und Knoten2, Knoten3 nach oben. Aber es gibt mir immer noch Fehler unter (Konsequenz QUORUM kann nicht erreicht werden). Wie erreicht man das Konsistenzniveau QUORUM? Gibt es einen bestimmten Weg dazu? Alle Host (s) versucht für Abfrage fehlgeschlagen (versucht: /192.168.0.3:9042 (com.datastax.driver.core.exceptions.ServerError: Ein unerwarteter Fehler trat Server-Seite auf/192.168.0.3: 9042: com.google common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.UnavailableException: Konsequenzlevel QUORUM kann nicht erreicht werden – UAnand

+0

Cassandra Version I, die es verwendet, ist 2.1.8 und ich setze auch die Konsistenzstufe auf QUITUM – UAnand

0

Ich denke, ich war nicht klar bei der Antwort. Der Replikationsfaktor gibt an, wie viele Kopien Ihrer Daten vorhanden sind. Die Konsistenzstufe gibt an, wie viele Kopien der Client warten muss, bevor er eine Antwort vom Server erhält. Beispiel: Alle Ihre Knoten sind aktiv. Der Client erstellt einen CQL mit CL Quorum, der Server kopiert die Daten in 2 Knoten (3/2 + 1) und antwortet dem Client, im Hintergrund kopiert er auch die Daten auf dem dritten Knoten.

In Ihrem Beispiel, wenn Sie 2 Knoten eines 3-Knoten-Clusters herunterfahren, erreichen Sie nie ein QUORUM, um Anfragen zu stellen (mit CL QUORUM), also müssen Sie die Konsistenzebene ONE verwenden, sobald die Knoten wieder hoch sind, cassandra wird die Daten auf sie kopieren. Eine Sache kann passieren: Bevor Cassandra die Daten auf anderen 2 Knoten kopiert, stellt der Client eine Anfrage für node1 oder node2, und die Daten sind noch nicht da.

+0

Danke .. das Problem ist gelöst Ich änderte die Konsistenz-Ebene als QUORUM und Replikationsfaktor wie 3 und auch in cassandra.yaml, kommentierte ich das num_token und generierte das initial_token für 3 Knoten.Mit diesen Änderungen, der Cluster Im Cluster von 3 Knoten kann zu einem beliebigen Zeitpunkt nur ein Knoten heruntergefahren werden, und für hohe Verfügbarkeit sollten immer 2 Knoten verfügbar sein. – UAnand

Verwandte Themen