Kann keine Remote-Verbindung zu Cassandra mit dem DataStax Python-Treiber herstellen
Ich habe Probleme mit der Remote-Verbindung zu Cassandra (auf einem EC2-Knoten) (von meinem Laptop aus). Wenn ich den DataStax Python-Treiber für Cassandra verwende:
from cassandra.cluster import Cluster
cluster = Cluster(['10.X.X.X'], port=9042)
cluster.connect()
Ich bekomme
Traceback (most recent call last):
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 3035, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-23-dc85f20fd4f5>", line 1, in <module>
session = cluster.connect()
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/cassandra/cluster.py", line 755, in connect
self.control_connection.connect()
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/cassandra/cluster.py", line 1868, in connect
self._set_new_connection(self._reconnect_internal())
File "/Users/user/virtualenvs/test/lib/python2.7/site-packages/cassandra/cluster.py", line 1903, in _reconnect_internal
raise NoHostAvailable("Unable to connect to any servers", errors)
NoHostAvailable: ('Unable to connect to any servers', {'10.X.X.X': OperationTimedOut('errors=None, last_host=None',)})
Aber Cassandra läuft, weilnodetool status
gibt mir
UN 127.0.0.1 124.18 KB 256 100.0% 4d973e17-ae08-3aa1-81d2-605b92753694 rack1
Cassandra scheint auch auf Port 9042 zu lauschen:
netstat -nltp | grep 9042
tcp6 0 0 0.0.0.0:9042 :::* LISTEN -
Und ich kann von meinem Laptop nach Cassandra telneten:
$ telnet 10.X.X.X 9042
Trying 10.X.X.X...
Connected to ip-10-X-X-X.
Escape character is '^]'.
Relevante Highlights aus meiner cassandra.yaml:
start_native_transport: true
rpc_address: 0.0.0.0
rpc_port: 9160
broadcast_rpc_address: 10.X.X.X
/var/log/cassandra/system.log
zeigt nichts Nützliches.
bearbeite: Ich kann mich auch mit @ mit Cassandra verbindcqlsh 127.0.0.1 9042
auf dem Server undcqlsh 10.X.X.X 9042
von meinem Laptop ohne Probleme.
Lösun
Sieht so aus, als wäre der einzige Ort, an dem ich mein Skript getestet habe (eine Python-Konsole in PyCharm), der einzige Ort, an dem mein Skript nicht funktioniert. Keine Probleme bei der Ausführung als Skript in PyCharm oder im interaktiven Python / iPython-Modus. Ich werde die Frage offen lassen, da sie eine ziemlich vollständige Checkliste für die Fehlerbehebung bei Python-zu-Cassandra-Verbindungen enthält.