无法从 Python 应用程序连接到 DataStax Enterprise 集群

Cannot connect to DataStax Enterprise cluster from Python app

我在连接到 Centos 7.x 服务器托管的 DataStax Cassandra 6.8 时遇到一些困难。

我能够在 Centos 中成功地进行本地连接 Shell 并且 nodetool 状态显示集群正常运行。

我在 cassandra.yaml 文件中尝试过的东西 -

  1. 将 listen_address 参数从 localhost 更改为服务器的 IP 地址。结果 -> DSE 未启动。
  2. 注释了 listen_address 行。结果 -> DSE 未启动
  3. 将listen_address的参数留空。结果 -> DSE 未启动。

如上所述- OS - 美分OS 7 DSE 版本 - 6.8 安装方法 RPM

Python 程序 -

#cluster = Cluster()
cluster = Cluster(['192.168.1.223'])

# To establish connection and begin executing queries, need a session
session = cluster.connect()

row = session.execute("select release_version from system.local;").one()
if row:
    print(row[0])
else:
    print("An error occurred.")

从 python ->

抛出的异常
NoHostAvailable: ('Unable to connect to any servers', {'192.168.1.223:9042': ConnectionRefusedError(10061, "Tried connecting to [('192.168.1.223', 9042)]. Last error: No connection could be made because the target machine actively refused it")})

我的电脑和我的服务器都在同一个网络上,我可以互相 ping 通。

非常感谢任何帮助。

谢谢

https://community.datastax.com/questions/12174/ 上有人问了同样的问题,所以我在这里重新发布我的答案。

此错误表明您正在连接的节点未在 IP 192.168.1.223 和 CQL 端口 9042 上侦听 CQL 连接:

No connection could be made because the target machine actively refused it

2 个最可能的原因是:

  1. DSE 不是 运行
  2. DSE 没有在正确的 IP 上侦听客户端连接

您已经表示您无法启动 DSE。您需要查看默认情况下位于 /var/log/cassandra 中的日志,以了解为什么它不是 运行.

的线索

另一个可能的问题是您没有配置 native_transport_addressrpc_address 在开源 Cassandra 中)。您需要将其设置为客户端(您的应用程序)可以访问的 IP 地址,否则,它将默认为 localhost127.0.0.1)。

cassandra.yaml中,配置节点:

listen_address: private_ip
native_transport_address: public_ip

如果您只是在本地网络上进行测试,请将这两个属性都设置为服务器的 IP 地址。干杯!

[编辑] 我刚刚看到你与@Alex Ott 的对话。我在这里发布我的回复,因为它不适合发表评论。

此启动错误意味着节点无法与任何种子节点通信,因此无法加入集群:

ERROR [DSE main thread] 2021-08-25 06:40:11,413 CassandraDaemon.java:932 - \
  Exception encountered during startup
java.lang.RuntimeException: Unable to gossip with any peers

如果集群中只有1个节点,请将cassandra.yaml中的seeds列表配置为服务器自己的IP地址:

seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "192.168.1.223"