【问题标题】:I'm Unable to connect using python Cassandra-Driver我无法使用 python Cassandra-Driver 进行连接
【发布时间】:2014-05-04 19:37:03
【问题描述】:

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

【问题讨论】:

    标签: python-2.7 cassandra virtual-machine


    【解决方案1】:

    DataStax Python 驱动程序(看起来就像您正在使用的那样)正在使用本机协议,并且默认使用 9042 端口。如果您检查您的 conf 文件 (cassandra.yaml),请确保您拥有 start_native_transport: true(自 1.2 以来的默认值)

    【讨论】:

    • 嗯,我尝试了端口 9042,但现在我正在考虑它,我敢打赌我无法通过防火墙。我更改了 -seed: address 认为这是问题所在,现在我无法让 Cassandra 重新启动。我重新加载了原始的 cassandra.yaml 文件,但仍然没有运气。
    • 哇...幸好我克隆了那个虚拟机。好吧,我又被防火墙难住了。看着我所有的数据打印是一件美好的事情!
    【解决方案2】:

    在 Cassandra 驱动程序中使用本机协议是完全正确的。请注意,这个驱动程序(在版本 2 和现有的所有语言中)是使用本机协议的唯一方法——截至今天。当您使用 CQLSH 时,请继续在端口 9160 上使用旧的 THRIFT 协议。

    要使用来自远程计算机的任一端口,请将 cassandra.yaml 中的相应 IP 从 127.0.0.1(默认)更新为 0.0.0.0。这基本上允许任何机器从远程地址联系 THRIFT/NATIVE。这是两个独立的设置,因此您只能调整其中一个。启用此功能时,请确保使用 PasswordAuthenticator 锁定 Cassandra(默认为无/对任何人开放)!根据您的虚拟机上的网络类型,可能不需要打开远程访问,例如用于 NAT 类型。

    在我的 Red Hat 上,默认情况下不需要调整防火墙。向远程主机打开 NATIVE 端口就足以使用凭据从任何地方进行连接。

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      相关资源
      最近更新 更多