2017-06-07 13 views
8

Próbowałem zarówno z pycassa, cassandra.cluster i dse.cluster bez wykonywania połączenia.Podłączanie python do kassandra klaster z okien z DseAuthenticator i DseAuthorizer

Czuję, że łączę się z niewłaściwym hostem, ponieważ piszę nazwę hosta serwerów linuksowych i nie precyzuję niczego w odniesieniu do kassandra.

Koledzy powiedzieli mi, że wiedzą tylko o łączeniu się z serwerem poprzez cqlsh bezpośrednio na komputerze z systemem Linux. To brzmi nieprzyjemnie.

Konkretne konfiguracje w cassandra.yaml

authenticator: com.datastax.bdp.cassandra.auth.DseAuthenticator 
authorizer: com.datastax.bdp.cassandra.auth.DseAuthorizer 

co robię w pycassa: wiadomość

import pycassa 
URIPORTLIST = ['12345.mycompany.net:9420'] 
pool = pycassa.ConnectionPool('my_keyspace', server_list=URIPORTLIST,credentials={'USERNAME':'fancycar','PASSWORD':'becauseimbatman'}, prefill=False) 
cf = pycassa.ColumnFamily(pool, 'my_table') 

Błąd:

AllServersUnavailable: An attempt was made to connect to each of the servers twice, but none of the attempts succeeded. The last failure was TTransportException: Could not connect to 12345.mycompany.net:9420 

Z dse.cluster

from dse.cluster import Cluster 
auth_provider = PlainTextAuthProvider(
     username='fancycar', password='becauseimbatman') 
cluster = Cluster(
    ['12345.mycompany.net'], 
    port=9042,auth_provider=auth_provider) 
session = cluster.connect('my_keyspace') 
wiadomość

Błąd:

NoHostAvailable: ('Unable to connect to any servers', {'11.111.11.1': AuthenticationFailed('Failed to authenticate to 11.111.11.2: Error from server: code=0100 [Bad credentials] message="Failed to login. Please re-try."',)}) 
+1

spróbuj podłączyć do Cassandry używając tego samego hosta i poświadczeń z cqlsh aby sprawdzić, czy działa ... 'cqlsh 12345.mycompany.net -u fancycar -p becauseimbatman' –

+0

@undefined_variable Dzięki za sugestię. Daje mi to błąd: '[[email protected] SYST: ~] # cqlsh 12345.mycompany.net -u fancycar -p boimbatman' 'Błąd połączenia: (" Nie można połączyć się z żadnym serwerem " , {'11 .111.11.11 ': error (None, "Próbowano połączyć z [('11 .111.11.11', 9042)]. Ostatni błąd: przekroczono limit czasu")}) ' Podczas logowania się" jak zwykle "działa: '[[email protected] SYST: ~] # cqlsh -u fancycar -p becauseimbatman' ' Połączono z 12345_cluster na 12345.firma.com:9042. [cqlsh 5.0.1 | Cassandra 3.0.11.1485 | DSE 5.0.5 | Specyfikacja CQL 3.4.0 | Natywny protokół v4] ' – MadsVJ

+1

twoje drugie polecenie łączy się z localhostem podczas pierwszego połączenia ze zdalnym serwerem .. czy 12345.mycompany.net rozpoznaje ten sam host co localhost? –

Odpowiedz

2

Poprawiono za pomocą PlainTextAuthProvider dse.auth zamiast Cassandra jeden ..

from dse.cluster import Cluster 
# pip install dse-driver 
from dse.auth import PlainTextAuthProvider 
auth_provider = PlainTextAuthProvider(
     username='fancycar', password='becauseimbatman ') 
cluster = Cluster(contact_points=['12345.mycompany.net'], 
port=9042, auth_provider=auth_provider) 
session = cluster.connect('batcave') 
print "connected" 
print session.execute("SELECT * FROM robinstears")[0]