3

全部,

我在 Digital Ocean 中有一个 3 节点集群 cassandra。根据 CQL 中的SHOW VERSION的 cassandra版本如下所示

[cqlsh 5.0.1 | 卡桑德拉 3.0.0 | CQL 规范 3.3.1 | 本机协议 v4]

我能够使用 cqlsh 从另一个节点连接到集群的一个节点并运行命令......但是当我尝试使用 java 驱动程序连接时,我得到以下异常

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /128.xxx.xxx.xx:9042 (com.datastax.driver.core.TransportException: [/128.xxx.xxx.xxx:9042] Connection has been closed))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:222)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:77)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1232)
at com.datastax.driver.core.Cluster.getMetadata(Cluster.java:336)
at com.attinad.cantiz.iot.platform.vehicledatapoc.App.connect(App.java:22)
at com.attinad.cantiz.iot.platform.vehicledatapoc.App.main(App.java:14)

我使用的 java 驱动程序版本是 2.0.10。maven配置如下

<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.0.10</version>
</dependency>

我检查了cassandra.yaml,发现以下设置已经正确设置

start_native_transport: true
native_transport_port: 9042
rpc_address: 128.xxx.xxx.xx
listen_address: 128.xxx.xxx.xx

已正确配置...所以我完全迷失了...任何帮助表示赞赏

4

2 回答 2

5

根据2.0.10 驱动程序文档,该版本的驱动程序与 Apache Cassandra 1.2 和 2.0 兼容。在3.0 驱动程序中添加了与 3.0 的兼容性,目前为 3.0.0-beta1。协议兼容性错误应显示在 Cassandra 服务器日志中。

您可以将 Cassandra 降级到 2.x 版本或试用 beta 驱动程序。如果您现在想在生产中使用该系统,降级 Cassandra 应该是更安全的选择。

于 2015-12-21T14:17:03.443 回答
0

我自己也遇到了这个问题……尝试了 Cassandra 3.0.0 和驱动程序 2.1.9。

通过转到驱动程序 3.0.0 来修复它。

于 2016-04-23T11:54:06.770 回答