我正在尝试与cqlsh连接,但这给了我以下错误:
Connection error: ('Unable to connect to any servers', {'127.0.0.1':
error(111, "Tried connecting to [('127.0.0.1', 9042)].
Last error: Connection refused")})
我已经在终端上尝试了cqlsh命令:
cqlsh
答案 0 :(得分:0)
之所以这样,是因为您没有提供cqlsh可以连接的IP地址。然后,它假定使用“归属” IP(127.0.0.1),并且我猜测您没有绑定到该地址的正在运行的Cassandra节点。
首先,grep
表示您的节点绑定到的地址:
$ grep "_address:" cassandra.yaml
listen_address: 192.168.1.3
broadcast_address: 10.2.1.30
rpc_address: 192.168.1.3
broadcast_rpc_address: 10.2.1.30
如果您的broadcast_
地址与已定义的监听/ rpc地址不同,则应使用该地址(内部IP与外部IP ...您需要外部IP)。在这种情况下,cqlsh命令将如下所示:
cqlsh 10.2.1.30 -u username -p password
答案 1 :(得分:0)
有几种情况可以回答您的问题: 1)Cassandra没有运行 2)Cassandra没有使用该主机/ IP监听/运行(127.0.0.1) 3)Cassandra没有在9042端口上监听 4)防火墙阻止了该主机/端口
1)检查它是否在运行
ps -ef | grep cassandra (or dse if using dse)
2)检查cassandra.yaml中的native_transport_address以查看用于主机的IP。 0.0.0.0很好(如果您设置了native_transport_broadcast_address)
3)检查cassandra.yaml中的native_transport_port以查看使用的端口
4)Telnet到主机/端口,以确保没有任何障碍
telnet 127.0.0.1 9042
您应该会看到类似于以下内容的输出:
Connected to XXXXXXXX.
Escape character is '^]'.
如果不这样做,并且所有其他检查都通过了,则说明存在某些障碍(防火墙)。
请注意,cassandra.yaml中使用的参数适用于Cassandra 3.11(我相信dse 5.X +)。如果使用的是旧版本,则参数会有所不同。
-吉姆
答案 2 :(得分:0)
我得到了一个解决方案,必须在终端上依次执行两个查询。