Cassandra cqlsh - 连接被拒绝

71

我刚开始使用Cassandra(datastax),版本2.1.3和cqlsh版本5.0.1。

Cassandra可以正常启动,并且集群可以立即运行。

但是cqlsh无法工作(在任何节点上),并且会产生以下错误:

连接错误:(“无法连接到任何服务器”,{'127.0.0.1':error(111, “尝试连接[('127.0.0.1',9042)]。上一个错误:拒绝连接”)})

我已经尝试使用主机自己的IP、其他主机的IP、不同端口启动cqlsh,但结果始终相同-始终是连接被拒绝。


考虑到我自己和这里提供的帮助都无法解决2.1.3版本(尽管它仍在开发中)的问题,我重新配置了服务器,使用了2.0.13版本(稳定版)。Cqlsh仍然会出现localhost:9160错误(尽管已经指定了rpc_address为主机),但是手动指定IP地址启动它cqlsh 1.1.2.2 9160可以正常工作。 - Chros
基于您降级到2.0.13并且它可以工作,我猜测您在 listen_addressrpc_addressbroadcast_rpc_address 之间设置了某种不正确的选项...后者是2.1.x中的新设置。 我想知道 listen_addressrpc_address 设置是什么(不一定要知道值,但要知道它们与使用cqlsh的1.1.2.2 IP的关系)。 如果您再次尝试2.1.x,请将 listen_address 设置为本地IP,将 rpc_address 设置为0.0.0.0,并将 broadcast_rpc_address 设置为外部IP。 - Aaron
在这种设置中,1.1.2.2 是主机 IP(主机只有内部 IP),其值为:listen_address: 1.1.2.2 rpc_address: 0.0.0.0 broadcast_rpc_address: 1.1.2.2。广播地址是必需的(Cassandra 日志)。尝试了大多数组合,但都没有成功。最终不得不在 2.0.13 中删除/注释掉它,因此很可能是 broadcast_rpc_address 导致了问题。不确定我还能给它哪些其他值。难道它不会在其他地方抛出错误吗? - Chros
22个回答

2

对我来说,事实证明这项服务根本没有运行。请检查:

service cassandra status

如果你遇到了和我一样的错误,或者是其他类型的错误,那么折腾IP地址并不能解决你的问题。
我遇到的错误:
cassandra dead but pid file exists

编辑:这是我的问题的解决方案:https://dev59.com/K4jca4cB1Zd3GeqPwWk2#46743119


1

我遇到了这个问题,使用文件中设置。

为了验证,

  • 尝试在一个标签中打开文件
  • 更新
  • 重新启动cassandra

日志文件中显示。

INFO  [main] 2019-03-15 19:53:06,156 Server.java:156 - Starting listening for CQL clients on /10.139.45.34:9042 (unencrypted)...

1
尝试将native_transport_protocol更改为端口9160(如果它设置为除9160之外的任何内容;它可能指向9042)。检查日志并查看Cassandra正在哪个端口侦听CQL客户端?

1
我不知道这会有什么区别,但是需要更正的是native_transport_port而不是native_transport_protocol - Kuldeep Dangi

1

cassandra.yaml 文件中检查正确的 IP 地址。大部分情况下,错误是由于系统 IP 地址不正确,还有用户名和密码也可能有误。

完成后,通过以下命令启动 cqlsh:

cqlsh 10.31.79.1 -u cassandra -p cassandra


0

我试图在网络驱动器上运行它。因此,我增加了cqlsh中的client_timeout,然后它就可以工作了。


0
首先,您需要检查端口9042是否打开,如果打开,则检查以下内容,例如rpc_address和listen_address。 您应该将服务器自己的IP地址设置为0.0.0.0或127.0.0.1。
如果一切正常,请运行以下命令连接cqlsh。
cqlsh IP地址 9042
如果启用了身份验证和授权,则必须在此命令中使用用户名/密码。

0

cqlsh --cqlversion="3.4.0" 已连接到位于 127.0.0.1:9042 的测试集群。 [cqlsh 5.0.1 | Cassandra 3.0.9 | CQL spec 3.4.0 | Native protocol v4]

尝试以上命令。它对我有效。


cqlsh --cqlversion="3.4.0" 连接错误:('无法连接到任何服务器',{'127.0.0.1:9042':error(61,"尝试连接[('127.0.0.1',9042)]。最后一个错误:连接被拒绝") }) - Joe

0

请确保您还将“seeds”设置为您在“listen_address”处提供的地址


0

当客户端无法连接到任何服务器时,还有一种情况未被提及,即在cassandra.yaml文件的client_encryption_options块中启用了客户端到节点加密

在这种情况下,您需要添加--ssl标志以进行连接:

cqlsh --ssl


0

检查CASSANDRA_HOME环境变量指向哪里。我之前设置了一个旧版本的Cassandra。我已经将其重置为我升级的3.11.6安装版本,然后它开始工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接