2014-03-06 8 views
5

Ich habe versucht, die Benutzerauthentifizierung für Cassandra einzurichten, als ich das folgende Problem hatte.Ich versuche, mich in cassandras Konsole (cqlsh) einzuloggen, und es weist mich zurück

Zuerst habe ich die aktualisierte cassandra.yaml mit:

authenticator: PasswordAuthenticator 

dann den system_auth Schlüsselraum mit einem replication_factor von 3 wie geschaffen:

CREATE KEYSPACE system_auth WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3}; 

Dann wieder ran cassandra mit dem Befehl:

bin/cassandra 

Dann nach all dem, fuhr ich fort und sorgte dafür, dass ich zurückgebe ir mein Knoten (n) mit (obwohl ich bin nicht sicher, ob ich verstehen, warum dies wichtig/notwendig):

nodetool repair 

Selbst nach all dieser Schritte tun cassandra/java bei mir schreit mit:

Traceback (most recent call last): 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 2044, in <module> 
    main(*read_options(sys.argv[1:], os.environ)) 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 2030, in main 
    display_float_precision=options.float_precision) 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 480, in __init__ 
    cql_version=cqlver, transport=transport) 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/connection.py", line 143, in connect 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/connection.py", line 59, in __init__ 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/thrifteries.py", line 157, in establish_connection 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/cassandra/Cassandra.py", line 465, in login 
    File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/cassandra/Cassandra.py", line 486, in recv_login 
cql.cassandra.ttypes.AuthenticationException: AuthenticationException(why='org.apache.cassandra.exceptions.UnavailableException: Cannot achieve consistency level QUORUM') 

Ehrlich gesagt bin ich an dieser Stelle nicht sicher, wie es weitergehen soll. Wenn jemand irgendwelche Ideen hat, würde es sehr geschätzt werden.

Ich laufe Cassandra 2.0.5 in einem Ubuntu vm. Nicht sicher, ob das überhaupt hilft.

Auch, wenn ich laufen:

nodetool status 

Die folgende aufkommt:

nodetool status 
Datacenter: datacenter1 
======================= 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address Load Tokens Owns Host ID        Rack 
UN 127.0.0.1 1.57 MB 256  100.0% 37ae1d4c-0df5-43d2-9593-4603ac68c34a rack1 
+1

Wie viele Knoten haben Sie in Ihrem Cluster? – Aaron

+0

Wie finde ich diese Informationen heraus? –

+1

Veröffentlichen Sie die Ausgabe von 'nodetool status'. – Aaron

Antwort

8
'class' : 'SimpleStrategy', 'replication_factor' : 3 

Wie Sie nur ein Knoten im Cluster, einen Replikationsfaktor von 3 Einstellung wäre Ihr Problem. Hier ist ein article that describes replication in Cassandra. Du solltest es dir kurz durchlesen. Ein Teil insbesondere gilt auch hier:

Wenn Replikationsfaktor übersteigt die Anzahl der Knoten, schreibt sind abgelehnt, aber liest serviert werden kann, solange die gewünschte Konsistenz Ebene erfüllt werden.

Cannot achieve consistency level QUORUM 

Cassandra berechnet „Quorum“, wie (replication_factor/2) + 1. Wenn Sie also einen Replikationsfaktor von 3, dann 2 Knoten benötigt für Ihre Konsistenz Ebene ausgeführt werden, erfüllt werden.

Setzen Sie Ihren Replikationsfaktor im Grunde auf 1 zurück, und Sie sollten in Ordnung sein.

+1

Ich bin etwas verwirrt darüber, überall, wo ich lese, muss ich meinen Replikationsfaktor für mehr als 1 beim Ändern von Autorisierungszeugnissen einrichten, warum brauche ich das Gegenteil? Ich bin etwas verwirrt. –

+0

auch, tut mir leid, wenn das für Sie wirklich offensichtlich ist, aber wie geben Sie den Replikationsfaktor in der cassandra.yaml-Datei an? Um das zu ändern, muss der Authenticator auf AllowAllAuthenticator zurückgesetzt und dann in cqlsh geändert werden.Ich denke, von Ihrem Vorschlag ist mein Ansatz ein wenig albern –

+1

Der Grund für die Einstellung der Replikationsfaktor auf etwas anderes als 1, ist, dass, wenn der eine Knoten mit dem system_auth Schlüsselbereich ausgeht, Sie nicht in der Lage sein werden, in Ihre anderen Knoten. – Aaron

Verwandte Themen