我可能会缺少什么?我无法使用python Cassandra-Driver进行连接,但是在使用CQL模块时我似乎能够正常连接。
cluster = Cluster(
contact_points=['10.x.x.xx',],
port=9160)
session = cluster.connect()
session.set_keyspace("mykeyspace")
输出:
cassandra.cluster.NoHostAvailable :('无法连接到任何服务器',{' 10.0.x.xx':ConnectionShutdown('连接到10.0.x. xx已关闭',)})
另外,如果重要的话,我会从具有单个节点的虚拟机托管cassandra。
答案 0 :(得分:7)
DataStax Python驱动程序(它看起来像你正在使用的)正在使用本机协议,默认情况下使用9042端口。如果您检查配置文件(cassandra.yaml
),请确保您拥有start_native_transport: true
(自1.2以来的默认值)
答案 1 :(得分:0)
使用Cassandra驱动程序的本机协议是完全正确的。请注意,此驱动程序(版本2和现有的所有语言)是使用本机协议的唯一方法 - 截至今天。当您使用CQLSH时,请继续使用端口9160上的旧THRIFT协议。
要使用来自远程计算机的任一端口,请在cassandra.yaml
中将相应的IP从127.0.0.1
(默认)更新为0.0.0.0
。这基本上允许任何机器从远程地址联系THRIFT / NATIVE。这是两个单独的设置,因此您可以只调整其中一个。启用此功能时,请确保使用PasswordAuthenticator锁定Cassandra(默认为无/对所有人开放)!根据VM上的网络类型,远程访问可能不是必需的,例如,对于NAT类型。
默认情况下,我的Red Hat上没有调整防火墙。打开NATIVE端口到远程主机足以使用凭据从任何地方进行连接。