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



我在连接Centos 7时有一些困难。

我能够成功地在Centos Shell内部本地连接,并且nodeool状态显示集群Up和Normal。

我在卡桑德拉试过的东西。Yaml文件-

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

如上所述操作系统- CentOS 7DSE版本- 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/上被问到,所以我在这里重新发布我的答案。

此错误指示您正在连接的节点没有侦听IP192.168.1.223和CQL端口9042上的CQL连接:

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

两个最可能的原因是:

  1. DSE未运行
  2. DSE未监听正确IP上的客户端连接

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

另一个可能的问题是你没有配置native_transport_address(rpc_address在开源Cassandra)。你需要将其设置为客户端(你的应用程序)可访问的IP地址,否则,它将默认为localhost(127.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"

相关内容

  • 没有找到相关文章

最新更新