我无法使用python Cassandra-Driver连接

时间:2014-04-30 18:37:01

标签: python-2.7 cassandra virtual-machine

我可能会缺少什么?我无法使用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。

2 个答案:

答案 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端口到远程主机足以使用凭据从任何地方进行连接。