我将rpc_port设置为公共IP地址,现在我可以从外部服务器成功连接到Cassandra。
但是,使用cqlsh在Cassandra服务器本身上无法连接。
我遇到的错误如下:
Connection error: Could not connect to localhost:9160
有没有配置我可以更改,以便我能够从服务器本身连接?
cassandra.yaml
文件中rpc_port :
所在的行,默认情况下应该是= 9160
cassandra
的机器cqlsh 127.0.0.1 9160
命令:无论如何都应该能够成功cqlsh [主机IP] 9160
命令:如果可以成功,则表示cassandra
可以从局域网访问,否则只能从localhost 127.0.0.1
进行访问。/etc/cassandra.yaml
:# Whether to start the thrift rpc server.
start_rpc: false
为了
start_rpc: true
您需要通过在中定义的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)...在启动期间遇到异常(java.lang.IllegalStateException):无法绑定端口9042在x.x.x.x.x上。
java.lang.IllegalStateException:无法在x.x.x.x.x上绑定端口9042。你知道我可能做错了什么吗? - Manu Chadha如果你在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?
<public IP>
,因此它不会在127.0.0.1
上进行侦听。将侦听地址更改为0.0.0.0
以侦听所有地址(如果可能的话,可以省略此步骤,因为这通常是默认设置)。请参见Listening Sockets .NET tutorial或任何其他套接字教程,以了解套接字绑定的基本知识。listen_address
是其他节点用来连接到此节点的地址(这是一个误导性的名称)。rpc_address
是实际要绑定到本地的地址。这个区别在2.0文档中并不清楚,更好的解释可以在1.0文档中找到。rpc_address
而不是listen_address
。 - ivan_pozdeev请考虑更改 /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 restart
使用sudo服务重新启动Cassandra。
使用此命令
sudo service cassandra start
启动Cassandra,然后使用
cqlsh command
start_rpc: false
,将其设置为 true 就解决了问题。 - Custodio