Cassandra cqlsh - 连接被拒绝

问题描述 投票:46回答:15

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

Cassandra启动良好,集群即时运行。

Cqlsh无法正常工作(在任何节点上)并发出以下错误:

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

我尝试用主机自己的ip,其他主机ip,不同的端口启动cqlsh但结果仍然相同 - 始终连接被拒绝。

cassandra cqlsh
15个回答
15
投票

尝试将rpc_address更改为指向节点的IP而不是0.0.0.0,并在连接到cqlsh时指定IP,就好像IP是10.0.1.34并且rpc_port保留为默认值9160,那么以下内容应该有效:

cqlsh 10.0.1.34 9160 

要么:

cqlsh 10.0.1.34 

还要确保在/etc/cassandra/cassandra.yaml配置文件中将start_rpc设置为true。


0
投票

我试图在网络驱动器上运行它。所以我在cqlsh中增加了client_timeout并且它有效。


0
投票

确保您还将“种子”设置为您在“listen_address”中提供的地址


0
投票

我遇到了与Cassandra 3.11.0相同的问题,任何时候我改变了rpc的地址或者监听地址cqlsh都行不通。我不得不将相同的本地ip添加到seeds

经过多次反复试验,我的工作cassandra.yaml最终结果如下:

class-name: org.apache.cassandra.locator.SimpleSeedProvider
parameters: 
    -seeds: "192.168.0.30"

listen_adress: 192.168.0.30
rpc_address: 192.168.0.30

0
投票

尝试telnet到给定的地址。就我而言,有一个阻止我的防火墙。


0
投票

当我安装Cassandra 3.11.1时,我遇到了这个问题。我检查了/var/log/cassandra/cassandra.log并发现此错误在启动期间遇到异常....这是一个错误并已报告。原帖子链接https://issues.apache.org/jira/browse/CASSANDRA-14173

解决方案是将Cassandra降级到3.0

  1. 下载Cassandra rpm

卷曲-O https://www.apache.org/dist/cassandra/redhat/30x/cassandra-3.0.15-1.noarch.rpm

要么

wget https://www.apache.org/dist/cassandra/redhat/30x/cassandra-3.0.15-1.noarch.rpm

  1. rpm -ivh cassandra-3.0.15-1.noarch.rpm
  2. 服务cassandra开始
  3. service cassandra status #check cassandra status

cassandra(pid 2322)正在运行......

  1. cqlsh #start cassandra

0
投票

进入这个问题,[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]必须在start_native_transport: true文件中设置cassandra.yaml

为了验证,

  • 尝试在单选项卡中打开tailf /var/log/cassandra/system.log文件
  • 更新cassandra.yaml
  • 重启cassandra sudo service cassandra restart

在日志文件中显示。

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

14
投票

您需要在要连接的节点上编辑cassandra.yaml,并为rpc_addresslisten_address设置节点ip地址,然后重新启动Cassandra。

rpc_address是Cassandra监听客户端调用的地址。

listen_address是Cassandra监听其他Cassandra节点的地址。


4
投票

这是因为cassandra中的一些预配置。为了解决这个问题,cassandra-env.sh文件中有以下注释行:

#add this if you’re having trouble connecting:
#JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>

你必须开始修复错误。

打开终端并使用以下简单步骤开始修复:

步骤1

使用

sudo nano /etc/cassandra/cassandra-env.sh

此命令和搜索JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=通过简单地删除行开头附加的#取消注释该行。

注意:如果您从未打开此文件来修复此错误,那么您将找到JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>

步骤2现在用<public name>替换127.0.0.1

步骤3保存文件并使用systemctl restart cassandra.service重新启动cassandra(如果您没有运行服务器)。或者使用systemctl start cassandra.service启动cassandra(如果服务器未运行)。

步骤4使用sudo service cassandra statussystemctl status cassandra.service检查状态。

注意:检查系统监视器是否cassandra是否在那里运行。

现在试试cqlsh。它会工作的。

注意:nano是编辑器,您可以使用其他您喜欢的编辑器。


4
投票

如果在/ var / log / cassandra中检查cassandra的system.log文件,您将看到出现此问题,因为rpc服务器尚未启动。

默认情况下,cassandra.yaml文件中的start_rpc设置为false。将其设置为start_rpc:true然后再试一次。

至少在Cassandra 3.0中,start_rpc默认设置为true。 https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html


3
投票

最近从Archocinux上的Cassandra 3.0降级到Cassandra 2.2后出现了同样的问题。

与上述解决方案不同,我的问题不在.cassandra中,但3.0版将其配置保留在/ var / lib / cassandra目录中。

以下命令解决了我的问题:

sudo rm -R /var/lib/cassandra
sudo rm -R /var/log/cassandra
sudo rm -R /usr/share/cassandra

然后我安装了cassandra,一切都工作了:)


3
投票

在/etc/cassandra/cassandra.yaml中查找native_transport_port默认值为9842。

native_transport_port: 9842

对于使用cqlsh连接到localhost,此端口适用于我。

cqlsh 127.0.0.1 9842


2
投票

如果服务器正在运行,最好检查cassandra日志。我得到完全相同的消息,无法做任何事情,然后我发现日志中有错误,系统实际上无法正常工作。

傻,我知道,但可能会发生......


1
投票

尝试将native_transport_protocol改为port 9160(如果设置为9160以外的任何东西;它可能指向9042)。检查您的日志,看看cassandra正在侦听CQL客户端的端口?


1
投票

事实证明,该服务根本没有运行。检查

service cassandra status

如果你得到了与我相同的错误或其他类型的错误,那么搞乱IP地址根本无法解决你的问题。

我得到的错误:

cassandra dead but pid file exists

编辑:这是我的问题的解决方案:https://stackoverflow.com/a/46743119/3881406

© www.soinside.com 2019 - 2024. All rights reserved.