【发布时间】:2014-07-21 12:04:37
【问题描述】:
我将 rpc_port 设置为公共 IP 地址,现在我可以从外部服务器很好地连接到 Cassandra。
但是,我无法使用 cqlsh 从 Cassandra 服务器本身进行连接
我收到一个错误。Thar are:
Connection error: Could not connect to localhost:9160
是否有配置,我可以更改为能够从服务器本身连接?
【问题讨论】:
我将 rpc_port 设置为公共 IP 地址,现在我可以从外部服务器很好地连接到 Cassandra。
但是,我无法使用 cqlsh 从 Cassandra 服务器本身进行连接
我收到一个错误。Thar are:
Connection error: Could not connect to localhost:9160
是否有配置,我可以更改为能够从服务器本身连接?
【问题讨论】:
cassandra.yaml文件在rpc_port :行正常默认= 9160
cassandra
cqlsh 127.0.0.1 9160:无论如何都应该没问题cqlsh [IP of host] 9160:如果可以,则cassandra可以从局域网访问,如果可以,则cassandra不能从lan访问,但只能localhost 127.0.0.1
【讨论】:
start_rpc: false,将其设置为 true 可以解决问题。
您需要通过cassandra.yaml 中定义的rpc_address 连接到cassandra。例如,我使用cqlsh 10.0.80.49 9160。
【讨论】:
cassandra 并想使用外部 IP。我在rpc_address 中指定了外部地址,但在尝试启动cassandra-INFO [main] 2019-12-17 19:00:37,251 Server.java:159 - Starting listening for CQL clients on /xx.xx.xxx.xx:9042 (unencrypted)... Exception (java.lang.IllegalStateException) encountered during startup: Failed to bind port 9042 on xx.xx.x.xx. java.lang.IllegalStateException: Failed to bind port 9042 on x.x.x.x.x. 时出错。你知道我做错了什么吗?
考虑更改/etc/cassandra.yaml:
# Whether to start the thrift rpc server.
start_rpc: false
到
start_rpc: true
【讨论】:
如果您在 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
如 INFO 消息中所述。现在应该可以工作了。当我的系统升级到 cassandra 2.2.0 时得到这个
【讨论】:
也许先通过bin/cassandra -f 在您的本地计算机上启动 cassandra?
【讨论】:
它没有在 127.0.0.1 上收听,因为您告诉它只在 <public IP> 上收听。设置监听地址0.0.0.0 来监听所有地址(或者如果可能的话就省略它,因为这通常是默认值)。请参阅Listening Sockets .NET tutorial 或任何其他套接字教程以基本了解套接字绑定。
更新(@c45556037):
请注意,listen_address 是其他节点用来连接到这个节点的节点(一个误导性的名称)。 rpc_address 是本地绑定的实际地址。 2.0 docs 不清楚,1.0 docs 解释得更好。
【讨论】:
rpc_address 而不是listen_address。
我在启动 cqlsh 时遇到了同样的情况。启动 cassandra 时出现以下错误
在终端中只输入----cassandra-----。
它将显示所有 jars 和日志文件。如果终端挂起,只需退出它,然后输入 cqlsh。然后它将进入cassandra cli。
这对我有用
【讨论】:
对于2.0.5,以下对我有用..
$CASSANDRA_HOME/bin/cqlsh xx.xx.xxx.xxx 9160
【讨论】:
连接到 localhost/9160 时出现异常。原因:连接被拒绝
连接拒绝 cassandra cli 模式。
进入cassandra的根目录:
bin/cassandra -- host {host-ip} --port {9160}
如果您遇到问题,请检查您的 {cassandra-root-directory}/conf/cassandra.yaml
thrift ip 或 rpc_address 是用作连接到 cli 的 host-ip 的地址。 将其设为本地 IP,如果使用端口 9160 连接时遇到问题,请尝试将 rpc_port 更改为 8070,现在尝试使用命令连接到 cassandra-cli 模式
bin/cassandra --host {local-IP} --port 8070
这对我有用,希望它也对你有用。
【讨论】:
请执行以下查询以解决问题
#!/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 Home Directory 的 IP 和位置
【讨论】:
使用这个命令
sudo service cassandra start
启动cassandra然后使用
cqlsh command
【讨论】:
考虑更改 /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 service cassandra 重启
【讨论】:
如何在 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
【讨论】: