如何使用 cqlsh 将 Cassandra 连接到本地主机?

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

我将 rpc_port 设置为公共 IP 地址,现在我可以从外部服务器很好地连接到 Cassandra。

但是,我无法使用 cqlsh 从 Cassandra 服务器本身进行连接

我收到错误。它们是:

 Connection error: Could not connect to localhost:9160

是否有配置,我可以更改为能够从服务器本身进行连接?

cassandra cqlsh
15个回答
21
投票
  1. 默认正常检查
    cassandra.yaml
    线上的文件
    rpc_port :
    = 9160
  2. 登录托管机器
    cassandra
  3. 尝试
    cqlsh 127.0.0.1 9160
    :无论如何应该没问题
  4. 尝试
    cqlsh [IP of host] 9160
    :如果可以,则可以从 lan 访问
    cassandra
    ,如果可以,则无法从
    cassandra
    访问
    lan
    ,但只能从
    localhost 127.0.0.1
  5. 访问

9
投票

您需要通过

rpc_address
中定义的
cassandra.yaml
连接到cassandra。例如,我使用
cqlsh 10.0.80.49 9160


9
投票

考虑改变

/etc/cassandra.yaml

# Whether to start the thrift rpc server.
start_rpc: false

start_rpc: true

8
投票

如果您在 cassandra 日志中看到此内容:

INFO  [main] 2015-07-21 12:06:27,426 CassandraDaemon.java:406 - Not starting RPC server as requested. Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it

然后只需打开一个终端并

$ nodetool enablethrift

如信息消息中所写。现在应该可以工作了。当我的系统升级到 cassandra 2.2.0 时得到这个


5
投票

如果您使用的是 OSX

brew install cassandra

首先启动Cassandra

cassandra

通过 CQL shell 连接

cqlsh 127.0.0.1


4
投票

也许先通过

bin/cassandra -f
在本地计算机上启动 cassandra?


3
投票

它不会在

127.0.0.1
上监听,因为您告诉它只在
<public IP>
上监听。使监听地址
0.0.0.0
监听所有地址(或者如果可能的话忽略它,因为这通常是默认值)。请参阅 Listening Sockets .NET 教程 或任何其他套接字教程,以获得对套接字绑定的基本了解。

更新(@c45556037):

请注意,

listen_address
其他节点 用于连接到该节点的节点(一个误导性的名称)。
rpc_address
是本地绑定的实际地址。 2.0 文档中尚不清楚,1.0 文档中有更好的解释。


1
投票

我在启动 cqlsh 时遇到了同样的情况。启动 cassandra 时出现以下错误

在终端中仅输入 ----cassandra-----。

它将显示所有 jar 和日志文件。如果终端挂起,只需退出它,然后输入 cqlsh。然后就会进入cassandra cli。

这对我有用


0
投票

对于

2.0.5
以下内容对我有用..

   $CASSANDRA_HOME/bin/cqlsh xx.xx.xxx.xxx 9160

0
投票

连接 localhost/9160 时出现异常。原因:连接被拒绝

连接拒绝 cassandra cli 模式。

转到cassandra的根目录:

bin/cassandra -- host {host-ip} --port {9160}

如果您遇到问题,请检查您的 {cassandra-root-directory}/conf/cassandra.yaml

thrift ip 或 rpc_address 是用作连接到 cli 的主机 IP 的地址。 使其成为您的本地 IP,如果您在使用端口 9160 连接时遇到问题,请尝试将 rpc_port 更改为 8070,然后尝试使用以下命令连接到 cassandra-cli 模式

bin/cassandra --host {local-IP} --port 8070

这对我有用,希望对你也有用。


0
投票

请执行以下查询来解决问题

#!/bin/bash
export CASSANDRA_HOME=/opt/apache-cassandra-2.1.8
export CQLSH_HOST=192.168.1.200
export CQLSH_PORT=9042
echo $@
$CASSANDRA_HOME/bin/cqlsh $@'    

确保更改 cassandra 主目录的 IP 和位置


0
投票

使用此命令

sudo service cassandra start

启动 cassandra 然后使用

cqlsh command

0
投票

考虑更改 /etc/cassandra-env.sh:

JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=true"
not "true" but "false"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.ssl=false"

sudo 服务 cassandra 重新启动


0
投票

如何更改 Cassandra 中的默认端口 9042?

我使用以下步骤解决了问题:

1)停止 cassandara 服务

sudo su -
systemctl stop datastax-agent
systemctl stop opscenterd
systemctl stop app-dse

2) 进行备份并将端口从 9042 更改为 9035

cp /opt/dse/resources/cassandra/conf/cassandra.yaml /opt/dse/resources/cassandra/conf/bkp_cassandra.yaml
vi /opt/dse/resources/cassandra/conf/cassandra.yaml

native_transport_port: 9035

3) 启动 Cassandra 服务

systemctl start datastax-agent
systemctl start opscenterd
systemctl start app-dse

4)创建cqlshrc文件。

vi  /root/.cassandra/cqlshrc

[connection]
hostname = 198.168.1.100
port = 9035

0
投票

只要连续运行20-100次就可以了。就像现在任何流行的(sh*ty)库一样......这就是我定期解决它的方法。如果你想在现代从事开发工作,你就必须接受事实。

  1. 经理们正在把节奏推得超现实
  2. 一切都不再稳定了
© www.soinside.com 2019 - 2024. All rights reserved.